prewikka-5.2.0/0000755000000000000000000000000013726165110013273 5ustar rootroot00000000000000prewikka-5.2.0/conf/0000755000000000000000000000000013726165110014220 5ustar rootroot00000000000000prewikka-5.2.0/conf/plugins/0000755000000000000000000000000013726165110015701 5ustar rootroot00000000000000prewikka-5.2.0/conf/plugins/auth.conf0000644000000000000000000000247713726165107017531 0ustar rootroot00000000000000# ========================= Prelude SIEM Configuration ========================= # # This file is a part of the Prelude SIEM configuration files. # Purpose: Tune the authentication process. # # -------------------------- Standard authentication --------------------------- # # Use the standard login/password authentication with a session expiration time: # [session loginform] expiration: 60 footer: Prelude SIEM $version # # --------------------------- Disable authentication --------------------------- # # Disable Prewikka authentication: # #[session anonymous] # # ------------------------------- Users database ------------------------------- # # Retrieve Prewikka Users through database. # If there is no user with administrative rights defined in the database, # the initial user will be created according to these settings: # [auth dbauth] initial_admin_user: admin initial_admin_pass: admin # # List of supported hashing algorithms for passwords, separated by spaces. # The first one available on the system will be used. # See http://passlib.readthedocs.io/en/stable/lib/passlib.hash.html password_schemes: sha256_crypt # # List of deprecated hashing algorithms for passwords, separated by spaces. # Passwords hashed using one of these algorithms will be rehashed # when the user next logs in. deprecated_password_schemes: hex_md5 prewikka-5.2.0/conf/plugins/external_app.conf0000644000000000000000000000166013726165107021243 0ustar rootroot00000000000000# ========================= Prelude SIEM Configuration ========================= # # This file is a part of the Prelude SIEM configuration files. # Purpose: Add your external applications and their configurations. # # ---------------------------- External applications --------------------------- # # Add external applications displayed into an iframe: # - section: text displayed in the menu and to use in menu.yml # - base_url: initial URL of the external application # - tab: view's tabs, each view can have one or more tab # - tab_url: URL for each tab, can be absolute or relative (to the base_url) # - permission: existing or custom access permission (optional) # - help: absolute URL pointing to a help page about the application (optional) # #[appli app1] #section: Application1 #base_url: http://app1 #tab: tab1, tab2 #tab_url: /tab1, /tab2 #permission: CUSTOM_PERMISSION #help: http://app1/help.html prewikka-5.2.0/conf/plugins/logs.conf0000644000000000000000000000234113726165107017522 0ustar rootroot00000000000000# ========================= Prelude SIEM Configuration ========================= # # This file is a part of the Prelude SIEM configuration files. # Purpose: Tune the way of retrieving the logs data from an Elasticsearch # instance. # # ------------------------------------ Logs ------------------------------------ # # The section below defines a mapping between the fields recognized by Prelude # and the fields defined in the logs index(es) of the Elasticsearch cluster. # # Fields must only use alphanumeric chars, "_" or "-" and must not start with "-". # # The first value is the field used during regular searches. # The second value is the field used for aggregation. # If omitted, it defaults to the first value. # #[elasticsearch log] #es_url: http://:9200/ #es_user: #es_pass: #es_type: log # # Time format expected by Elasticsearch (default is to use ISO formatting) # Special "@" value that formats the dates/times into UNIX timestamps #es_timeformat: %Y-%m-%d %H:%M:%S # # Default field to use when typing in the search bar #default_field: message # # Fields: #program: syslog_program, syslog_program.raw #host: syslog_hostname, syslog_hostname.raw #message: syslog_message #timestamp: @timestamp prewikka-5.2.0/conf/plugins/riskoverview.conf0000644000000000000000000000071313726165107021316 0ustar rootroot00000000000000# ========================= Prelude SIEM Configuration ========================= # # This file is a part of the Prelude SIEM configuration files. # Purpose: Configure the risk overview. # # -------------------------------- Risk Overview ------------------------------- # # Reordering entries will affect the display order of the widgets in the GUI. # Commenting an entry will disable the display of the widget. # # [riskoverview] # agents # archive # alerts prewikka-5.2.0/conf/menu.yml0000644000000000000000000000300713726165107015715 0ustar rootroot00000000000000# Specify the section order in the upper menu # All the icons available are here (v4.5): # http://fontawesome.io/icons/ - name: ALERT icon: exclamation-triangle categories: - sections: - name: Alerts default_tab: Alerts expand: true tabs: - Alerts - Aggregated alerts - name: ANALYSE icon: bar-chart categories: - sections: - name: Statistics tabs: - Alerts - name: ARCHIVE icon: database categories: - sections: - name: Logs expand: true tabs: - Logs - Aggregated logs - name: ADMIN icon: sliders categories: - sections: - name: Access control expand: true tabs: - Users - Groups - name: Configuration expand: true tabs: - Scheduling - name: Preferences expand: true tabs: - My account - Filters - name: Monitoring expand: true tabs: - Agents - Heartbeats - Aggregated heartbeats - icon: question default: true categories: - sections: - name: Apps tabs: - Apps - name: Help tabs: - IDMEF prewikka-5.2.0/conf/prewikka.conf0000644000000000000000000001166513726165107016723 0ustar rootroot00000000000000########################## # Prewikka configuration ########################## [general] # Location of the help server #help_location: http://doc.prelude/rst/${lang}/${path} # Number of heartbeats to analyze in the heartbeat analysis view. #heartbeat_count: 30 # If the offset between two heartbeats is off by more than the specified # offset (in seconds), the analyzer will be represented as offline. #heartbeat_error_margin: 3 # Open external (references, IP lookup, and port lookup) links # in a new windows. external_link_new_window: yes # Enables details links (default: no) enable_details: no # Enable error traceback (default: yes) enable_error_traceback: yes # URL to get details about an host host_details_url: http://www.prelude-siem.com/host_details.php # URL to get details about a port port_details_url: http://www.prelude-siem.com/port_details.php # URL to get details about a classification reference reference_details_url: http://www.prelude-siem.com/reference_details.php # When the number of classifications, sources or targets exceeds # the defined value, an expansion link will be provided to look up # the remaining entries. # # max_aggregated_source: 3 # max_aggregated_target: 3 # max_aggregated_classification: 10 # Asynchronous DNS resolution (require twisted.names and twisted.internet) # # While rendering view containing address scheduled for asynchronous # DNS resolution, it is possible that the rendering terminate too fast # for all DNS requests to complete. # # The dns_max_delay setting determine Prewikka behavior: # - [-1] No DNS resolution is performed. # - [0] Do not wait, immediatly send results to the client. # - [x] Wait at most x seconds, then send results to the client. # # dns_max_delay: 0 # Default locale to use (default is English) # The supported locales are: de_DE, en_GB, es_ES, fr_FR, it_IT, pl_PL, pt_BR, ru_RU # # default_locale: en_GB # Default theme to use (default is cs) # The supported themes are: blue, bright, classic, cs, dark, green, yellow # # default_theme: cs # Default timezone to use (default is the local timezone) # The supported timezones follow the IANA naming convention, # for instance: UTC, Africa/Abidjan, Europe/Zurich... # # default_timezone: UTC # Default encoding to use (default is UTF8): # encoding: utf8 # Public path to Prewikka in case the application is being served # through a reverse proxy, including any necessary port information. # reverse_path: http://example.com/proxied/prewikka/ [interface] # Software name displayed in the top left corner (displays logo if not defined) # software: Prelude # Webpage title # browser_title: Prelude # Path to the file defining the menu entries order: # menu_order: menu.yml ############################ # Customizable search pages ############################ # Define additional fields to be displayed in search pages # [datasearch alert] # extra_fields: alert.source.user.user_id.name, alert.target.user.user_id.name # [datasearch heartbeat] # extra_fields: heartbeat.messageid ##################### # Customizable links ##################### # Define custom links and paths for which these links may be displayed # [url host] # paths: alert.source.node.address.address, alert.target.node.address.address # label: http://url?host=$value # [url classification] # paths: alert.classification.text # label: http://url?classification=$value # [url time] # paths: alert.create_time # label: http://url?time=$value ############ # Databases ############ # Events DB [idmef_database] # type: pgsql | mysql | sqlite3 # For sqlite, add # file: /path/to/your/sqlite_database # type: pgsql host: localhost user: prelude pass: prelude name: prelude # Prewikka DB [database] type: pgsql host: localhost user: prelude pass: prelude name: prewikka ########## # Logging ########## # - You can activate several log section. # - Log level might be set to all/debug, info, warning, error, critical. # If unspecified, the default level is "warning". # [log stderr] # level: info # [log file] # level: debug # file: /tmp/prewikka.log [log syslog] level: info # [log nteventlog] # level: info # [log smtp] # level: warning # host: mail.domain.com # from: user@address # to: recipient1@address, recipient2@address, recipientN@address # subject: Subject to use ############ # Cron jobs ############ # Define parameters for different cron jobs. # Cron jobs must be enabled from the GUI to be executed. # Periodic alert deletion # [cron alert] # # Minimal age in days for alerts to be deleted (default is not to delete alerts) # age: 30 # # It is also possible to define this value per severity (default is to use the age above): # high: 365 # medium: 90 # low: 30 # info: 7 # Periodic heartbeat deletion # [cron heartbeat] # # Minimal age in days for heartbeats to be deleted (default is not to delete heartbeats) # age: 7 # Periodic search history entries deletion # [cron search_history] # # Maximal number of entries per user to be kept (default is 10) # size: 10 [include] conf.d/*.conf prewikka-5.2.0/prewikka/0000755000000000000000000000000013726165110015110 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/auth/0000755000000000000000000000000013726165110016051 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/auth/dbauth/0000755000000000000000000000000013726165110017320 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/auth/dbauth/sql/0000755000000000000000000000000013726165110020117 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/auth/dbauth/sql/__init__.py0000644000000000000000000000000013726165107022224 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/auth/dbauth/sql/install.py0000644000000000000000000000124413726165107022146 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from prewikka.database import SQLScript from prewikka import version class SQLUpdate(SQLScript): type = "install" branch = version.__branch__ version = "0" def run(self): self.query(""" DROP TABLE IF EXISTS Prewikka_User_Group; CREATE TABLE Prewikka_User_Group ( groupid VARCHAR(32) NOT NULL, userid VARCHAR(32) NOT NULL, PRIMARY KEY (groupid, userid), FOREIGN KEY (groupid) REFERENCES Prewikka_Group(groupid) ON DELETE CASCADE, FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; """) prewikka-5.2.0/prewikka/auth/dbauth/__init__.py0000644000000000000000000001671613726165107021452 0ustar rootroot00000000000000# Copyright (C) 2004-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from passlib.context import CryptContext from prewikka import auth, database, error, usergroup, version class DBAuth(auth.Auth, database.DatabaseHelper): plugin_name = "Local authentication" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Authentication management with local user / group database") plugin_database_branch = version.__branch__ plugin_database_version = "0" def __init__(self, config): auth.Auth.__init__(self, config) database.DatabaseHelper.__init__(self) def init(self, config): adminuser = usergroup.User(config.get("initial_admin_user", usergroup.ADMIN_LOGIN)) adminpass = config.get("initial_admin_pass", usergroup.ADMIN_LOGIN) deprecated_schemes = config.get("deprecated_password_schemes", "").split() schemes = config.get("password_schemes", "sha256_crypt").split() + deprecated_schemes try: self._context = CryptContext(schemes=schemes, deprecated=deprecated_schemes) except (KeyError, ValueError) as e: raise error.PrewikkaUserError(N_("DBAuth initialization error"), e) # If there are no accessible users other than ADMIN_LOGIN # with administrative rights, we grant all permissions to ADMIN_LOGIN. has_user_manager = any("USER_MANAGEMENT" in user.permissions and user != adminuser for user in self.get_user_list()) if not has_user_manager: if not self.has_user(adminuser): adminuser.create() if not adminuser.has_property("password"): self.set_password(adminuser, adminpass) self.set_user_permissions(adminuser, usergroup.ALL_PERMISSIONS) def _verify(self, password, hashed): try: return self._context.verify_and_update(password, hashed) except (TypeError, ValueError): return False, None def can_create_user(self): return True def can_create_group(self): return True def can_delete_user(self): return True def can_delete_group(self): return True def get_user_list(self, search=None): query = "SELECT name, userid FROM Prewikka_User" if search: query += " WHERE name LIKE %s" % self.escape("%%%s%%" % search) return [usergroup.User(*r) for r in self.query(query)] def get_group_list(self, search=None): query = "SELECT name, groupid FROM Prewikka_Group" if search: query += " WHERE name LIKE %s" % self.escape("%%%s%%" % search) return [usergroup.Group(*r) for r in self.query(query)] def has_user(self, user): return self.get_user_by_id(user.id) def has_group(self, grp): return self.get_group_by_id(grp.id) def get_user_permissions(self, user, ignore_group=False): uid = self.escape(user.id) qstr = "" if not ignore_group: qstr = " UNION \ SELECT pgp.permission FROM Prewikka_User_Group pug \ JOIN Prewikka_Group_Permission pgp USING (groupid) \ WHERE pug.userid = %s" % (uid) return set(r[0] for r in self.query("SELECT pp.permission FROM Prewikka_User_Permission pp where pp.userid = %s%s" % (uid, qstr))) def get_group_permissions(self, group): return set(r[0] for r in self.query("SELECT permission FROM Prewikka_Group_Permission WHERE groupid = %s", group.id)) def _set_permissions(self, table, field, obj, permissions): permissions = set(permissions) self.upsert(table, (field, "permission"), ((obj.id, perm) for perm in permissions), merge={field: obj.id}) def set_user_permissions(self, user, permissions): self._set_permissions("Prewikka_User_Permission", "userid", user, permissions) def set_group_permissions(self, group, permissions): self._set_permissions("Prewikka_Group_Permission", "groupid", group, permissions) # Group specific def set_group_members(self, group, users): rows = ((group.id, user.id) for user in users) self.upsert("Prewikka_User_Group", ("groupid", "userid"), rows, merge={"groupid": group.id}) def get_group_members(self, group): return [usergroup.User(*r) for r in self.query("SELECT PU.name, PUG.userid FROM Prewikka_User_Group PUG " "JOIN Prewikka_User PU USING (userid) WHERE groupid = %s", group.id)] def set_member_of(self, user, groups): rows = ((group.id, user.id) for group in set(groups)) self.upsert("Prewikka_User_Group", ("groupid", "userid"), rows, merge={"userid": user.id}) def get_member_of(self, user): return [usergroup.Group(*r) for r in self.query("SELECT PG.name, PUG.groupid FROM Prewikka_User_Group PUG " "JOIN Prewikka_Group PG USING (groupid) WHERE userid = %s", user.id)] def is_member_of(self, group, user): return bool(self.query("SELECT groupid from Prewikka_User_Group where groupid = %s and userid = %s", group.id, user.id)) def get_user_permissions_from_groups(self, user): return set(r[0] for r in self.query("SELECT pgp.permission FROM Prewikka_User_Group pug \ JOIN Prewikka_Group_Permission pgp USING (groupid) \ WHERE pug.userid = %s ", user.id)) def authenticate(self, login, password="", no_password_check=False): if login is None: raise auth.AuthError(env.session, _("No login name provided")) user = usergroup.User(login) if not self.has_user(user): raise auth.AuthError(env.session, log_user=login) if not no_password_check: try: real_password = user.get_property_fail("password") except: raise auth.AuthError(env.session, log_user=user) valid, new_hash = self._verify(password, real_password) if not valid: raise auth.AuthError(env.session, log_user=user) if new_hash: # Make sure the password uses the proper hashing algorithm user.set_property("password", new_hash) user.sync_properties() return user def set_password(self, user, password): user.set_property("password", self._context.hash(password)) user.sync_properties() def get_default_session(self): return "loginform" prewikka-5.2.0/prewikka/auth/__init__.py0000644000000000000000000000022313726165107020165 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from .auth import Auth, AuthError # noqa: imported but unused prewikka-5.2.0/prewikka/auth/auth.py0000644000000000000000000001177213726165107017402 0ustar rootroot00000000000000# Copyright (C) 2004-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # Author: Antoine Luong # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import abc from prewikka import database, log, pluginmanager, usergroup from prewikka.error import NotImplementedError, PrewikkaUserError class AuthError(PrewikkaUserError): def __init__(self, session, message=N_("Authentication failed"), log_priority=log.ERROR, log_user=None): PrewikkaUserError.__init__(self, None, message, log_priority=log_priority, log_user=log_user, template=session.template) class _AuthUser(database.DatabaseHelper): def can_create_user(self): return False def can_delete_user(self): return False def can_set_password(self): return self.__class__.set_password != _AuthUser.set_password def can_manage_permissions(self): return self.__class__.set_user_permissions != _AuthUser.set_user_permissions def create_user(self, user): self.query("INSERT INTO Prewikka_User (name, userid) VALUES (%s, %s)", user.name, user.id) env.log.info("Created user \"%s\"" % user) def delete_user(self, user): name = user.name self.query("DELETE FROM Prewikka_User WHERE userid = %s", user.id) env.log.info("Deleted user \"%s\"" % name) @abc.abstractmethod def get_user_list(self, search=None): return [] def get_user_by_id(self, id_): ret = self.query("SELECT name, userid FROM Prewikka_User WHERE userid = %s", id_) return usergroup.User(*ret[0]) if ret else None @abc.abstractmethod def has_user(self, user): raise NotImplementedError @abc.abstractmethod def get_user_permissions(self, user, ignore_group=False): return [] @abc.abstractmethod def get_user_permissions_from_groups(self, user): return [] @abc.abstractmethod def set_user_permissions(self, user, permissions): raise NotImplementedError @abc.abstractmethod def set_password(self, user, password): raise NotImplementedError class _AuthGroup(object): def can_handle_groups(self): return self.__class__.get_group_by_id != _AuthGroup.get_group_by_id def can_create_group(self): return False def can_delete_group(self): return False def can_manage_group_members(self): return self.__class__.set_group_members != _AuthGroup.set_group_members def can_manage_group_permissions(self): return self.__class__.set_group_permissions != _AuthGroup.set_group_permissions def get_group_list(self, search=None): return [] def get_group_by_id(self, id_): ret = self.query("SELECT name, groupid FROM Prewikka_Group WHERE groupid = %s", id_) return usergroup.Group(*ret[0]) if ret else None def create_group(self, group): self.query("INSERT INTO Prewikka_Group (name, groupid) VALUES (%s, %s)", group.name, group.id) env.log.info("Created group \"%s\"" % group) def delete_group(self, group): name = group.name self.query("DELETE FROM Prewikka_Group WHERE groupid = %s", group.id) env.log.info("Deleted group \"%s\"" % name) def set_group_permissions(self, group, permissions): raise NotImplementedError def get_group_permissions(self, group): return [] def set_group_members(self, group, users): raise NotImplementedError def get_group_members(self, group): return [] def set_member_of(self, user, groups): raise NotImplementedError def get_member_of(self, user): return [] def is_member_of(self, group, user): raise NotImplementedError def has_group(self, group): raise NotImplementedError class Auth(pluginmanager.PluginBase, _AuthUser, _AuthGroup): __metaclass__ = abc.ABCMeta plugin_mandatory = True def __init__(self, config): pluginmanager.PluginBase.__init__(self) _AuthUser.__init__(self) _AuthGroup.__init__(self) def init(self, config): pass def authenticate(self, login, password="", no_password_check=False): raise NotImplementedError def get_default_session(self): raise NotImplementedError prewikka-5.2.0/prewikka/compat/0000755000000000000000000000000013726165110016373 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/compat/__init__.py0000644000000000000000000000240713726165107020515 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function import sys if sys.version_info[0] >= 3: STRING_TYPES = str else: STRING_TYPES = basestring def with_metaclass(meta, *bases): """ Function from jinja2/_compat.py. License: BSD. Use it like this:: class BaseForm(object): pass class FormType(type): pass class Form(with_metaclass(FormType, BaseForm)): pass This requires a bit of explanation: the basic idea is to make a dummy metaclass for one level of class instantiation that replaces itself with the actual metaclass. Because of internal type checks we also need to make sure that we downgrade the custom metaclass for one level to something closer to type (that's why __call__ and __init__ comes back from type etc.). This has the advantage over six.with_metaclass of not introducing dummy classes into the final MRO. """ class metaclass(meta): __call__ = type.__call__ __init__ = type.__init__ def __new__(cls, name, this_bases, d): if this_bases is None: return type.__new__(cls, name, (), d) return meta(name, bases, d) return metaclass('temporary_class', None, {}) prewikka-5.2.0/prewikka/compat/babelcompat.py0000644000000000000000000000234513726165107021230 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from datetime import timedelta TIMEDELTA_UNITS = ( ('year', 3600 * 24 * 365), ('month', 3600 * 24 * 30), ('week', 3600 * 24 * 7), ('day', 3600 * 24), ('hour', 3600), ('minute', 60), ('second', 1) ) def format_timedelta(delta, granularity='second', threshold=.85, add_direction=False, format='medium', locale=""): if format not in ('short', 'medium'): raise TypeError('Format can only be one of "short" or "medium"') if isinstance(delta, timedelta): seconds = int((delta.days * 86400) + delta.seconds) else: seconds = delta for unit, secs_per_unit in TIMEDELTA_UNITS: value = abs(seconds) / secs_per_unit if value >= threshold or unit == granularity: if unit == granularity and value > 0: value = max(1, value) value = int(round(value)) if not add_direction: return u"%d %s" % (value, unit) elif seconds >= 0: return u"in %d %s" % (value, unit) else: return u"%d %s ago" % (value, unit) return u'' prewikka-5.2.0/prewikka/compat/gevent.py0000644000000000000000000000157613726165107020254 0ustar rootroot00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # Re-add sslwrap to Python 2.7.5 import inspect __ssl__ = __import__('ssl') try: _ssl = __ssl__._ssl except AttributeError: _ssl = __ssl__._ssl2 def new_sslwrap(sock, server_side=False, keyfile=None, certfile=None, cert_reqs=__ssl__.CERT_NONE, ssl_version=__ssl__.PROTOCOL_SSLv23, ca_certs=None, ciphers=None): context = __ssl__.SSLContext(ssl_version) context.verify_mode = cert_reqs or __ssl__.CERT_NONE if ca_certs: context.load_verify_locations(ca_certs) if certfile: context.load_cert_chain(certfile, keyfile) if ciphers: context.set_ciphers(ciphers) caller_self = inspect.currentframe().f_back.f_locals['self'] return context._wrap_socket(sock, server_side=server_side, ssl_sock=caller_self) def fix_ssl(): if not hasattr(_ssl, 'sslwrap'): _ssl.sslwrap = new_sslwrap prewikka-5.2.0/prewikka/compat/jquery_unparam.py0000644000000000000000000000465713726165107022031 0ustar rootroot00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- import functools import re import sys try: from urllib import unquote_plus except ImportError: from urllib.parse import unquote_plus if sys.version_info >= (3, 0): Py3 = True else: Py3 = False def _decode(string, unquote=False): if unquote: string = unquote_plus(string) if not Py3: string = string.decode("utf8") return string def parse_key_pair(keyval, unquote=False): keyval_splitted = keyval.split('=', 1) if len(keyval_splitted) == 1: key, val = keyval_splitted[0], '' else: key, val = keyval_splitted return _decode(key, unquote), _decode(val, unquote) def build_struct(key, val): if key == '' or val == '': return {} groups = re.findall(r"\[.*?\]", key) groups_joined = ''.join(groups) if key[-len(groups_joined):] == groups_joined: key = key[:-len(groups_joined)] for group in reversed(groups): if group == '[]': val = [val] else: val = {group[1:-1]: val} return {key: val} def merge_two_structs(s1, s2): if isinstance(s1, list) and isinstance(s2, list): return s1 + s2 if isinstance(s1, dict) and \ isinstance(s2, dict): retval = s1.copy() for key, val in s2.items(): if retval.get(key) is None: retval[key] = val else: retval[key] = merge_two_structs(retval[key], val) return retval return s2 def merge_structs(structs): if len(structs) == 0: return {} return functools.reduce(lambda x, y: merge_two_structs(y, x), reversed(structs)) def handle_indexes(s, toplevel=False): if isinstance(s, list): return [handle_indexes(item) for item in s] if isinstance(s, dict): if not toplevel and s and all(k.isdigit() for k in s.keys()): return [handle_indexes(v) for k, v in sorted(s.items(), key=lambda x: int(x[0]))] else: return {k: handle_indexes(v) for k, v in s.items()} return s def jquery_unparam(jquery_params, unquote=True, multipart=False): if multipart: params = [(_decode(k, unquote), v) for k, v in jquery_params] else: params = [parse_key_pair(x, unquote) for x in jquery_params.split('&')] structs = [build_struct(k, v) for k, v in params] return handle_indexes(merge_structs(structs), toplevel=True) prewikka-5.2.0/prewikka/dataprovider/0000755000000000000000000000000013726165110017574 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/helpers/0000755000000000000000000000000013726165110021236 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/helpers/__init__.py0000644000000000000000000000000013726165107023343 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/helpers/elasticsearch.py0000644000000000000000000010077213726165107024437 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2015-2020 CS GROUP - France. All Rights Reserved. # Author: Sélim Menouar # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import datetime import dateutil.parser import re import requests from collections import OrderedDict from prewikka import dataprovider, error, hookmanager from prewikka.dataprovider import CriterionOperator, utils from prewikka.dataprovider.parsers import lucene from prewikka.utils import json, AttrObj from prewikka.utils.timeutil import timezone, get_timestamp_from_datetime _AGGREGATION_FUNC = ("count", "count_distinct", "min", "max", "avg", "sum") _EXTRACT_MAP = { "year": "year", "month": "month", "mday": "day", "hour": "hour", "min": "minute", "sec": "second" } _TIME_GROUPBY = ("year", "quarter", "month", "week", "day", "hour", "minute", "second", "timestamp") class ReconstructTransformer(lucene.ReconstructTransformer): def __init__(self, mapping, type=None): self._mapping = mapping self._type = type def field(self, f): if not f: return "" return self._mapping.to_es(f[0].replace(" ", "")[:-1]) + ":" # This is used to deanonymize the value def _value_string(self, s, field=None): # For a given value of "my value" # s[1] = "my value" # s[1].value = my value orig = s[1].value tpl = ["%s.%s" % (self._type, field[:-1]) if field else None, orig] list(hookmanager.trigger("HOOK_DATAPROVIDER_VALUE_WRITE", tpl)) if tpl[1] != orig: return s[1].replace(s[1].value, tpl[1]) return text_type(s[1]) class ElasticsearchPlugin(dataprovider.DataProviderBackend): def __init__(self): # Do not call the parent's __init__ here self._instances = {} for conf in env.config.elasticsearch: if conf.get("es_type") != self.type: continue name = conf.get_instance_name() if not name: raise error.PrewikkaUserError(N_("Invalid configuration"), N_("Elasticsearch instance must be named")) self._instances[name] = ElasticsearchInstance(name, conf) if not self._default_instance: self._default_instance = self._instances[name] if not self._instances: raise error.PrewikkaUserError(N_("Missing configuration"), N_("Could not find a valid configuration for Elasticsearch %s type.", self.type)) class ElasticsearchInstance(dataprovider.DataProviderInstance): TYPE_OPERATOR_MAPPING = { text_type: ("=", "=*", "!=", "!=*", "~", "~*", "!~", "!~*", "<>", "<>*", "!<>", "!<>*"), datetime.datetime: ("<", ">", "<=", ">="), None: ("=", "!=", "<", ">", "<=", ">=") } def __init__(self, name, config): self.type = config.es_type self._client = ElasticsearchClient(name, config) def get_values(self, paths, criteria, distinct, limit, offset, highlight=None): env.request.user.check("%s_VIEW" % self.type.upper()) if limit < 0: # cannot be more than index.max_result_window, which default to 10000 limit = 10000 results = self._client.query(paths, criteria, limit, offset, highlight) return results.api_results class ElasticsearchClient(object): def __init__(self, name, conf): self._type = conf.es_type self._host = conf.es_url.rstrip("/") self._user = conf.get("es_user") self._password = conf.get("es_pass", "") self._cert = conf.get("es_cert") self._privkey = conf.get("es_privkey") self._cacert = conf.get("es_cacert") self._session = requests.Session() self._session.headers["content-type"] = "application/json" # Check if Elasticsearch instance is available req = self._request(self._host.rsplit("/", 1)[0], method="GET").json() self._version = tuple(int(i) for i in req["version"]["number"].split(".")) if self._version < (5,): raise error.PrewikkaUserError(N_("Invalid configuration"), N_("Elasticsearch version %s is not supported.", req["version"]["number"])) self._mapping = ElasticsearchMap(self._type, conf, self.get_mapping()) def request(self, path, data="", method="POST", **kwargs): """ Make a request and return the result """ return self._request(self._host + path, data, method, **kwargs) def _request(self, url, data="", method="POST", **kwargs): try: if self._user: kwargs['auth'] = (self._user, self._password) if self._cacert: kwargs['verify'] = self._cacert if self._cert: if self._privkey: kwargs['cert'] = (self._cert, self._privkey) else: kwargs['cert'] = self._cert result = self._session.request(method, url, data=data, **kwargs) except requests.exceptions.RequestException as err: raise error.PrewikkaUserError(N_("Request error"), err) try: json_result = result.json() except ValueError as err: raise error.PrewikkaUserError(N_("Request error"), err) if result.status_code == 200: # When searching multiple indices, some can fail returning # results. We subtract the total number of shards by the # skipped and failed ones, and if this result is 0, then # we raise an error. # When the internal ticket #3842 will be answered and closed, # review the purpose of this code. if not url.endswith("/_search"): return result shards = json_result["_shards"] if shards["total"] - shards.get("skipped", 0) - shards["failed"] == 0: err = shards["failures"][0]["reason"]["reason"] # FIXME #3733 Remove when cursors are implemented? if "Result window is too large" in err: err = N_("Cannot further browse results. Please use a more specific filter.") raise error.PrewikkaUserError(N_("Request error"), err) return result err = N_("Request error with HTTP code %d.", result.status_code) if result.status_code == 400: # Bad ES request r = json_result.get("error", {}) try: parse_except = r["failed_shards"][0]['reason']['caused_by']['type'] == "parse_exception" except KeyError: parse_except = False r = r.get("root_cause") if parse_except: err = N_("Malformed query.") elif r and "Result window is too large" in r[0]["reason"]: # FIXME #3733 Remove when cursors are implemented? err = N_("Cannot further browse results. Please use a more specific filter.") elif r: err = N_("Request error with HTTP code %d. Reason: %s", (result.status_code, r[0]["reason"])) else: err = N_("Request error with HTTP code %d. Unknown reason", result.status_code) raise error.PrewikkaUserError(N_("Request error"), err) def query(self, path, criteria, limit=50, offset=0, highlight=None): search = ElasticsearchQuery(self._type, self._mapping, path, criteria, limit, offset, highlight) results = self.request("/_search", search.get_json_query()) return ElasticsearchResult(self._mapping, results.json(), search, limit) def get_mapping(self, root=None, mapping=None, prefix=""): if mapping is None: mapping = {} if root is None: try: req = next(iter(self.request('/', method="GET").json().values())) if self._version < (7,): root = next(iter(req["mappings"].values()))["properties"] else: root = req["mappings"]["properties"] except (IndexError, KeyError): raise error.PrewikkaUserError(N_("Invalid configuration"), N_("The specified Elasticsearch index does not exist")) if prefix: prefix += "." for key, value in root.items(): mapping[prefix + key] = AttrObj(type=value.get("type"), keyword=value.get("type") == "keyword") if "fields" in value: self.get_mapping(value["fields"], mapping, prefix + key) elif "properties" in value: self.get_mapping(value["properties"], mapping, prefix + key) return mapping class ElasticsearchQuery(object): # Case depends on Elasticsearch configuration, we can not handle this here for now # Default configuration is to lowercase OPERATOR_MAP = { CriterionOperator.EQUAL: ("must", "term"), CriterionOperator.EQUAL_NOCASE: ("must", "term"), CriterionOperator.NOT_EQUAL: ("must_not", "term"), CriterionOperator.NOT_EQUAL_NOCASE: ("must_not", "term"), CriterionOperator.SUBSTR: ("must", "contains"), CriterionOperator.SUBSTR_NOCASE: ("must", "contains"), CriterionOperator.NOT_SUBSTR: ("must_not", "contains"), CriterionOperator.NOT_SUBSTR_NOCASE: ("must_not", "contains"), CriterionOperator.REGEX: ("must", "regexp"), CriterionOperator.REGEX_NOCASE: ("must", "regexp"), CriterionOperator.NOT_REGEX: ("must_not", "regexp"), CriterionOperator.NOT_REGEX_NOCASE: ("must_not", "regexp"), } def __init__(self, type, mapping, path, criteria, limit=50, offset=0, highlight=None): self._type = type self._mapping = mapping self.path = path self.criteria = criteria self.limit = limit self.offset = offset self._final_order = [] self.highlight = highlight default_field = self._mapping.to_es("default_field") if default_field == 'default_field': default_field = 'message' self._query_string = { "query_string": { "default_field": default_field, "query": "", "default_operator": "AND", "analyze_wildcard": True } } self._query = { "size": limit, "from": offset, "sort": [], "query": self._init_query_criteria(), "aggs": {}, "highlight": dict(self.highlight) if self.highlight else {}, "track_total_hits": True, } self.extract_list = [] self._set_paths(self.path) if self.criteria: self._set_criteria(self.criteria) def _init_query_criteria(self): return { "bool": { "must": [], "must_not": [], "filter": [], "should": [] } } def get_query(self): return self._query def get_json_query(self): return json.dumps(self._query) def _is_groupby_query(self, paths): group_by = [] for idx, p in enumerate(paths): path = p.get_path() field = AttrObj(field=path.name if path else None, order=None) if path and self.highlight and "fields" not in self.highlight: self._query['highlight'].setdefault('fields', {})[self._mapping.to_es(path.name)] = {} final_order = None for cmd in p.commands: if cmd == "group_by": if p.extract: field.field = _EXTRACT_MAP.get(p.extract) if field in group_by: index = group_by.index(field) else: index = len(group_by) group_by.append(field) final_order = (idx, index) elif cmd == "order_desc": field.order = "desc" elif cmd == "order_asc": field.order = "asc" if final_order: # cmd : groupby self._final_order.append(AttrObj(idx=final_order[0], index=final_order[1], order=field.order)) if field.field and field.order and (field.field not in _TIME_GROUPBY or field.field == 'timestamp'): self._add_order(field) return group_by def _set_paths_func(self, paths, group_by): query, index = self._get_aggs_last_index() initial_index = index typ_last_agg = next(iter(query.keys())) for idx, p in enumerate(paths): path = p.get_path() field = path.name if path else None if not (p.object.is_function and p.object.name in _AGGREGATION_FUNC): continue self._query["size"] = 0 if not field: if not group_by: continue field = group_by[-1].field order = None for cmd in p.commands: if cmd == "order_desc": order = "desc" elif cmd == "order_asc": order = "asc" if field in _TIME_GROUPBY: self._final_order.append(AttrObj(idx=idx, index=-1, order=order)) continue else: ex = self._exists_filter(field) if ex not in self._query["query"]['bool']['must']: self._query["query"]['bool']['must'].append(ex) if getattr(p.object.args[0], "name", None) == "distinct": name = "count_distinct" else: name = p.object.name aggs = self._format_aggregate(field, name, index) item = list(filter(lambda x: x[1] == aggs["internal_%d" % index], query.setdefault("aggs", {}).items())) if item: self._final_order.append(AttrObj(idx=idx, index=int(item[0][0][9:]) - 1, order=order)) continue self._final_order.append(AttrObj(idx=idx, index=index - 1, order=order)) query.setdefault("aggs", {})["internal_%d" % index] = aggs["internal_%d" % index] if initial_index != 1: query[typ_last_agg].setdefault("order", {})["internal_%d" % index] = order or "desc" index = index + 1 def _set_paths(self, paths): group_by = self._is_groupby_query(paths) if group_by: # WARNING: Elasticsearch can't ensure exact results when using multiple # aggregations (i.e. sub-buckets) and sorting by count. # We might want to increase the limit here (like x10) to reduce # the imprecision. self._query["size"] = 0 for g in group_by: self._add_aggregate(g) self._set_paths_func(paths, group_by) self._final_order = sorted(self._final_order, key=lambda x: x.idx) if group_by and self.offset: self._add_offset() def _set_criteria_op(self, typ, criteria, query): for term in (criteria.left, criteria.right): if not term: continue ret = self._set_criteria(term, self._init_query_criteria()) if ret: query["bool"][typ].append(ret) return query def _set_criteria(self, criteria, query=None): if query is None: query = self._query["query"] if criteria.operator == CriterionOperator.NOT: return self._set_criteria_op("must_not", criteria, query) if criteria.operator == CriterionOperator.AND: return self._set_criteria_op("must", criteria, query) if criteria.operator == CriterionOperator.OR: return self._set_criteria_op("should", criteria, query) field = criteria.left.rsplit(".", 1)[-1] if field == "_raw_query": self._add_raw_query(criteria.right) elif field == "timestamp": self._add_time_to_query(criteria.right, criteria.operator) else: op = self.OPERATOR_MAP.get(criteria.operator, None) if op is None: raise error.PrewikkaUserError(N_("Elasticsearch database operator error"), N_("The operator '%s' that you try to use is not supported by Prelude for the field '%s'." % (criteria.operator, field))) right = criteria.right.lower() if criteria.operator.case_insensitive else criteria.right if right is None: op = ("must" if criteria.operator.negated else "must_not", "exists") query["bool"][op[0]].append(getattr(self, "_%s_filter" % op[1])(field, right)) return query def _add_raw_query(self, query): if self._query_string["query_string"]["query"]: raise error.PrewikkaError(N_("Only one _raw_query path can be specified for the selection"), N_("Elasticsearch database path selection error")) self._query_string["query_string"]["query"] = lucene.parse(query, transformer=ReconstructTransformer(self._mapping, type=self._type)) self._query["query"]["bool"]["must"].append(self._query_string) # Don't search with a timestamp, Elasticsearch does not apply # the timezone conversion on a timestamp, resulting in incorrect return values def _add_time_to_query(self, date, operator): if not isinstance(date, datetime.datetime): # This can happen when the criterion is parsed from a string (e.g. webservice), # or JSON-deserialized (e.g. replay by criteria) date = dateutil.parser.parse(date) if not date.tzinfo: date = env.request.user.timezone.localize(date) utc_time = self._mapping.format_datetime(date.astimezone(dateutil.tz.tzutc())) operator = self._mapping.to_operator(operator.name) self._query["query"]["bool"]["filter"].append(self._range_filter("timestamp", operator, utc_time)) def _add_order(self, field): if self._mapping.to_es_keyword(field.field) and field.field != 'raw_message': order_filter = {self._mapping.to_es_keyword(field.field): field.order} if order_filter not in self._query["sort"]: self._query["sort"].append(order_filter) def _add_aggregate(self, field): query, index = self._get_aggs_last_index(None, 1) query["aggs"] = self._format_aggregate(field.field, "terms", index, field.order) def _add_offset(self): self._query["aggs"]["internal_1"]["aggs"]["bucket_truncate"] = { "bucket_sort": { "from": self.offset, "size": self.limit } } def _format_aggregate(self, field, func, index=1, order=None): if field in _TIME_GROUPBY: func = "time" return {"internal_%d" % index: getattr(self, "_aggs_%s" % func)(field, order)} def _get_aggs_last_index(self, query=None, index=1): if not query: query = self._query aggs_k = query.get("aggs", {}).keys() if aggs_k: return self._get_aggs_last_index(query["aggs"][next(iter(aggs_k))], index + 1) else: return [query, index] def _range_filter(self, field, operator, value): return { "range": { self._mapping.to_es(field): { operator: value } } } def _match_filter(self, field, value): return { "match": {self._mapping.to_es(field): value} } def _exists_filter(self, field, value=None): return { "exists": {"field": self._mapping.to_es(field)} } def _term_filter(self, field, value): return { "term": {self._mapping.to_es_keyword(field): value} } def _contains_filter(self, field, value): return { "wildcard": {self._mapping.to_es_keyword(field): "*%s*" % value} } def _regexp_filter(self, field, value): return { "regexp": {self._mapping.to_es_keyword(field): value} } def _aggs_terms(self, field, order): return { "terms": { "field": self._mapping.to_es_keyword(field), "size": 10000, "order": { "_count": order or "desc" } } } def _aggs_time(self, field, order): if field == "timestamp": field = "1s" m = { 'year': 'yyyy', 'month': 'MM', 'day': 'dd', 'hour': 'HH', 'minute': 'mm', 'second': 'ss', '1s': 'yyyy-MM-dd HH:mm:ss' } return self._aggs_histogram(self._mapping.to_es("timestamp"), field, m[field], order) def _aggs_histogram(self, field, interval, form, order): return { "date_histogram": { "field": field, "interval": interval, "format": form, "time_zone": env.request.user.timezone.zone, "order": {"_key": order or "asc"}, "min_doc_count": 0 } } def _aggs_count(self, field, order): return { "value_count": { "field": self._mapping.to_es_keyword(field) } } def _aggs_count_distinct(self, field, order): return { "cardinality": { "field": self._mapping.to_es_keyword(field) } } def _aggs_max(self, field, order): return { "max": { "field": self._mapping.to_es_keyword(field) } } def _aggs_min(self, field, order): return { "min": { "field": self._mapping.to_es_keyword(field) } } def _aggs_avg(self, field, order): return { "avg": { "field": self._mapping.to_es_keyword(field) } } def _aggs_sum(self, field, order): return { "sum": { "field": self._mapping.to_es_keyword(field) } } class ElasticsearchResult(object): def __init__(self, mapping, result, query, limit): self._mapping = mapping self._result = result self._query = query self._limit = limit self.total_result = result.get("hits", {}).get("total", 0) if isinstance(self.total_result, dict): # For Elasticsearch >= 7 self.total_result = self.total_result["value"] self.api_results = dataprovider.QueryResults(self._get_rows()) self.api_results.total = self.total_result def _get_rows(self): rows = [] if self._query._query["size"] == 0: rows = self._aggregations_to_rows(self._manage_aggregations()) for obj in reversed(self._query._final_order): if obj.order: # Multiple sorts work here because sorting is stable rows.sort(key=lambda x: x[obj.idx], reverse=obj.order == "desc") # Truncate the results since Elasticsearch limits are per bucket rows = rows[:self._limit] # When aggregating, Elasticsearch set ["hits"]["total"] to the sum of all # values and not the number of aggregations self.total_result = 0 else: for hit in self._result.get("hits", {}).get("hits", []): # Concat all the data in the root section and the _source section hit.update(hit.pop("_source", {})) rows.append(self._get_row(hit)) return rows def _ordered_row(self, keys): ret = [] if not self._query._final_order: return keys for obj in self._query._final_order: if obj.index < len(keys): ret.append(keys[obj.index]) else: ret.append('0') return ret @staticmethod def _is_internal(x): return isinstance(x, text_type) and x.startswith('internal_') def _aggregations_to_rows(self, result, rows=None, keys=None, depth=1): if result is None: return [] if rows is None: rows = [] if keys is None: keys = [] values = [] last_level = False if isinstance(result, dict): last_level = not bool([x for x in result if not self._is_internal(x)]) values = result.values() else: last_level = True values = [result] if last_level: rows.append(self._ordered_row(keys + values)) return rows for key in result: if not self._is_internal(key): self._aggregations_to_rows(result[key], rows, keys + [key], depth+1) return rows def _manage_aggregations(self, aggs=None, index=1): # If the query is just "count(1)" if aggs is None and "aggregations" not in self._result: return self.total_result if aggs is None: aggs = self._result["aggregations"] if "buckets" in aggs.get("internal_%d" % index, {}): return self._manage_aggregations_buckets(aggs, index) if aggs.get("internal_%d" % (index+1)) is None: return aggs["internal_%d" % index]["value"] result = OrderedDict() while True: agg = aggs.get("internal_%d" % index) if not agg: break if "value" in agg: result["internal_%d" % index] = agg["value"] index = index + 1 return result or None def _manage_aggregations_buckets(self, aggs, index): result = OrderedDict() for bucket in aggs.get("internal_%d" % index, {}).get("buckets", []): key = bucket.get("key_as_string") or bucket.get("key", "") next_agg_idx = "internal_%d" % (index + 1) if bucket.get(next_agg_idx): result[key] = self._manage_aggregations(bucket, index + 1) else: result[key] = result.get(key, 0) + bucket.get("doc_count", 0) return result or None def _get_groupby_from_path(self, path): if "group_by" not in path.commands: return None if path.extract: return _EXTRACT_MAP.get(path.extract) return path.object.name def _get_subfield_value(self, fullpath, result): # result can be like # { 'key1' : { 'key2' : { 'key3' : value }}} # Standard case # or # { 'key1.key2.key3' : value } # Highlight case # and fullpath is like # key1.key2.key3 res = result for path in fullpath.split('.'): res = res.get(path) if res is None: return result.get(fullpath) return res def _get_field_value(self, selection, result): if selection.object.is_function and selection.object.name == "count": return result["count"] field_name = selection.object.name if field_name not in _TIME_GROUPBY: es_field_name = self._mapping.to_es(field_name) ret = self._get_subfield_value(es_field_name, result) if ret and self._query.highlight and es_field_name in result.get('highlight', {}): ret = self._get_subfield_value(es_field_name, result.get("highlight", {}))[0] if field_name == "raw_message" and ret is None: es_field_name = self._mapping.to_es("timestamp") ret = self._get_subfield_value(es_field_name, result) if not ret: return None time_log = dateutil.parser.parse(ret) return "%s %s %s %s" % ( time_log.strftime('%b %d %H:%M:%S'), result.get(self._mapping.to_es("host")), result.get(self._mapping.to_es("program")), result.get(self._mapping.to_es("message")) ) return ret groupby = self._get_groupby_from_path(selection) if groupby: value = dateutil.parser.parse(result[groupby]) else: es_field_name = self._mapping.to_es("timestamp") ret = self._get_subfield_value(es_field_name, result) if not ret: return None value = dateutil.parser.parse(ret) if selection.object.is_function and selection.object.name == "timezone": value = utils.apply_timezone(value, timezone(selection.object.args[0])) if selection.extract: value = utils.extract_from_date(value, selection.extract) return value def _get_row(self, result): return [self._get_field_value(i, result) for i in self._query.path] class ElasticsearchMap(object): _OPERATOR = {"<=": "lte", ">=": "gte", "<": "lt", ">": "gt"} _TYPES = { datetime.datetime: ("date",), float: ("double", "float", "half_float", "scaled_float"), int: ("byte", "integer", "short", "long"), text_type: ("keyword", "text"), } _REVERSED_TYPES = {value: key for key, values in _TYPES.items() for value in values} _DEFAULT_CONF = { "log": OrderedDict([ ("timestamp", "timestamp"), ("message", "message"), ("raw_message", "raw_message") ]), "netflow": OrderedDict([ ("timestamp", "@timestamp") ]), "iodef": OrderedDict([ ("timestamp", "@timestamp"), ("message", "_source") ]) } def __init__(self, name, conf, fields): self.name = name self.time_format = conf.get("es_timeformat") if self.time_format: try: self.format_datetime(datetime.datetime.utcnow()) except ValueError as err: raise error.PrewikkaUserError(N_("Invalid configuration"), err) self._mapping, self._group_mapping = self._get_mapping(conf) self._reverse_mapping = dict((v, k) for k, v in self._mapping.items()) for field, es_field in self._mapping.items(): if field in self._DEFAULT_CONF[name] or field == "default_field": continue es_type = fields[es_field].type if es_field in fields else None type_ = self._REVERSED_TYPES.get(es_type, text_type) env.dataprovider.register_path("%s.%s" % (name, field), type_) def format_datetime(self, dt): if not self.time_format: return dt.isoformat() if self.time_format == '@': return get_timestamp_from_datetime(dt) return dt.strftime(self.time_format) def _get_mapping(self, conf): mapping = self._DEFAULT_CONF[self.name].copy() group_mapping = {} key_regex = re.compile(r'\w[\w\-]*') for key, value in conf.items(): if not key_regex.match(key): raise error.PrewikkaUserError(N_("Configuration error"), N_("In your Elasticsearch instance, fields mapping is not well configured.")) key = key.lower() if key in ["es_url", "es_user", "es_pass", "es_type", "es_timeformat"]: continue value = value.split(", ", 1) if len(value) > 1: group_mapping[key] = value[1].strip() mapping[key] = value[0].strip() return mapping, group_mapping def to_es(self, field): if field.endswith(".exact"): return self.to_es_keyword(field[:-6]) return self._mapping.get(field, field) def to_es_keyword(self, field): return self._group_mapping.get(field, self.to_es(field)) def to_archive(self, field): return self._reverse_mapping.get(field, field) def to_operator(self, field): return self._OPERATOR.get(field, field) prewikka-5.2.0/prewikka/dataprovider/helpers/sql.py0000644000000000000000000006014613726165107022424 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # Author: François POIROTTE # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import collections import copy import re from prewikka import error from prewikka.dataprovider import COMPOSITE_TIME_FIELD, Criterion, CriterionOperator from prewikka.dataprovider.pathparser import _Path, SelectionObject, STRING_INDEX_REGEX _OPERATORS = { "common": { CriterionOperator.GREATER: "%(left)s > %(right)s", CriterionOperator.LOWER: "%(left)s < %(right)s", CriterionOperator.LOWER_OR_EQUAL: "%(left)s <= %(right)s", CriterionOperator.GREATER_OR_EQUAL: "%(left)s >= %(right)s", }, # Special cases when the right operand is None "special": { CriterionOperator.EQUAL: "%(left)s IS NULL", CriterionOperator.NOT_EQUAL: "%(left)s IS NOT NULL", }, "mysql": { CriterionOperator.EQUAL: "%(left)s = BINARY %(right)s", CriterionOperator.EQUAL_NOCASE: "%(left)s = %(right)s", CriterionOperator.NOT_EQUAL: "%(left)s != BINARY %(right)s", CriterionOperator.NOT_EQUAL_NOCASE: "%(left)s != %(right)s", CriterionOperator.REGEX: "%(left)s REGEXP %(right)s", CriterionOperator.REGEX_NOCASE: "%(left)s REGEXP BINARY %(right)s", CriterionOperator.NOT_REGEX: "%(left)s NOT REGEXP %(right)s", CriterionOperator.NOT_REGEX_NOCASE: "%(left)s NOT REGEXP BINARY %(right)s", CriterionOperator.SUBSTR: "%(left)s LIKE BINARY %(right)s", CriterionOperator.SUBSTR_NOCASE: "%(left)s LIKE %(right)s", CriterionOperator.NOT_SUBSTR: "%(left)s NOT LIKE BINARY %(right)s", CriterionOperator.NOT_SUBSTR_NOCASE: "%(left)s NOT LIKE %(right)s", }, "pgsql": { CriterionOperator.EQUAL: "%(left)s = %(right)s", CriterionOperator.EQUAL_NOCASE: "lower(%(left)s) = lower(%(right)s)", CriterionOperator.NOT_EQUAL: "%(left)s != %(right)s", CriterionOperator.NOT_EQUAL_NOCASE: "lower(%(left)s) != lower(%(right)s)", CriterionOperator.REGEX: "%(left)s ~ %(right)s", CriterionOperator.REGEX_NOCASE: "%(left)s ~* %(right)s", CriterionOperator.NOT_REGEX: "%(left)s !~ %(right)s", CriterionOperator.NOT_REGEX_NOCASE: "%(left)s !~* %(right)s", CriterionOperator.SUBSTR: "%(left)s LIKE %(right)s", CriterionOperator.SUBSTR_NOCASE: "%(left)s ILIKE %(right)s", CriterionOperator.NOT_SUBSTR: "%(left)s NOT LIKE %(right)s", CriterionOperator.NOT_SUBSTR_NOCASE: "%(left)s NOT ILIKE %(right)s", }, # SQLite doesn't support case-insensitive comparison for unicode characters by default # (See https://www.sqlite.org/faq.html#q18) "sqlite": { CriterionOperator.EQUAL: "%s(left)s = %(right)s", CriterionOperator.EQUAL_NOCASE: "%s(left)s = %(right)s", CriterionOperator.NOT_EQUAL: "%(left)s != %(right)s", CriterionOperator.NOT_EQUAL_NOCASE: "%(left)s != %(right)s", }, } _EXTRACTION = { "mysql": { "quarter": "QUARTER(%s)", "year": "EXTRACT(YEAR FROM %s)", "month": "EXTRACT(MONTH FROM %s)", "yday": "DAYOFYEAR(%s)", "mday": "DAYOFMONTH(%s)", "wday": "WEEKDAY(%s)", "hour": "EXTRACT(HOUR FROM %s)", "min": "EXTRACT(MINUTE FROM %s)", "sec": "EXTRACT(SECOND FROM %s)", "msec": "EXTRACT(MICROSECOND FROM %s) / 1000", "usec": "EXTRACT(MICROSECOND FROM %s)", }, "pgsql": { "quarter": "EXTRACT(QUARTER FROM %s)", "year": "EXTRACT(YEAR FROM %s)", "month": "EXTRACT(MONTH FROM %s)", "yday": "EXTRACT(DOY FROM %s)", "mday": "EXTRACT(DAY FROM %s)", "wday": "(EXTRACT(ISODOW FROM %s) - 1)", "hour": "EXTRACT(HOUR FROM %s)", "min": "EXTRACT(MINUTE FROM %s)", "sec": "EXTRACT(SECOND FROM %s)", "msec": "EXTRACT(MILLISECOND FROM %s)", "usec": "EXTRACT(MICROSECOND FROM %s)", }, "sqlite": { "quarter": "((STRFTIME('%%m', %s) + 2) / 3)", "year": "STRFTIME('%%Y', %s) + 0", "month": "STRFTIME('%%m', %s) + 0", "yday": "STRFTIME('%%j', %s) + 0", "mday": "STRFTIME('%%d', %s) + 0", "wday": "((STRFTIME('%%w', %s) + 6) %% 7)", "hour": "STRFTIME('%%H', %s) + 0", "min": "STRFTIME('%%M', %s) + 0", "sec": "STRFTIME('%%S', %s) + 0", "msec": "(STRFTIME('%%f', %s) - STRFTIME('%%S', %s)) * 1000", # SQLite's date/time precision does not support microseconds; # we make "usec" an alias for "msec" instead. "usec": "(STRFTIME('%%f', %s) - STRFTIME('%%S', %s)) * 1000", }, } _FUNCTIONS_MAP = { "mysql": { "timezone": "CONVERT_TZ({0}, 'GMT', '{1}')", "date": "TIMESTAMP('{0}')", "add_date": "DATE_ADD({0}, '{1}')", "sub_date": "DATE_SUB({0}, '{1}')", }, "pgsql": { "timezone": "timezone('{1}', timezone('UTC', {0}))", "date": "TIMESTAMP '{0}'", "add_date": "{0} + INTERVAL '{1}'", "sub_date": "{0} - INTERVAL '{1}'", }, "sqlite": { "timezone": "{0}", # timezone is not supported in sqlite "date": "datetime('{0}')", "add_date": "datetime({0}, '+{1}')", "sub_date": "datetime({0}, '-{1}')", }, } _TIME_UNITS = { "year": (0, "year"), "quarter": (1, "quarter"), "month": (2, "month"), "yday": (3, "day"), "mday": (3, "day"), "wday": (3, "day"), "hour": (4, "hour"), "min": (5, "min"), "sec": (6, "sec"), "msec": (7, "msec"), "usec": (8, "usec"), } _SPECIAL_TABLES = set(["_intervals", "_main"]) class CTETimeBoundsError(error.PrewikkaUserError): name = N_("Dataprovider error") message = N_("Could not find time bounds in CTE query") class SQLTable(object): def __init__(self, name, pkey=None): self._name = name self.pkey = pkey def __str__(self): return self._name class SQLQuery(object): def __init__(self, base_table, distinct=False, limit=-1, offset=0): self.base_table = base_table self.select = [] self.joins = [] self.joined = [base_table] self.where = None self.group_by = [] self.order_by = [] self.distinct = distinct self.limit = limit self.offset = offset def __str__(self): query = "SELECT %s %s FROM %s %s" % ( "DISTINCT" if self.distinct else "", ", ".join(self.select), "%s AS t0" % self.base_table, " ".join("LEFT JOIN %s ON %s" % (table, condition) for table, condition in self.joins), ) if self.where: query += " WHERE %s" % self.where if self.group_by: query += " GROUP BY %s" % ", ".join(self.group_by) if self.order_by: query += " ORDER BY %s" % ", ".join(self.order_by) if self.offset > 0 or self.limit > -1: query += " LIMIT %s OFFSET %d" % (self.limit, self.offset) return query class SQLBuilder(object): def __init__(self, paths_map, tables, joins, handle_wildcards=False, db=None, time_paths=()): self._paths_map = paths_map self._tables = tables self._base_table = tables[0] self._handle_wildcards = handle_wildcards self._db = db or env.db self._joins = joins self._time_paths = time_paths self._init_relations() self._reverse_paths_map = dict((v, k) for k, v in paths_map.items()) for table1, relation in self._relations.items(): for table2, rel in relation.items(): if (table2, rel["dest_pkey"][0]) not in self._reverse_paths_map: self._reverse_paths_map[(table2, rel["dest_pkey"][0])] = self._reverse_paths_map[(table1, rel["src_pkey"][0])] def _init_relations(self): self._relations = collections.OrderedDict() for (t1, c1), (t2, c2) in self._joins: if not isinstance(c1, tuple): c1 = (c1,) if not isinstance(c2, tuple): c2 = (c2,) self._relations.setdefault(t1, {})[t2] = dict(src_pkey=c1, dest_pkey=c2) self._relations.setdefault(t2, {})[t1] = dict(src_pkey=c2, dest_pkey=c1) self._join_paths = {} for table in self._tables: self._join_paths[table] = self._find_paths(table) def _find_paths(self, source): ret = {source: [source]} remaining = [source] while remaining: table = remaining.pop(0) for t in self._relations.get(table, []): if t not in ret: remaining.append(t) ret[t] = ret[table] + [t] ret.pop(source) return ret def _get_field_info(self, path): return self._paths_map[path.path] def _get_base_table(self, selection): for index, candidate in enumerate(selection): # Exclude things like "count(1)" # which cannot be used for JOINs. path = candidate.get_path() if path: return self._get_field_info(path)[0] return self._base_table def _process_function(self, function, query, with_aliases=True): args = [] for i in function.args: args.append(self._process_object(i, query, with_aliases)) sql_func = _FUNCTIONS_MAP[self._db.get_type()].get(function.name) if sql_func: return sql_func.format(*args) return "%s(%s)" % (function.name.upper(), ", ".join(args)) def _process_commands(self, selection, index, query): for command in selection.commands: if command == "order_asc": query.order_by.append("%d ASC" % index) elif command == "order_desc": query.order_by.append("%d DESC" % index) elif command == "group_by": query.group_by.append("%d" % index) def _process_path(self, path, aliases): table, attr = self._paths_map[path] if not aliases: return attr for i, alias in enumerate(reversed(aliases)): # Use the last matching alias for the string-index support if alias == table: return "t%d.%s" % (len(aliases) - i - 1, attr) raise ValueError def _process_value(self, value): return self._db.escape(value) if value is not None else None def _process_object(self, obj, query, with_aliases=True): if obj.is_function: return self._process_function(obj, query, with_aliases) elif obj.is_path: if obj.klass in _SPECIAL_TABLES: return obj.path table, attr = self._get_field_info(obj) # Handle table JOINs for selection. self._add_join(table, query) # Make sure we also support things like "COUNT(1)". return "t%s.%s" % (query.joined.index(table), attr) if with_aliases else attr elif obj.is_constant: return obj.value def _gen_selection(self, selection, query, with_aliases=True): selected = self._process_object(selection.object, query, with_aliases) if not selection.extract: return selected # This method expects all timestamps stored in the database to be in UTC. return _EXTRACTION[self._db.get_type()][selection.extract] % selected def _process_criterion(self, criterion, aliases): lhs = self._process_path(criterion.left, aliases) rhs = self._process_value(criterion.right) # Binary operator. op = criterion.operator if criterion.right is None: op = _OPERATORS["special"][op] elif op in _OPERATORS["common"]: op = _OPERATORS["common"][op] else: # Handle "%" wildcard for SQL LIKE operator if self._handle_wildcards and op.is_substring and isinstance(rhs, text_type): rhs = self._handle_like_pattern(rhs) op = _OPERATORS[self._db.get_type()][op] return op % {"left": lhs, "right": rhs} def _handle_like_pattern(self, pattern): # pattern is a string with quotes around return "'%%%s%%'" % pattern[1:-1] def _add_join(self, table, query, string_index=None): if not table or table in query.joined and not string_index: return table_paths = self._join_paths[query.base_table] for i, dest in enumerate(table_paths[table][1:]): src = table_paths[table][i] if dest in query.joined and not (table == dest and string_index): continue # The left-hand side table always has an alias. # Create a new alias on the fly if necessary # for the right-hand side table. query.joined.append(dest) alias_src = "t%d" % query.joined.index(src) alias_dest = "t%d" % (len(query.joined) - 1) # Retrieve the names of the fields forming the join key. fields = zip(self._relations[src][dest]["src_pkey"], self._relations[src][dest]["dest_pkey"]) # Add the join key's fields to the join filters. join_crit = ["%s.%s = %s.%s" % (alias_src, i, alias_dest, j) for (i, j) in fields] if string_index: path, value = string_index join_crit.append("%s = %s" % (self._process_path(path, query.joined), self._db.escape(value))) query.joins.append(("%s AS %s" % (dest, alias_dest), " AND ".join(join_crit))) def _process_selection(self, paths, query, with_aliases=True): for i, selection in enumerate(paths): selected = self._gen_selection(selection, query, with_aliases) query.select.append("%s AS %s" % (selected, "c%d" % i) if with_aliases else selected) # Handle ORDER BY/GROUP BY directives. self._process_commands(selection, len(query.select), query) def _process_criteria(self, criteria, query, with_aliases=True): if not criteria: return if criteria.operator == CriterionOperator.NOT: return "NOT(%s)" % self._process_criteria(criteria.right, query, with_aliases) elif criteria.operator.is_boolean: op = " AND " if criteria.operator == CriterionOperator.AND else " OR " return "(%s)" % op.join(self._process_criteria(term, query, with_aliases) for term in (criteria.left, criteria.right)) ret = self._handle_indexation_by_string(criteria, query, with_aliases) if ret: return ret self._add_join(self._paths_map[criteria.left][0], query) return self._process_criterion(criteria, query.joined if with_aliases else []) def _handle_indexation_by_string(self, criteria, query, with_aliases): matches = re.findall(STRING_INDEX_REGEX, criteria.left) if matches: path = re.sub(STRING_INDEX_REGEX, "", criteria.left) string_index = (env.dataprovider.get_indexation_path(criteria.left), matches[0][1]) self._add_join(self._paths_map[path][0], query, string_index=string_index) return self._process_criteria(Criterion(path, criteria.operator, criteria.right), query, with_aliases) def build_query(self, paths, criteria, distinct, limit, offset): cte = False for path in paths: p = path.get_path() if p and p.name == COMPOSITE_TIME_FIELD: cte = True break if cte: return self._build_cte_query(paths, criteria, distinct, limit, offset) else: return self._build_query(paths, criteria, distinct, limit, offset) def _build_query(self, paths, criteria, distinct, limit, offset): query = SQLQuery(self._get_base_table(paths), distinct=distinct, limit=limit, offset=offset) self._process_selection(paths, query) query.where = self._process_criteria(criteria, query) return text_type(query) def _build_cte_query(self, paths, criteria, distinct, limit, offset): step = None start, end = self._get_time_bounds(criteria) inner_paths = [SelectionObject(_Path(p)) for p in self._time_paths] outer_paths = [] index = len(inner_paths) for p in paths: if not p.get_path(): # Aggregation function without a path (e.g. COUNT(1)) outer_paths.append(p) elif p.get_path().name == COMPOSITE_TIME_FIELD: # Composite time field with extract copied = copy.deepcopy(p) copied.set_path("_intervals.start") outer_paths.append(copied) if not step or _TIME_UNITS[p.extract] > _TIME_UNITS[step]: step = p.extract else: # Remove the commands/functions from the inner query inner_paths.append(SelectionObject(p.get_path())) # Use aliases for the outer query copied = copy.deepcopy(p) copied.set_path("_main.c%d" % index) outer_paths.append(copied) index += 1 inner_query = SQLQuery(self._base_table, distinct=distinct, limit=limit, offset=offset) self._process_selection(inner_paths, inner_query) inner_query.where = self._process_criteria(criteria, inner_query) outer_query = SQLQuery(self._base_table) self._process_selection(outer_paths, outer_query, with_aliases=False) dbtype = self._db.get_type() return """ WITH RECURSIVE nums AS ( SELECT %(start)s AS value UNION ALL SELECT %(value_incr)s FROM nums WHERE value < %(end)s ) SELECT %(selection)s FROM ( SELECT value AS start, %(value_incr)s AS end FROM nums ) AS _intervals JOIN ( %(inner_query)s ) AS _main ON c0 < _intervals.end AND c1 >= _intervals.start GROUP BY %(group_by)s ORDER BY %(order)s """ % { "start": _FUNCTIONS_MAP[dbtype]["date"].format(start), "value_incr": _FUNCTIONS_MAP[dbtype]["add_date"].format("value", "1 %s" % _TIME_UNITS[step][1]), "end": _FUNCTIONS_MAP[dbtype]["sub_date"].format("TIMESTAMP '%s'" % end, "1 %s" % _TIME_UNITS[step][1]), "selection": ", ".join(outer_query.select), "inner_query": text_type(inner_query), "group_by": ", ".join(outer_query.group_by), "order": ", ".join(outer_query.order_by) } def _get_time_bounds(self, criteria): # Try finding the mainmenu criteria crit = criteria.flatten() if not crit or crit.operator != CriterionOperator.AND: raise CTETimeBoundsError() start = None end = None for operand in crit.operands: if operand.operator in (CriterionOperator.LOWER, CriterionOperator.LOWER_OR_EQUAL) and operand.left == self._time_paths[0]: end = operand.right elif operand.operator in (CriterionOperator.GREATER, CriterionOperator.GREATER_OR_EQUAL) and operand.left == self._time_paths[1]: start = operand.right if not start or not end: raise CTETimeBoundsError() return start, end def _get_primary_paths(self): # FIXME: take the whole pkey into account paths = {} for table in self._tables: if table.pkey: paths[table] = self._reverse_paths_map[(table, table.pkey[0])] return zip(*sorted(paths.items(), key=lambda x: self._tables.index(x[0]))) def execute_delete(self, criteria, paths): """Delete objects from the database based on the provided criteria.""" query = SQLQuery(self._get_base_table(paths)) query.where = self._process_criteria(criteria, query, with_aliases=False) if len(query.joined) == 1: return self._db.query("DELETE FROM %s" % query.base_table + (" WHERE %s" % query.where if query.where else "")) paths = [self._reverse_paths_map[(query.base_table, p)] for p in query.base_table.pkey] path_objects = [SelectionObject(_Path(p)) for p in paths] select_query = self.build_query(path_objects, criteria, 0, -1, 0) # We suppose other tables to be taken care of by cascading delete # An additional SELECT is necessary for MySQL # FIXME: this is not SQLite-compatible self._db.query("DELETE FROM %s WHERE (%s) IN (SELECT * FROM (%s) AS dummy)" % (query.base_table, ", ".join(query.base_table.pkey), select_query)) def _browse_data(self, data): tables = {} for path, value in data: table, attr = self._get_field_info(path.object) tables.setdefault(table, {})[attr] = value return tables def execute_insert(self, data, criteria): """Insert a single object into the database.""" ret = None ids = {} data = self._browse_data(data) if criteria: tables, paths = self._get_primary_paths() results = env.dataprovider.query(paths, criteria) if not results: return for i, table in enumerate(tables): if results[0][i] is not None: ids[table] = results[0][i] for table, values in sorted(data.items(), key=lambda x: self._tables.index(x[0])): # Handle foreign keys autoincr = False for t, rel in self._relations.get(table, {}).items(): # Only single-field primary keys supported pk = rel["src_pkey"][0] if t in ids: values[pk] = ids[t] elif pk in values: ids[t] = values[pk] else: autoincr = True self._db.query("INSERT INTO %s (%s) VALUES %%s" % (table, ", ".join(values.keys())), values.values()) if autoincr: ids[table] = self._db.get_last_insert_ident() if ret is None and table in ids: ret = ids[table] return ret def execute_update(self, data, criteria): """Update root objects matching the provided criteria in database.""" paths, values = zip(*data) query = SQLQuery(self._get_base_table(paths)) self._process_selection(paths, query, with_aliases=False) query.where = self._process_criteria(criteria, query, with_aliases=False) if len(query.joined) == 1: assign = ", ".join("%s = %s" % (query.select[i], self._db.escape(value)) for i, value in enumerate(values)) update_query = "UPDATE %s SET %s" % (query.base_table, assign) if query.where: update_query += " WHERE %s" % query.where self._db.query(update_query) return ids = {} tables, paths = self._get_primary_paths() for row in env.dataprovider.query(paths, criteria): for i, table in enumerate(tables): ids.setdefault(table, set()).add(row[i]) for table, values in self._browse_data(data).items(): if not ids.get(table): continue # FIXME: take the whole pkey into account assign = ", ".join("%s = %s" % (column, self._db.escape(value)) for column, value in values.items()) self._db.query("UPDATE %s SET %s WHERE (%s) IN %%s" % (table, assign, table.pkey[0]), ids[table]) prewikka-5.2.0/prewikka/dataprovider/parsers/0000755000000000000000000000000013726165110021253 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/parsers/criteria/0000755000000000000000000000000013726165110023055 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/parsers/criteria/__init__.py0000644000000000000000000000511413726165107025175 0ustar rootroot00000000000000# Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from lark import Lark, Transformer, v_args from lark.exceptions import LarkError from prewikka.dataprovider import Criterion, ParserError from . import grammar _grammar = Lark(grammar.GRAMMAR, start="criteria", parser="lalr") class CommonTransformer(Transformer): @staticmethod def _unescape(input, escaped): return input.replace('\\%s' % escaped, escaped) @v_args(inline=True) def dqstring(self, s): s.value = self._unescape(s.value[1:-1], '"') return s.value @v_args(inline=True) def sqstring(self, s): s.value = self._unescape(s.value[1:-1], "'") return s.value uqstring = v_args(inline=True)(text_type) path = string = operator = v_args(inline=True)(text_type) class CriteriaTransformer(CommonTransformer): def __init__(self, compile=Criterion): self._compile = compile parenthesis = v_args(inline=True)(lambda self, criterion: criterion) or_ = v_args(inline=True)(lambda self, left, right: Criterion(left, "||", right)) and_ = v_args(inline=True)(lambda self, left, right: Criterion(left, "&&", right)) not_ = v_args(inline=True)(lambda self, right: Criterion(operator="!", right=right)) criterion = v_args(inline=True)(lambda self, left, op, right: self._compile(left, op, right)) not_null = v_args(inline=True)(lambda self, path: self._compile(path, "!=", None)) def parse(input, transformer=CriteriaTransformer()): """Convert a Criterion string to a Criterion object.""" try: tree = _grammar.parse(input) except LarkError as e: raise ParserError(details=e) if transformer: return transformer.transform(tree) return tree prewikka-5.2.0/prewikka/dataprovider/parsers/criteria/grammar.py0000644000000000000000000000412113726165107025061 0ustar rootroot00000000000000# Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals GRAMMAR = r""" ?criteria: and | criteria "||" and -> or_ ?and: not | and "&&" not -> and_ ?not: criterion | "!" not -> not_ criterion: path operator value | path -> not_null | "(" criteria ")" -> parenthesis !operator: "=" | "=*" | "==" | "!=" | "!=*" | "<>" | "<>*" | "!<>" | "!<>*" | "<" | "<=" | ">" | ">=" | "~" | "~*" | "!~" | "!~*" -> operator int_: DIGIT+ float_: NUMBER path: PATH ?value: string string: (dqstring | sqstring | uqstring) SQSTRING.1: "'" ("\\'" | /[^']/)* "'" DQSTRING.1: "\"" ("\\\""|/[^"]/)* "\"" !sqstring: SQSTRING !dqstring: DQSTRING !uqstring: UNQUOTED_STRING // Normally && and || SPECIAL_CHARACTERS: "&" | "|" | "(" | ")" ESCAPED_SPECIAL_CHARACTERS: "\\" SPECIAL_CHARACTERS UNQUOTED_STRING.0: (ESCAPED_SPECIAL_CHARACTERS | /[^\s&|()]/)+ PATH: (PATHELEM ".")* PATHELEM PATHELEM: WORD ("(" PATHINDEX ")")? PATHINDEX: ("-"? DIGIT+ | DQSTRING | SQSTRING | "*") WORD: LETTER (LETTER | DIGIT | "-" | "_")* DIGIT: /[0-9]/ LETTER: /[a-z]/ %import common.NUMBER %import common.WS %ignore WS """ prewikka-5.2.0/prewikka/dataprovider/parsers/lucene/0000755000000000000000000000000013726165110022526 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/parsers/lucene/__init__.py0000644000000000000000000002167613726165107024661 0ustar rootroot00000000000000# Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import functools import re from lark import Lark, Transformer, v_args from lark.exceptions import LarkError from prewikka import error from prewikka.dataprovider import Criterion, ParserError from . import grammar _grammar = Lark(grammar.GRAMMAR, start="input", parser="lalr", keep_all_tokens=True) def _wildcard_to_regex(value): ret = "" lst = re.split("([*?])", value) for part in lst: if part == "*": ret += ".*" elif part == "?": ret += "." else: ret += re.escape(part) return len(lst), ret class LuceneEmulationError(error.PrewikkaUserError): name = N_("Lucene emulation error") message = N_("This Lucene expression cannot be emulated properly using the Criterion backend") class CommonTransformer(Transformer): @staticmethod def _unescape(input, escaped): return input.replace('\\%s' % escaped, escaped) @staticmethod def _hack(s, escaped): # We modify the internal value representation, directly accessed from value_string() s.value = CommonTransformer._unescape(s[1:-1], escaped) return s @v_args(inline=True) def uqstring(self, s): r = _wildcard_to_regex(s) if r[0] > 1: # We modify the internal value representation, directly accessed from value_string() s.value = r[1] op = "~" else: op = "<>*" return op, s string = v_args(inline=True)(lambda _, s: s) sqstring = v_args(inline=True)(lambda _, s: ("<>*", CommonTransformer._hack(s, "'"))) dqstring = v_args(inline=True)(lambda _, s: ("<>*", CommonTransformer._hack(s, '"'))) regstr = v_args(inline=True)(lambda _, s: ("~", CommonTransformer._hack(s, '/'))) class _CustomCriterion(object): def __init__(self, c): self.criterion = c class _Required(_CustomCriterion): pass class _Optional(_CustomCriterion): pass # From http://lucene.472066.n3.nabble.com/operator-precedence-and-confusing-result-td642263.html: # # Lucene's query model is based on REQUIRED, OPTIONAL, and EXCLUDED # clauses. A clause with no annotation is always OPTIONAL, and doesn't # affect matching unless there are only OPTIONAL clauses on that level. # brackets () create a subclause (note that this is OPTIONAL by # default!). AND terms are translated into REQUIRED clauses, AND NOT's # are translated into EXCLUDED clauses. Require clauses are annotated # with +'s # # A AND B OR C OR D OR E OR F # -> +A +B C D E F # -> find documents that match clause A and clause B (other clauses # don't affect matching) # # C OR D OR E OR F # -> C D E F # -> find documents matching at least one of these clauses # # A AND (B OR C OR D OR E OR F) # -> +A +(B C D E F) # -> find documents that match A, and match one of B, C, D, E, or F # # (A AND B) OR C OR D OR E OR F # -> (+A +B) C D E F # -> find documents that match at least one of C, D, E, F, or both of A # and B # # The key takeaway: once you have an AND in a grouped set of clauses, # the OR are completely irrelevant for matching. # class CriteriaTransformer(CommonTransformer): def __init__(self, compile=Criterion, default_paths=[]): self._compile = compile self._default_paths = default_paths def string_modifier(self, data): raise LuceneEmulationError def _get_fields(self, parent_field): return [parent_field] if parent_field else self._default_paths def _range(self, parent_field, from_, to, op_a, op_b): fields = self._get_fields(parent_field) return functools.reduce(lambda x, y: x | y, (self._compile(path, op_a, from_) & self._compile(path, op_b, to) for path in fields), Criterion()) def _get_criterion(self, data, field, parent_field): obj = self._tree_to_criteria(data, self._tree_to_criteria(field) or parent_field) if not isinstance(obj, Criterion): return obj.criterion return obj def _bool(self, a, op, b, parent_field=[]): a = self._tree_to_criteria(a, parent_field) b = self._tree_to_criteria(b, parent_field) if b is None or (isinstance(a, _Required) and isinstance(b, _Optional)): return a elif a is None or (isinstance(b, _Required) and isinstance(a, _Optional)): return b else: return a.__class__(Criterion(a.criterion, "&&" if isinstance(a, _Required) else op, b.criterion)) def _tree_to_criteria(self, t, parent_field=[], has_required=False): tag = getattr(t, "data", None) if not tag: return text_type(t.value) if t else None if tag == "or_": return self._bool(t.children[0], "||", t.children[2], parent_field) elif tag == "and_": return self._bool(t.children[0], "&&", t.children[2], parent_field) elif tag == "field" and t.children: return t.children[0].replace(" ", "")[:-1] elif tag == "parenthesis": _, data, _ = t.children return self._tree_to_criteria(data, parent_field).criterion elif tag == "value_string": op, value = t.children[0] ret = Criterion() for i in self._get_fields(parent_field): if i.endswith(".exact"): i = i[:-6:] op = "==" ret |= self._compile(i, op, value.value) return ret elif tag == "inclusive_range": from_, to = filter(lambda x: isinstance(x, tuple), t.children) return self._range(parent_field, from_[1], to[1], ">=", "<=") elif tag == "exclusive_range": from_, to = filter(lambda x: isinstance(x, tuple), t.children) return self._range(parent_field, from_[1], to[1], ">", "<") elif tag in "required": if len(t.children) > 1: _, field, data = t.children return _Required(self._get_criterion(data, field, parent_field)) elif tag == "excluded": if len(t.children) > 1: _, field, data = t.children return _Required(Criterion(operator="!", right=self._get_criterion(data, field, parent_field))) elif tag == "optional": field, data = t.children return _Optional(self._get_criterion(data, field, parent_field)) elif tag == "input": return self._tree_to_criteria(t.children[1], parent_field) elif t.children: return self._tree_to_criteria(t.children[0], parent_field) def transform(self, tree): return self._tree_to_criteria(Transformer.transform(self, tree)).criterion class ReconstructTransformer(CommonTransformer): def _value_string(self, vl, field=None): return vl[1] def _tree_tostring(self, t, parent_field=None): tag = getattr(t, "data", None) if tag == "value_string": return self._value_string(t.children[0], parent_field) elif tag in ("required", "excluded"): if len(t.children) == 1: return self._tree_tostring(t.children[0]) operator, field, value = t.children field = self._tree_tostring(field) return "".join([self._tree_tostring(operator), field, self._tree_tostring(value, field or parent_field)]) elif tag == "optional": field, value = t.children field = self._tree_tostring(field) return "".join([field, self._tree_tostring(value, field or parent_field)]) if not tag: if isinstance(t, tuple): return text_type(t[1]) return text_type(t) else: return "".join(self._tree_tostring(i, parent_field) for i in t.children) return "" def transform(self, tree): return self._tree_tostring(Transformer.transform(self, tree)) def parse(input, transformer=None): """Convert a Lucene string to a Criterion object.""" try: tree = _grammar.parse(input) except LarkError as e: raise ParserError(details=e) if transformer: return transformer.transform(tree) return tree prewikka-5.2.0/prewikka/dataprovider/parsers/lucene/grammar.py0000644000000000000000000000533513726165107024542 0ustar rootroot00000000000000# Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals GRAMMAR = r""" ?input: WS* criteria WS* ?criteria: operator_ | criteria WS+ operator_ -> or_ | criteria BOOL_OR operator_ -> or_ | criteria BOOL_AND operator_ -> and_ ?operator_: (optional | excluded | required) excluded: EXCLUDED _criterion? required: REQUIRED _criterion? optional: _criterion parenthesis: LPAR criteria RPAR _criterion: field (value | parenthesis) value: (inclusive_range | exclusive_range | value_string) inclusive_range: "[" WS* _string WS "TO" WS _string WS* "]" exclusive_range: "{" WS* _string WS "TO" WS _string WS* "}" value_string: _string (string_modifier)? _string: (dqstring | sqstring | regstr | uqstring) string_modifier: BOOST_MODIFIER | FUZZY_MODIFIER BOOST_MODIFIER: "^" /[0-9]+/ FUZZY_MODIFIER: "~" /[0-9]*/ SQSTRING.3: "'" ("\\'" | /[^']/)* "'" DQSTRING.3: "\"" ("\\\""|/[^"]/)* "\"" RESTRING.3: "/" ("\\/"|/[^\/]/)* "/" !sqstring: SQSTRING !dqstring: DQSTRING !regstr: RESTRING !uqstring: UNQUOTED_STRING SPECIAL_CHARACTERS: "+" | "-" | "!" | "(" | ")" | "{" | "}" | "[" | "]" | "^" | "\"" | "~" | "*" | "?" | ":" | "\\" | "&" | "|" ESCAPED_SPECIAL_CHARACTERS: "\\" SPECIAL_CHARACTERS UNQUOTED_STRING.2: (ESCAPED_SPECIAL_CHARACTERS | /[^+!(){}\[\]^\"\~:\s]/)+ field: (FIELD)? -> field FIELD.2: PATH WS* ":" WS* PATH.0: (PATHELEM ".")* PATHELEM PATHELEM.0: WORD ("(" PATHINDEX ")")? PATHINDEX.0: "-"? (DIGIT+ | UNQUOTED_STRING) WORD: LETTER (LETTER | DIGIT | "-" | "_")+ DIGIT: /[0-9]/ LETTER: /[a-z]/ BOOL_AND.1: WS+ ("&&" | "AND") WS+ BOOL_OR.1: WS+ ("||" | "OR") WS+ NOT_STR: "NOT" WS+ EXCLUDED.3: WS* ("-" | "!" | NOT_STR) REQUIRED.1: WS* "+" LPAR: "(" WS* RPAR: WS* ")" WS: /[ \t\f\r\n]/+ """ prewikka-5.2.0/prewikka/dataprovider/parsers/__init__.py0000644000000000000000000000000013726165107023360 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/plugins/0000755000000000000000000000000013726165110021255 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/plugins/idmef/0000755000000000000000000000000013726165110022341 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/plugins/idmef/__init__.py0000644000000000000000000001104513726165107024461 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from datetime import datetime import prelude from prelude import IDMEFTime, IDMEFValue from prewikka import error, idmefdatabase, usergroup, utils, version from prewikka.dataprovider import DataProviderBackend, QueryResults, QueryResultsRow, ResultObject class IDMEFResultObject(ResultObject, utils.json.JSONObject): def preprocess_value(self, value): if isinstance(value, IDMEFTime): return datetime.fromtimestamp(value, utils.timeutil.tzoffset(None, value.getGmtOffset())) return ResultObject.preprocess_value(self, value) @classmethod def from_json(cls, data): return cls(prelude.IDMEF(data["idmef_json"])) def __json__(self): return {"idmef_json": self._obj.toJSON()} class IDMEFQueryResultsRow(QueryResultsRow): __slots__ = () def preprocess_value(self, value): if isinstance(value, IDMEFTime): return datetime.fromtimestamp(value, utils.timeutil.tzoffset(None, value.getGmtOffset())) return QueryResultsRow.preprocess_value(self, value) class IDMEFQueryResults(QueryResults): __slots__ = () def preprocess_value(self, value): return IDMEFQueryResultsRow(self, value) class _IDMEFPlugin(DataProviderBackend): plugin_version = version.__version__ plugin_author = version.__author__ plugin_license = version.__license__ plugin_copyright = version.__copyright__ def __init__(self): DataProviderBackend.__init__(self) try: self._db = idmefdatabase.IDMEFDatabase(env.config.idmef_database) except Exception as e: raise error.PrewikkaUserError(N_("Initialization error"), e) def get_properties(self): return utils.AttrObj(format=self._db.getFormatName()) def _iterate_object(self, results): for ident in results: res = IDMEFResultObject(self._get_object(ident)) res.ident = ident yield res def update(self, data, criteria): paths, values = zip(*data) self._db.update(list(paths), [IDMEFValue(v) for v in values], criteria) def get(self, criteria, order_by, limit, offset): results = self._get_idents(criteria, limit, offset, order_by) return utils.CachingIterator(self._iterate_object(results)) @usergroup.permissions_required(["IDMEF_VIEW"]) def get_values(self, paths, criteria, distinct, limit, offset): # FIXME: update libpreludedb to perform this automatically? # # This allow get_values() without explicit path or criteria, like # env.dataprovider.query(["count(1)"], type="alert"), to work: if not criteria and not env.dataprovider.guess_datatype(paths, default=None): criteria = "%s.messageid" % self.type return IDMEFQueryResults(self._db.getValues(paths, criteria, distinct, limit, offset)) @usergroup.permissions_required(["IDMEF_ALTER"]) def delete(self, criteria, paths): self._db.remove(criteria) class IDMEFAlertPlugin(_IDMEFPlugin): type = "alert" plugin_name = "IDMEF Alert Plugin" plugin_description = N_("Plugin for fetching IDMEF alerts from the Prelude database") @property def _get_object(self): return self._db.getAlert @property def _get_idents(self): return self._db.getAlertIdents class IDMEFHeartbeatPlugin(_IDMEFPlugin): type = "heartbeat" plugin_name = "IDMEF Heartbeat Plugin" plugin_description = N_("Plugin for fetching IDMEF heartbeats from the Prelude database") @property def _get_object(self): return self._db.getHeartbeat @property def _get_idents(self): return self._db.getHeartbeatIdents prewikka-5.2.0/prewikka/dataprovider/plugins/log/0000755000000000000000000000000013726165110022036 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/plugins/log/__init__.py0000644000000000000000000000000013726165107024143 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/plugins/log/elasticsearch.py0000644000000000000000000000305413726165107025232 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2015-2020 CS GROUP - France. All Rights Reserved. # Author: Sélim Menouar # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import hookmanager from prewikka import version from prewikka.dataprovider.helpers.elasticsearch import ElasticsearchPlugin class ElasticsearchLogPlugin(ElasticsearchPlugin): plugin_name = "Elasticsearch Log API" plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Plugin for querying logs from Elasticsearch") type = "log" @hookmanager.register("HOOK_LOG_EXTRACT_IDMEF_HOST") def _get_idmef_host_value(self, alert): return alert.get("analyzer(-1).node.name") or alert.get("analyzer(-1).node.address(-1).address") prewikka-5.2.0/prewikka/dataprovider/plugins/__init__.py0000644000000000000000000000000013726165107023362 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/dataprovider/__init__.py0000644000000000000000000006455013726165107021725 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel Elmili # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import copy import itertools import time from datetime import datetime, timedelta from enum import Enum from prewikka import compat, error, hookmanager, pluginmanager from prewikka.utils import AttrObj, CachingIterator, json from prewikka.utils.timeutil import parser, tzutc OPERATORS = { "=": N_("Equal"), "=*": N_("Equal (case-insensitive)"), "!=": N_("Not equal"), "!=*": N_("Not equal (case-insensitive)"), "~": N_("Regular expression"), "~*": N_("Regular expression (case-insensitive)"), "!~": N_("Not regular expression"), "!~*": N_("Not regular expression (case-insensitive)"), "<": N_("Lesser than"), "<=": N_("Lesser or equal"), ">": N_("Greater than"), ">=": N_("Greater or equal"), "<>": N_("Substring"), "<>*": N_("Substring (case-insensitive)"), "!<>": N_("Not substring"), "!<>*": N_("Not substring (case-insensitive)") } COMPOSITE_TIME_FIELD = "_time_field" def PathInfo(path, value_type, operators=[], value_accept=[], type=None): assert(operators or type) if not operators: base = env.dataprovider._type_handlers[type] operators = base.get_operator_by_datatype(value_type, default=base.get_operator_by_datatype(None, default=[])) return AttrObj(path=path, field=".".join(path.split(".")[1:]), type=value_type, operators=operators, value_accept=value_accept) def PathValue(value, label=None, color=None): return AttrObj(value=value, label=label or value, color=color) def _str_to_datetime(date): if date.isdigit(): return datetime.utcfromtimestamp(int(date)) return parser.parse(date) _DATETIME_CONVERTERS = { int: datetime.utcfromtimestamp, float: datetime.utcfromtimestamp, text_type: _str_to_datetime, datetime: lambda x: x, type(None): lambda x: x } _sentinel = object() def to_datetime(date): try: dt = _DATETIME_CONVERTERS[type(date)](date) except KeyError: raise error.PrewikkaUserError(N_("Conversion error"), N_("Value %(value)r cannot be converted to %(type)s", {"value": date, "type": "datetime"})) if dt is not None and dt.tzinfo is None: # Make the datetime timezone-aware return dt.replace(tzinfo=tzutc()) return dt class DataProviderError(Exception): pass class NoBackendError(error.PrewikkaUserError): def __init__(self, type_): error.PrewikkaUserError.__init__( self, N_("Backend error"), N_("No backend available for '%s' datatype", type_) ) class InvalidPathError(error.PrewikkaUserError): def __init__(self, path, details=None): error.PrewikkaUserError.__init__( self, N_("Syntax error"), N_("Unknown path: %s", path), details=details ) class ParserError(error.PrewikkaUserError): def __init__(self, details=None): error.PrewikkaUserError.__init__( self, N_("Syntax error"), N_("Could not parse input"), details=details ) class ItemNotFoundError(error.PrewikkaUserError): pass class QueryResultsRow(CachingIterator): __slots__ = ("_parent") def __init__(self, parent, items): CachingIterator.__init__(self, items) self._parent = parent def _get_current_path_type(self): return self._parent._paths_types[len(self._cache)] def _get_current_path(self): return self._parent._paths[len(self._cache)] def _cast(self, value): type = self._get_current_path_type() try: if type is datetime: return to_datetime(value) elif type is timedelta: return timedelta(seconds=int(value)) elif type is object: return value return type(value) except (KeyError, ValueError): raise error.PrewikkaUserError(N_("Conversion error"), N_("Value %(value)r cannot be converted to %(type)s", {"value": value, "type": type})) def preprocess_value(self, value): if value is None: return None if self._parent._paths_types: value = self._cast(value) cont = [self._get_current_path(), value] list(hookmanager.trigger("HOOK_DATAPROVIDER_VALUE_READ", cont)) return cont[1] class QueryResults(CachingIterator): __slots__ = ("_paths", "_paths_types", "duration") def preprocess_value(self, value): return QueryResultsRow(self, value) class ResultObject(object): def __init__(self, obj, curpath=None): self._obj = obj self._curpath = curpath or [] def preprocess_value(self, value): return value @property def path(self): return ".".join(self._curpath) def _wrapobj(self, obj, curpath): if isinstance(obj, type(self._obj)): return self.__class__(obj, curpath) elif isinstance(obj, tuple): return CachingIterator((self._wrapobj(v, curpath[:-1] + ["%s(%d)" % (curpath[-1], i)]) for i, v in enumerate(obj))) return obj def get(self, key, default=None): value = self._obj.get(key) if value is None: return default curpath = self._curpath + [key] cont = [".".join(curpath), self.preprocess_value(value)] list(hookmanager.trigger("HOOK_DATAPROVIDER_VALUE_READ", cont)) return self._wrapobj(cont[1], curpath) def __getattr__(self, x): return self.__dict__.get(x, getattr(self._obj, x)) def __getitem__(self, key, default=None): return self.get(key, default) class DataProviderInstance(pluginmanager.PluginBase): type = None TYPE_OPERATOR_MAPPING = {} def get_values(self, paths, criteria, distinct, limit, offset): """ Retrieves data corresponding to the given paths. If criteria are given, only values matching these criteria will be retrieved. @param paths: Selected paths @type paths: list @param criteria: Search criteria @type criteria: list @param distinct: Control whether duplicate entries should be removed (True) or kept (False) @type distinct: bool @param limit: Maximum number of rows to retrieve. Note: the actual result may contain fewer entries @type limit: int @param offset: Number of entries to skip before retrieving matching rows @type offset: int @return: A result set containing the values matching the various criteria @rtype QueryResults """ raise error.NotImplementedError def get_by_id(self, id_): """Retrieve a root object by its ID.""" raise error.NotImplementedError def get(self, criteria, order_by, limit, offset): """Retrieve root objects matching the given criteria.""" raise error.NotImplementedError def delete(self, criteria, paths): """Delete objects (or, if a root path is given, subobjects) matching the given criteria.""" raise error.NotImplementedError def insert(self, data, criteria): """Insert a root object, or, if criteria are given, a subobject.""" raise error.NotImplementedError def update(self, data, criteria): """Update root objects matching the given criteria.""" raise error.NotImplementedError def get_properties(self): pass def _get_path_values(self, path): pass class DataProviderBackend(pluginmanager.PluginBase): _instances = {} _default_instance = None def __init__(self): pluginmanager.PluginBase.__init__(self) self._default_instance = DataProviderInstance() def post_load(self): pass def __getattr__(self, attr): return getattr(self._default_instance, attr) class DataProviderBase(pluginmanager.PluginBase): dataprovider_type = None dataprovider_label = None dataprovider_continuous = False TYPE_OPERATOR_MAPPING = {} def __init__(self, time_field): pluginmanager.PluginBase.__init__(self) if isinstance(time_field, tuple): self._time_field = COMPOSITE_TIME_FIELD self._start_time_field, self._end_time_field = time_field else: self._time_field = time_field self._start_time_field, self._end_time_field = time_field, time_field def post_load(self): pass def get_common_paths(self, index=False): return [] def format_path(self, path): return path.format( backend=self.dataprovider_type, time_field=self._time_field, start_time_field=self._start_time_field, end_time_field=self._end_time_field ) def format_paths(self, paths): return [self.format_path(path) for path in paths] def parse_paths(self, paths): """ Parse paths and turn them into a structure that can be used by the backend. @param paths: List of paths in natural syntax (eg. ["foo.bar", "count(foo.id)"]) @type paths: list @param type: type of backend @type type: string @return: The paths as a structure that can easily be used by the backend. """ return paths, [] def compile_criterion(self, criterion): return criterion def compile_criteria(self, criteria): return criteria def get_paths(self): raise error.NotImplementedError def get_path_type(self, path): raise error.NotImplementedError def register_path(self, path, type): raise error.NotImplementedError def get_path_info(self, path): return PathInfo(path, env.dataprovider.get_path_type(path), value_accept=self._get_path_values(path), type=self.dataprovider_type) # The following methods might be implemented by the backend or by the type itself. def _get_path_values(self, path): backend = env.dataprovider._backends.get(self.dataprovider_type) if backend: return backend._get_path_values(path) def get_properties(self): backend = env.dataprovider._backends.get(self.dataprovider_type) if backend: return backend.get_properties() def get_operator_by_datatype(self, datatype, default=None): mapping = None if self.dataprovider_type in env.dataprovider._backends: mapping = env.dataprovider._backends[self.dataprovider_type].TYPE_OPERATOR_MAPPING if not mapping: mapping = self.TYPE_OPERATOR_MAPPING return mapping.get(datatype, default) def get_indexation_path(self, path): raise error.NotImplementedError class _CriterionOperatorFamily(Enum): BOOLEAN = 0 STANDARD = 1 REGEX = 2 SUBSTRING = 3 # ["String1", StringN, "ENUM_VALUE"], Family, Negated, Case-Insensitive _CriterionOperatorList = [ (["&&", "AND"], _CriterionOperatorFamily.BOOLEAN, False, False), (["||", "OR"], _CriterionOperatorFamily.BOOLEAN, False, False), (["!", "NOT"], _CriterionOperatorFamily.BOOLEAN, True, False), # STANDARD (["=", "==", "EQUAL"], _CriterionOperatorFamily.STANDARD, False, False), (["=*", "EQUAL_NOCASE"], _CriterionOperatorFamily.STANDARD, False, True), (["!=", "NOT_EQUAL"], _CriterionOperatorFamily.STANDARD, True, False), (["!=*", "NOT_EQUAL_NOCASE"], _CriterionOperatorFamily.STANDARD, True, True), (["<", "LOWER"], _CriterionOperatorFamily.STANDARD, False, False), ([">", "GREATER"], _CriterionOperatorFamily.STANDARD, False, False), (["<=", "LOWER_OR_EQUAL"], _CriterionOperatorFamily.STANDARD, False, False), ([">=", "GREATER_OR_EQUAL"], _CriterionOperatorFamily.STANDARD, False, False), # REGEX (["~", "REGEX"], _CriterionOperatorFamily.REGEX, False, False), (["!~", "NOT_REGEX"], _CriterionOperatorFamily.REGEX, True, False), (["~*", "REGEX_NOCASE"], _CriterionOperatorFamily.REGEX, False, True), (["!~*", "NOT_REGEX_NOCASE"], _CriterionOperatorFamily.REGEX, True, True), # SUBSTRING (["<>", "SUBSTR"], _CriterionOperatorFamily.SUBSTRING, False, False), (["!<>", "NOT_SUBSTR"], _CriterionOperatorFamily.SUBSTRING, True, False), (["<>*", "SUBSTR_NOCASE"], _CriterionOperatorFamily.SUBSTRING, False, True), (["!<>*", "NOT_SUBSTR_NOCASE"], _CriterionOperatorFamily.SUBSTRING, True, True), ] class _CriterionEnum(Enum): @property def family(self): return _CriterionOperatorList[self.value][1] @property def negated(self): return _CriterionOperatorList[self.value][2] @property def case_insensitive(self): return _CriterionOperatorList[self.value][3] @property def is_regex(self): return self.family is _CriterionOperatorFamily.REGEX @property def is_boolean(self): return self.family is _CriterionOperatorFamily.BOOLEAN @property def is_substring(self): return self.family is _CriterionOperatorFamily.SUBSTRING def __json__(self): return self.name CriterionOperator = _CriterionEnum( value="CriterionOperator", names=itertools.chain.from_iterable( itertools.product(v[0], [k]) for k, v in enumerate(_CriterionOperatorList) ) ) class Criterion(json.JSONObject): def __init__(self, left=None, operator=None, right=None): json.JSONObject.__init__(self) if isinstance(operator, text_type): operator = CriterionOperator[operator] self._init(left, operator, right) def _init(self, left, operator, right): self.left, self.operator, self.right = left, operator, right def get_paths(self): res = set() if not self: return res if not self.operator.is_boolean: res.add(self.left) else: if self.left: res |= self.left.get_paths() res |= self.right.get_paths() return res def _compile(self, base, format_only=False): if not self: return copy.copy(self) if self.operator.is_boolean: left = self.left._compile(base, format_only) if self.left else None return Criterion(left, self.operator, self.right._compile(base, format_only)) left = base.format_path(self.left) if format_only: return Criterion(left, self.operator, self.right) tpl = [left, self.right] list(hookmanager.trigger("HOOK_DATAPROVIDER_VALUE_WRITE", tpl)) return base.compile_criterion(Criterion(tpl[0], self.operator, tpl[1])) @staticmethod def _value_escape(value): if isinstance(value, (int, float)): return value if isinstance(value, timedelta): return int(value.total_seconds()) if not isinstance(value, compat.STRING_TYPES): value = text_type(value) return "'%s'" % value.replace("'", "\\'") def _criterion_to_string(self, path, operator, value): if value is None: if operator == CriterionOperator.EQUAL: return "!%s" % (path) if operator == CriterionOperator.NOT_EQUAL: return path return "%s %s %s" % (path, operator.name, self._value_escape(value)) def to_string(self, noroot=False, _depth=0): if not self: return "" if self.operator.is_boolean: if self.operator == CriterionOperator.NOT: res = "!%s" % self.right.to_string(noroot, _depth + 1) else: res = " ".join((self.left.to_string(noroot, _depth + 1), self.operator.name, self.right.to_string(noroot, _depth + 1))) return res if _depth == 0 else "(%s)" % res lst = [self.left, self.operator, self.right] if noroot: lst[0] = lst[0].split(".", 1)[-1] return self._criterion_to_string(*lst) def to_list(self, type=None): if not self: return [] if self.operator.is_boolean: return (self.left.to_list(type) if self.left else []) + self.right.to_list(type) return [self] def flatten(self): if not self or not self.operator.is_boolean: return self if self.operator == CriterionOperator.NOT: operand = self.right.flatten() if operand.operator == self.operator: return operand.operands[0] else: return AttrObj(operator=self.operator, operands=[operand]) ret = AttrObj(operator=self.operator, operands=[]) for operand in (self.left.flatten(), self.right.flatten()): if operand.operator == self.operator: ret.operands += operand.operands else: ret.operands.append(operand) return ret def compile(self, type): base = env.dataprovider._type_handlers[type] return base.compile_criteria(self._compile(base)) def format(self, type): return self._compile(env.dataprovider._type_handlers[type], format_only=True) def _apply_self(self, operator, other): if not other: return self if self: self._init(copy.copy(self), operator, other) else: self._init(other.left, other.operator, other.right) return self def _apply_new(self, operator, other): if not other: return self elif not self: return other return Criterion(self, operator, other) def __str__(self): return self.to_string() def __bool__(self): return self.operator is not None def __copy__(self): return Criterion(self.left, self.operator, self.right) def __json__(self): return {"left": self.left, "operator": self.operator, "right": self.right} def __iadd__(self, other): return self._apply_self(CriterionOperator.AND, other) def __ior__(self, other): return self._apply_self(CriterionOperator.OR, other) def __iand__(self, other): return self._apply_self(CriterionOperator.AND, other) def __add__(self, other): return self._apply_new(CriterionOperator.AND, other) def __or__(self, other): return self._apply_new(CriterionOperator.OR, other) __and__ = __add__ __nonzero__ = __bool__ class DataProviderManager(pluginmanager.PluginManager): def __init__(self, autoupdate=False): pluginmanager.PluginManager.__init__(self, "prewikka.dataprovider.type", autoupdate=autoupdate) pluginmanager.PluginManager("prewikka.dataprovider.backend", autoupdate=autoupdate) self._type_handlers = {} self._backends = {} def load(self, reloading=False): loaded = set() for k in self.keys(): if reloading and not self[k].error: continue try: p = self.initialize_plugin(self[k]) except Exception: continue p.dataprovider_type = k self._type_handlers[k] = p loaded.add(p) for plugin in env.pluginmanager["prewikka.dataprovider.backend"]: if reloading and not plugin.error: continue if plugin.type not in self._type_handlers: plugin.error = N_("No handler configured for '%s' datatype", plugin.type) env.log.warning("%s: plugin loading failed: %s" % (plugin.__name__, plugin.error)) continue try: p = self.initialize_plugin(plugin) except Exception: continue if p.type in self._backends: raise error.PrewikkaUserError(N_("Configuration error"), N_("Only one manager should be configured for '%s' backend", p.type)) self._backends[p.type] = p loaded.add(p) for p in self._type_handlers.values(): if p in loaded: p.post_load() for p in self._backends.values(): if p in loaded: p.post_load() @staticmethod def _parse_path(path): tmp = path.partition('.') if not tmp[1]: return tmp = tmp[0].rpartition('(')[2] # Exclude generic paths, eg. "{backend}.{time_field}". if tmp != '{backend}': return tmp def guess_datatype(self, paths, criteria=Criterion(), default=_sentinel): res = set() for path in set(paths) | criteria.get_paths(): path = self._parse_path(path) if path: res.add(path) if len(res) != 1: if default is not _sentinel: return default raise DataProviderError("Unable to guess data type: incompatible paths") return list(res)[0] def check_datatype(self, type, *args, **kwargs): if not type: type = self.guess_datatype(*args) if type not in self._type_handlers or (kwargs.get("require_backend", True) and type not in self._backends): raise NoBackendError(type) return type def _normalize(self, type, paths=None, criteria=None): if paths is None: paths = [] if criteria is None: criteria = Criterion() else: criteria = copy.copy(criteria) type = self.check_datatype(type, paths, criteria) parsed_paths = paths paths_types = [] plugin = self._type_handlers[type] paths = plugin.format_paths(paths) parsed_paths, paths_types = plugin.parse_paths(paths) for c in filter(None, hookmanager.trigger("HOOK_DATAPROVIDER_CRITERIA_PREPARE", type)): criteria += c return AttrObj(type=type, paths=paths, parsed_paths=parsed_paths, paths_types=paths_types, criteria=criteria.compile(type)) @staticmethod def _check_limit_offset(limit, offset): if limit < -1 or limit > 2**31 - 1: raise DataProviderError("Limit parameter out of bounds") if offset < 0 or offset > 2**31 - 1: raise DataProviderError("Offset parameter out of bounds") def query(self, paths, criteria=None, distinct=False, limit=-1, offset=0, type=None, **kwargs): self._check_limit_offset(limit, offset) o = self._normalize(type, paths, criteria) start = time.time() results = self._backends[o.type].get_values(o.parsed_paths, o.criteria, distinct, limit, offset, **kwargs) results.duration = time.time() - start results._paths = o.paths results._paths_types = o.paths_types return results def get_by_id(self, type, id_): return self._backends[type].get_by_id(id_) def get(self, criteria=None, order_by=["{backend}.{time_field}/order_desc"], limit=-1, offset=0, type=None): self._check_limit_offset(limit, offset) o = self._normalize(type, order_by, criteria) return self._backends[o.type].get(o.criteria, o.paths, limit, offset) def delete(self, criteria=None, paths=None, type=None): o = self._normalize(type, paths, criteria) return self._backends[o.type].delete(o.criteria, o.parsed_paths) @staticmethod def _resolve_values(paths, values): for tpl in zip(paths, values): tpl = list(tpl) list(hookmanager.trigger("HOOK_DATAPROVIDER_VALUE_WRITE", tpl)) yield tpl def insert(self, data, criteria=None, type=None): paths = data.keys() o = self._normalize(type, paths, criteria) return self._backends[o.type].insert(self._resolve_values(o.parsed_paths, data.values()), o.criteria) def update(self, data, criteria=None, type=None): paths = data.keys() o = self._normalize(type, paths, criteria) return self._backends[o.type].update(self._resolve_values(o.parsed_paths, data.values()), o.criteria) def get_types(self, public=False, require_backend=True): for k, v in self._type_handlers.items(): if require_backend and k not in self._backends: continue if (not public) or v.dataprovider_label: yield k def has_type(self, wanted_type): return wanted_type in self._backends def get_properties(self, type): return self._type_handlers[type].get_properties() def get_label(self, type): return self._type_handlers[type].dataprovider_label def format_path(self, path, type=None): if not type: type = self.guess_datatype([path]) return self._type_handlers[type].format_path(path) def register_path(self, path, path_type, type=None): if not type: type = self.guess_datatype([path]) return self._type_handlers[type].register_path(path, path_type) def get_paths(self, type): return self._type_handlers[type].get_paths() def get_common_paths(self, type, index=False): return self._type_handlers[type].get_common_paths(index) def get_path_info(self, path, type=None): type = self.check_datatype(type, [path], require_backend=False) return self._type_handlers[type].get_path_info(path) def get_path_type(self, path, type=None): type = self.check_datatype(type, [path], require_backend=False) return self._type_handlers[type].get_path_type(path) def get_operator_by_datatype(self, type, datatype, default=None): return self._type_handlers[type].get_operator_by_datatype(datatype, default=None) def get_indexation_path(self, path): type = self.guess_datatype([path]) return self._type_handlers[type].get_indexation_path(path) def is_continuous(self, type): # Whether data can be interpolated (e.g. for metric-type dataproviders) return self._type_handlers[type].dataprovider_continuous prewikka-5.2.0/prewikka/dataprovider/grammar.py0000644000000000000000000000375613726165107021615 0ustar rootroot00000000000000# coding: utf-8 # Copyright (C) 2019-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals GRAMMAR = r""" selection: (function | path) [extract] [commands] extract: ":" EXTRACT commands: "/" COMMAND ("," COMMAND)* ?function: FUNCTION "(" function_args ")" function_args: _function_arg ("," _function_arg)* _function_arg: path | function | const COMMAND: "group_by" | "order_desc" | "order_asc" EXTRACT: "year" | "month" | "yday" | "mday" | "wday" | "hour" | "min" | "sec" | "msec" | "usec" | "quarter" FUNCTION.2: "count" | "min" | "max" | "sum" | "avg" | "timezone" | "distinct" int_: DIGIT float_: NUMBER path: PATH const: DIGIT | NUMBER | string string: (dqstring | sqstring) SQSTRING.1: "'" ("\\'" | /[^']/)* "'" DQSTRING.1: "\"" ("\\\""|/[^"]/)* "\"" !sqstring: SQSTRING !dqstring: DQSTRING PATH.1: (PATHELEM ".")* PATHELEM PATHELEM: WORD ("(" PATHINDEX ")")? PATHINDEX: ("-"? DIGIT+ | DQSTRING | SQSTRING) WORD: (LETTER | "_") (LETTER | DIGIT | "-" | "_")* DIGIT: /[0-9]/+ LETTER: /[a-z]/ %import common.NUMBER %import common.WS %ignore WS """ prewikka-5.2.0/prewikka/dataprovider/idmef.py0000644000000000000000000002026513726165107021245 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import datetime import prelude from prewikka import crontab, hookmanager, renderer, utils, version from prewikka.dataprovider import DataProviderBase, Criterion, CriterionOperator, ParserError, PathValue, InvalidPathError class _IDMEFPath(prelude.IDMEFPath): def __init__(self, path): try: prelude.IDMEFPath.__init__(self, path) except RuntimeError as e: raise InvalidPathError(path, details=e) class _IDMEFCriterion(prelude.IDMEFCriteria): def __init__(self, criteria): try: prelude.IDMEFCriteria.__init__(self, criteria) except RuntimeError as e: raise ParserError(details=e) class _IDMEFProvider(DataProviderBase): plugin_version = version.__version__ plugin_author = version.__author__ plugin_license = version.__license__ plugin_copyright = version.__copyright__ TYPE_OPERATOR_MAPPING = { text_type: ("=", "=*", "!=", "!=*", "~", "~*", "!~", "!~*", "<>", "<>*", "!<>", "!<>*"), bytes: ("=", "!=", "<>", "!<>", "<", ">", "<=", ">="), None: ("=", "!=", "<", ">", "<=", ">=") } def __init__(self): DataProviderBase.__init__(self, "create_time") def get_path_type(self, path): _typemap = { prelude.IDMEFValue.TYPE_DATA: bytes, prelude.IDMEFValue.TYPE_STRING: text_type, prelude.IDMEFValue.TYPE_TIME: datetime.datetime, prelude.IDMEFValue.TYPE_FLOAT: float, prelude.IDMEFValue.TYPE_DOUBLE: float, prelude.IDMEFValue.TYPE_ENUM: text_type, prelude.IDMEFValue.TYPE_INT8: int, prelude.IDMEFValue.TYPE_UINT8: int, prelude.IDMEFValue.TYPE_INT16: int, prelude.IDMEFValue.TYPE_UINT16: int, prelude.IDMEFValue.TYPE_INT32: int, prelude.IDMEFValue.TYPE_UINT32: int, prelude.IDMEFValue.TYPE_INT64: int, prelude.IDMEFValue.TYPE_UINT64: int, prelude.IDMEFValue.TYPE_CLASS: object, } return _typemap[prelude.IDMEFClass(path).getValueType()] def _get_paths(self, rootcl): for node in rootcl: if node.getValueType() == prelude.IDMEFValue.TYPE_CLASS: for subnode in self._get_paths(node): yield subnode else: yield node.getPath() @staticmethod def _value_adjust(operator, value): if not operator.is_substring: return value value = text_type(value) has_wildcard = utils.find_unescaped_characters(value, ["*"]) if has_wildcard: return value return "*%s*" % value @staticmethod def _path_adjust(path): """ Automatically add indexes to IDMEF listed fields FIXME: to be removed when libpreludedb supports != for listed fields """ fields = [] for elem in path.replace("(*)", "").split("."): p = ".".join(fields + [elem]) if elem == "analyzer": fields.append("%s(-1)" % elem) elif _IDMEFPath(p).isAmbiguous(): fields.append("%s(0)" % elem) else: fields.append(elem) return ".".join(fields) def compile_criterion(self, criterion): if criterion.right: criterion.right = self._value_adjust(criterion.operator, criterion.right) elif criterion.operator == CriterionOperator.EQUAL: criterion = Criterion(criterion.left, "==", None) if _IDMEFPath(criterion.left).getValueType() == prelude.IDMEFValue.TYPE_STRING: criterion |= Criterion(criterion.left, "==", "''") if criterion.operator.negated and _IDMEFPath(criterion.left).isAmbiguous(): criterion.left = self._path_adjust(criterion.left) return DataProviderBase.compile_criterion(self, criterion) def compile_criteria(self, criteria): if criteria: return _IDMEFCriterion(criteria.to_string()) def _get_path_values(self, path): klass = prelude.IDMEFClass(path) if path == "alert.assessment.impact.severity": return [ PathValue("high", label=N_("High"), color=renderer.RED_STD), PathValue("medium", label=N_("Medium"), color=renderer.ORANGE_STD), PathValue("low", label=N_("Low"), color=renderer.GREEN_STD), PathValue("info", label=N_("Informational"), color=renderer.BLUE_STD), ] elif klass.getValueType() == prelude.IDMEFValue.TYPE_ENUM: return [PathValue(v) for v in klass.getEnumValues()] else: return None class IDMEFAlertProvider(_IDMEFProvider): plugin_name = "IDMEF Alert provider" plugin_description = N_("Provides an API to fetch IDMEF alerts") dataprovider_label = N_("Alerts") def get_paths(self): return self._get_paths(prelude.IDMEFClass("alert")) def get_common_paths(self, index=False): return [ (N_("Classification"), "alert.classification.text"), (N_("Source IP"), "alert.source(0).node.address(0).address" if index else "alert.source.node.address.address"), (N_("Source port"), "alert.source(0).service.port" if index else "alert.source.service.port"), (N_("Target IP"), "alert.target(0).node.address(0).address" if index else "alert.target.node.address.address"), (N_("Target port"), "alert.target(0).service.port" if index else "alert.target.service.port"), (N_("Analyzer name"), "alert.analyzer(-1).name" if index else "alert.analyzer.name") ] @crontab.schedule("alert", N_("Alert deletion"), "0 0 * * *", enabled=False) def _alert_cron(self, job): config = env.config.cron.get_instance_by_name("alert") if config is None: return criteria = Criterion() age = int(config.get("age", 0)) now = utils.timeutil.utcnow() for severity in (None, "info", "low", "medium", "high"): days = int(config.get(severity, age)) if days < 1: continue criteria |= (Criterion("alert.assessment.impact.severity", "==", severity) & Criterion("alert.create_time", "<", now - datetime.timedelta(days=days))) if not criteria: return if not list(hookmanager.trigger("HOOK_CRON_DELETE", criteria, "alert")): env.dataprovider.delete(criteria, type="alert") class IDMEFHeartbeatProvider(_IDMEFProvider): plugin_name = "IDMEF Heartbeat provider" plugin_description = N_("Provides an API to fetch IDMEF heartbeats") dataprovider_label = N_("Heartbeats") def get_paths(self): return self._get_paths(prelude.IDMEFClass("heartbeat")) @crontab.schedule("heartbeat", N_("Heartbeat deletion"), "0 0 * * *", enabled=False) def _heartbeat_cron(self, job): config = env.config.cron.get_instance_by_name("heartbeat") if config is None: return days = int(config.get("age", 0)) if days < 1: return criteria = Criterion("heartbeat.create_time", "<", utils.timeutil.utcnow() - datetime.timedelta(days=days)) if not list(hookmanager.trigger("HOOK_CRON_DELETE", criteria, "heartbeat")): env.dataprovider.delete(criteria, type="heartbeat") prewikka-5.2.0/prewikka/dataprovider/log.py0000644000000000000000000000355113726165107020741 0ustar rootroot00000000000000# Copyright (C) 2014-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import datetime from prewikka import version from .pathparser import PathParser _LOG_PATHS = {"log": {"timestamp": datetime.datetime, "message": text_type, "raw_message": text_type, "_raw_query": text_type } } class LogAPI(PathParser): plugin_name = "Log API" plugin_version = version.__version__ plugin_author = version.__author__ plugin_license = version.__license__ plugin_copyright = version.__copyright__ plugin_description = N_("Provides an API to fetch logs") dataprovider_label = N_("Logs") def __init__(self): PathParser.__init__(self, _LOG_PATHS, "timestamp") def get_common_paths(self, index=False): return [ (N_("Message"), "log.message"), (N_("Host"), "log.host"), (N_("Program"), "log.program"), (N_("Timestamp"), "log.timestamp") ] prewikka-5.2.0/prewikka/dataprovider/pathparser.py0000644000000000000000000001712013726165107022326 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import datetime import re from lark import Lark, v_args from prewikka.dataprovider.parsers.criteria import CommonTransformer from prewikka.dataprovider import COMPOSITE_TIME_FIELD, DataProviderBase, InvalidPathError from prewikka.utils import cache from enum import Enum from . import grammar # This regex does not support strings with backslash escaping, i.e. field("a'b\"c").value STRING_INDEX_REGEX = r"""\((["'])((?:(?!\1).)+)\1\)""" INTEGER_INDEX_REGEX = r"\((\d+)\)" INDEX_REGEX = "%s|%s" % (STRING_INDEX_REGEX, INTEGER_INDEX_REGEX) class SelectionType(Enum): PATH = 0 FUNCTION = 1 CONSTANT = 2 class _SelectionObject(object): type = None @property def is_path(self): return self.type == SelectionType.PATH @property def is_constant(self): return self.type == SelectionType.CONSTANT @property def is_function(self): return self.type == SelectionType.FUNCTION class _Function(_SelectionObject): type = SelectionType.FUNCTION def __init__(self, name, args): self.name = name self.args = args self._rtype = {"avg": float, "count": int, "timezone": datetime.datetime}.get(name) def get_path(self): for i in self.args: if isinstance(i, _Path): return i elif isinstance(i, _Function): r = i.get_path() if r: return r def set_path(self, path): for i in self.args: if isinstance(i, _Path) or isinstance(i, _Function): r = i.set_path(path) if r: return r return False class _Path(_SelectionObject): _rtype = None type = SelectionType.PATH def __init__(self, name): self.set_path(name) self.rtype = None def __str__(self): return self.path def set_path(self, path): self.path = path self.klass, self.name = path.rsplit(".", 1) return True class _Constant(_SelectionObject): _rtype = str type = SelectionType.CONSTANT def __init__(self, value): self.value = value def __str__(self): return str(self.value) class SelectionObject(object): def __init__(self, obj, extract=[], commands=[]): self.object = obj self.extract = extract self.commands = commands self.rtype = int if self.extract else obj._rtype def get_path(self): if self.object.type == SelectionType.PATH: return self.object else: return self.object.get_path() def set_path(self, path): return self.object.set_path(path) class _SelectionTransformer(CommonTransformer): def _get_rtype(self, fname): return {"avg": float, "count": int, "timezone": datetime.datetime}.get(fname) @v_args(inline=True) def function_args(self, *args): return args @v_args(inline=True) def function(self, fname, args): return _Function(fname, args) @v_args(inline=True) def path(self, s): return _Path(s) @v_args(inline=True) def const(self, s): return _Constant(s) @v_args(inline=True) def selection(self, data, *args): extract = None commands = [] for i in args: if i.data == "extract": extract = text_type(i.children[0]) elif i.data == "commands": commands = [text_type(j) for j in i.children] return SelectionObject(data, extract, commands) _GRAMMAR = Lark(grammar.GRAMMAR, start="selection", parser="lalr", transformer=_SelectionTransformer()) class PathParser(DataProviderBase): def __init__(self, valid_paths, time_field='create_time'): DataProviderBase.__init__(self, time_field) self.path_types = {} self._valid_paths = {} self._indexes = {} for klass, field in valid_paths.items(): for name, path_type in field.items(): public = (name[0] != "_") index = False if isinstance(path_type, tuple): path_type, index = path_type self.register_path("%s.%s" % (klass, name), path_type, public, index) def post_load(self): DataProviderBase.post_load(self) if self._time_field == COMPOSITE_TIME_FIELD: # The dataprovider_type attribute is not defined in the __init__ yet self.register_path("%s.%s" % (self.dataprovider_type, self._time_field), datetime.datetime, public=False) def get_paths(self): return sorted(self.path_types.keys()) def register_path(self, path, path_type, public=True, index=False): left_path, key = path.rsplit('.', 1) self._valid_paths.setdefault(left_path, {})[key] = path_type if public: self.path_types[path] = path_type if index: self._indexes[left_path] = key def get_path_type(self, path): try: return self.path_types[self.unindex_path(path)] except KeyError: raise InvalidPathError(path) @staticmethod def unindex_path(path): return re.sub(INDEX_REGEX, "", path) def _check_path(self, klass, attribute): # Handle functions without an actual path, eg. "count(1)". if klass is None and attribute is None: return if attribute not in self._valid_paths.get(self.unindex_path(klass), {}): raise InvalidPathError("%s.%s" % (klass, attribute)) def _get_path_rtype(self, selection, path): rtype = selection.rtype if rtype: return rtype return self._valid_paths[path.klass][path.name] @cache.request_memoize("pathparser") def _parse_path(self, path): selection = _GRAMMAR.parse(path) path = selection.get_path() if path: self._check_path(path.klass, path.name) return selection, self._get_path_rtype(selection, path) else: return selection, selection.rtype def parse_paths(self, paths): parsed_paths = [] types = [] for path in paths: parsed_path, rtype = self._parse_path(path) types.append(rtype) parsed_paths.append(parsed_path) return parsed_paths, types def compile_criterion(self, criterion): left_path, key = criterion.left.rsplit('.', 1) self._check_path(left_path, key) return criterion def get_indexation_path(self, path): # Handle path indexation by string klass = self.unindex_path(path).rsplit('.', 1)[0] try: return "%s.%s" % (klass, self._indexes[klass]) except KeyError: raise InvalidPathError(path) prewikka-5.2.0/prewikka/dataprovider/utils.py0000644000000000000000000000413713726165107021321 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Abdel ELMILI # Author: François POIROTTE # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from datetime import datetime from prewikka import error, utils def _get_yday(date): return date.timetuple().tm_yday _EXTRACT_TO_DATETIME = { "year": "year", "month": "month", "yday": _get_yday, "mday": "day", "wday": datetime.weekday, "hour": "hour", "min": "minute", "sec": "second" } def extract_from_date(date, extract): """Extracts and returns the value of a specified datetime field from a datetime. """ if not isinstance(date, datetime): raise error.PrewikkaUserError(N_("Invalid operation"), N_("Extraction is supported only for date fields")) attr = _EXTRACT_TO_DATETIME[extract] return attr(date) if callable(attr) else getattr(date, attr) def apply_timezone(date, tz): """Returns a datetime object which is equivalent to the given datetime converted to the given timezone. """ if not date.tzinfo or (date.tzinfo and date.tzinfo.utcoffset(date) is None): # date is a naive datetime date = date.replace(tzinfo=utils.timeutil.tzutc()) return date.astimezone(tz) prewikka-5.2.0/prewikka/htdocs/0000755000000000000000000000000013726165110016374 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/css/0000755000000000000000000000000013726165110017164 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/css/images/0000755000000000000000000000000013726165110020431 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/css/images/ui-bg_glass_55_fbf9ee_1x400.png0000644000000000000000000000051713726165107025731 0ustar rootroot00000000000000PNG  IHDRAbKGD X pHYsHHFk>IDATH! AblA1{VY0ixxvDK_O9 aՔ}^JaȌ0bvBA$,Q"_44=SqcyEIW IDAT(ch`ph4i%tEXtdate:create2017-03-16T23:57:46+00:00@ta%tEXtdate:modify2017-03-16T23:57:46+00:001)٥IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-bg_glass_75_dadada_1x400.png0000644000000000000000000000040613726165107025766 0ustar rootroot00000000000000PNG  IHDRDbKGD1 pHYsHHFk>HIDAT8cxa"[n{1qcpo"? 3}`xR1s?^^bxuu)뉣hW%R|%tEXtdate:create2017-03-16T23:57:47+00:00j%tEXtdate:modify2017-03-16T23:57:47+00:00^IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-bg_glass_75_e6e6e6_1x400.png0000644000000000000000000000040613726165107025570 0ustar rootroot00000000000000PNG  IHDRDbKGD1 pHYsHHFk>HIDAT8cx0Fѳg ύax1e&ë8! obަ2fx#3ǵ >QD @$.5o%tEXtdate:create2017-03-16T23:57:46+00:00@ta%tEXtdate:modify2017-03-16T23:57:46+00:001)٥IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-bg_glass_95_fef1ec_1x400.png0000644000000000000000000000051413726165107025723 0ustar rootroot00000000000000PNG  IHDRAbKGD X pHYsHHFk>IDATHϱ a\!VJ#XЋD} .f>>Pկxxqжuɚqf+6[\‡כWT4r6:]V:, (Ŵ8yG-(d H%tEXtdate:create2017-03-16T23:57:46+00:00@ta%tEXtdate:modify2017-03-16T23:57:46+00:001)٥IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png0000644000000000000000000000043013726165107027572 0ustar rootroot00000000000000PNG  IHDRd2bKGD1 pHYsHHFk>ZIDATcx|Nhã 2'IDATx{he}?g{1)]K&qqU4kbiKR(HBP(IvJ_ӮIV@nB5iNiGjq& ~A#QrX'9:ܫ{3E{=yo~3g~Mp& 1Xxh8<#dlЅMx1&$5 ~V c$ױ, ƹiN:Z ߊY>"BH!-Cu8t}8!B *OF.[aͲlB&1h>M]hN4MAb̐!(hE15jձcO<6e7,eS(fo16+3y JR|{^3^{88 ~' pxh8<4 g2n6e̘{QpӀPAiۺߖfS(D'L6=T:sfq羀l.cI ǧ=iM>ڠLN{U&&{uo..4~# pxh8<4 gÛp^i/0TWcQ @)yu}`LUc%Tȥ AR@?P-`BKl bZ}Ш͢uJ%U]K2e tsY@,ee豅rjcܭsMn0 AmPy DK(5,lN&bDmrwYDVte$謷 L[C0O P&0+; g3@ pxh8<4Y`OFZ!x#~ Gk @3K@:>PRMA|e]KgF.BtlOY d!(vVX%m#I[RR`2T HwYu=bYPEcU%&@Ĺ]}qo7*GL eQX5U-³8| _ݟ5\5pVH^\ Fآaa5l14[#boP1EiswMJ'5T06B|I,b`ՈPXkB$[-EOHt |3D(id9N6@x/ؠm(#wjPt/Zobq%[:3^~a55 |E닃^E$L-_s, ߫㕔Ņ& _,# F}&.<4 gOrdh9M7L(5꓂.?M(stզ-?:[ڧCr]'YB2lC| leXSpG0KcI~u L0/yLtrI?R%-wǷh$LJV ͿӢ ,g x_7l4* uM+@x<}ãq><#`i :=*ۿ{)_8hspCWғK`B]H"}_PNtQl1YQh+&?x5: ֘aYҭ=\En.YʸJE%uTj5F'b;[vט4u6]lkw3÷, : %& [|||Yiq`:qXc2+u|~/wrz[j-I># ,9Q:#,25@@%S@@6ÅJ{6{)hW~q]t<+|'0Oa 63UHWl;'Z9Z\oO嵁eeƢ[odarEm&ʧ3m6=g^Sx Hjmi(v ۈ{.h_%8nF7y{OFS5:/աWPH+bGx/9IYy.MtTeە,ѿ- Red ;Ә:9kT5mEG|\Wuǣ@^LE 4 gy ; J'U䐎N׷< p2mӫ.ZZ5< V ,p3w=~3jǿě#ʭ|Sfyk=Cn 1]C'I_O*,J՞D\\I}E\$M(E\߮?ƫw NJEb6tz:-?Bp ?XJ $xQJ}!#Ո2Ht!VɽV\'Y366YuJOAa[5e]p9=7t_y?OS_iT<͛32N묳}jHQ RTȢ nfݮ~+ciQ < Ma=|* $@'ԌǕqUO;5~@eI29w" O~ssk{‰$m>v z^2vow` a4cM Cb>q:o=-p`_2 ng:6KXV,2Ǿ6 g3@ śsaR WWB g-N;F[ՒaAVLF<-m VbMC 7K)XPy s~=<ܒ{x!=ÃqRl]/ 0l)'}#^tX孋t8FCY$)PUBE(~ҞV2^*SLHlS'IA[ Zx-V"ȥJ+ \|5uWnLJkܟ(00JyꞄafg6 g3@Ñg[}ZQk?ҳ=zI$ Т:9FWmx:\(W+eF9,*!GhDL8[vo)AaK5S/)^c(WHNW8Tr=opp]MCO?* D΢Ob/hs0ڜb91C9-oۿԗuQFc|W%@HB29/DxD`U:Ƈgi"`%ᄽ t E`t62k)PEѿO,?k_yh(/=@u g3@v@]<]~WD`.f~oʈNVA߈եM ^yMQ|ߛ^-{o~>wЃ (gXץi&X uDU͕l  ғޥߞkPHHCJ~S@O ׋ѓy7 k {25ofϫo{'!'Z%q*)gC\#\'0 P_WL7&AlJ\ Zp, Yxjc O(6zIV u:גTDO9ׄQ<*y =2~/?J,WJQW>Wu?#G/4"K{㧏',Iҟ综E;|Rݠ~W7i86 pxh8<4 r<}8 kGo;uCPv)A<$ց;{l #`FC!f Ӆ/`7(0R!99z@%!/m]AdhvG3@ pxh8<4{P/ 3@} B&^16{. ߠaQo 2lmt!\%@X?5ճa~ ʠM65wka)TF_ 2$x5_9!VxRd1!}'`$Uԇr? Q `7`.k_VzԄp]]GOLXCk3%tEXtdate:create2016-07-13T10:21:59+00:00%tEXtdate:modify2016-07-13T09:26:54+00:00͠tEXtSoftwareAdobe ImageReadyqe<IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-icons_2e83ff_256x240.png0000644000000000000000000001070513726165107024765 0ustar rootroot00000000000000PNG  IHDRIJPLTE..........................................................................................oYtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2016-07-13T10:21:59+00:00%tEXtdate:modify2016-07-13T09:26:54+00:00͠tEXtSoftwareAdobe ImageReadyqe<IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-icons_454545_256x240.png0000644000000000000000000001552013726165107024542 0ustar rootroot00000000000000PNG  IHDREr@bKGDE;- pHYsHHFk>mIDATx{leG}?gK$U!>T؈Ji6A"VR%;"*UP) /zRJFQP zBQHVU5sμ9^3ߕ{~7s7<.` cAb/@[VD03AX90N_B &>~> c;abDߎEQz'kMayԉ 6!:u::@RŤByDD'L-f]Sq!f SQ&S7MCr==3dJ{fZS0Ms:0K٦gʿ&HU=mc4i?UĔGU4hcQb]!hLW/  @pxh8~|AQf?ێ1f¸=uQGJHpPϠIw״m췥ԧ>2"WÓP&{nT:sfqH@.cI ~Ss+^|Bn29 dH]v-ˌ-meh>q&تg 9x#cn~!pxh84^/ o #Z@S^4 KZKPd9C@F[,a+]8vKqHlw9ק84KBץ|&#[\C`R!:F zC6)AT1wU.Iҗ!4ig3wE:q7n0uAmPy TK(5ͬlNæbTrwDV]te47 L[C0P&0++  @pxh84Y`OEZj,*-E)e{U, \uoV: `omKet_WOdW3Z Քrv|~^g`jycp*fb]M59.LNq+%ۯ0vccJEM5kk#I<x_ I#0Dw4xh84^/ ^c drDM{wQte{^`br./M:0գ*z`]|SB(e)h͎/Vܮ"aO!o ,u^Љ^=zt`WeCCM Qϱo0q%Uo?<@6HG/uAQ-_u||ִ*2lٍuG@ j !Br qL!*)h.V{3-!w$dP*/P[ t1l3hlyp0bgL} 3$%\/.)TwQ"uK7d+2! @pxh84'aY$mf6lB'.D Рx7SxtIe We}d0RW^ݢ0](U݋Tx|T|@v^Df׹Lb(2H0n8;_QO}D&3{YWw5*e˗?̖G :H iZӖ)/MP(:!/|B[i:Gf L`~:z$aa^ʭ|P- kbݞ<ەL&xJAABȼHvᑢ[ySəwNJuy %pw0_a"zx 3i1|= @%JWAm\ lXm9+()S orro*E`Z1&=ޗg!Rt<bfa?qh'y'ry#\& o+Ԫ|Y%_Hp"k1*ɫU[&x9xAsmfe<_7;y6mi :[)EB7̰8fCH`⾿h)}(%m'& ;(ݚ!{:^R@NKү"*<V敡=oh~q+`6IiI<#Z=^IE\`0]1%DA^a0f,c %[Gxh84^/rdh9M7L)-ӂ-?K(stբh-?:[ڧCr]G(YB3|C| leXW_xV8ƊbbQ7V4J]l!= D ?'a`^aq8:-OYPxۀ֝X5Q"GִW} I>ȓclpVZM_gڰCveG{<_d0՗eN%NyƍȄp~Ú/kn|(G#.s9Jۇl [6ɻ&.X{SDf†< y?O~ƅDP*~bgcos{;'Z9Z.O孁e U~?Ӆ1N3ڶD(1GxxkSHI~ی?Ok,i(ׁۈ{.h_5؋nF70QOS5:'/աJr .KNwuer>n-U$U`Iv%.AUed ;Ә:+a&XĎ y Gс "4pxh84^ @d6((Ԕ{C::[>H, ɴNVNhr.~NZ`3᝼KQ|$%t!Vn%=*7fg(m!f y"kI6Y/eZٳ+zg6W8ɦbQ%y{9Ï*ŕ#7b-tX͕8ynO{]!ټ*\ (p2.Hٙd.^Z(N &l2&k U&ף#~.7658A7}P:BlkU[8)jw0$W !s\ QFn(qRK:'X@=$ x|5:@]2Si.& $` 8tS =&[#߫U3Wҳq ^H{➇Z4"AH#U0+̱1Ɏ;O9"DE C+nU:|a ɔM|?HW1$~=kUџVVl{7 ^;<,t[T"3SU9l˾Hx^&a@)E&<I?U7xG4c *i 5)ñ>wHf5[qO.d&J_~W\`G{ |-e/Чkd E( Niv=C` ̲Z+%m )s!ī6FeiN%O*㪞v,s@%4tS/Ѓ (gX7i&X 5WJ"*V J6s{IwoO_5~YXw(R!m)^'Dɸ5=@+~jyQ`O`$D`H_BT#%].XxDѫOR2E\K"R\T|:mO x*y =2~/?J,+%q Wޛ3?ܕ? ^e +RoҎ5س~oBo l84^/  @!/ONGۮ2t]С8cݮ5z=7ˮg@/aE[y#3#z7L.| (cRcSmQ$6ץ{ Da{T_j84^/  @ñ`/_g "d`ɾ0 { Cj_9jDՋa~? dc[0*a,& 0&+ OB4!1~Ix>8c&G)jI=@5@v&J?QlÇ@Q?^%tEXtdate:create2016-07-13T10:21:59+00:00%tEXtdate:modify2016-07-13T09:26:54+00:00͠tEXtSoftwareAdobe ImageReadyqe<IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-icons_888888_256x240.png0000644000000000000000000001552713726165107024576 0ustar rootroot00000000000000PNG  IHDREr@bKGDI( pHYsHHFk>tIDATx{le}?g kuJ>DC^QMH*MU h(*$HR*j D])Ż(M6F6!6- xIi- HN8suιgf73ƣ7 x ^/2&v&v^DL l6I-o?cnD Iye#d0+03~0g'LV[RC:B~()$qvXuB@E@`HNG`TA%=]qAwJ)u)9:e9d`V0A{=BS*ڦ SgF A -(DR˷@"g'U,eSwʿj*)l[.HLyϰ9jaI6MR~~ nGٕ3  @pxh84~=@>(mE3a\`~=uQ[f3WAioK}3wէgV,jn2*ߕmM] y=xn"co.L"7]EC:dHzE@W.f+^eƦ6vռE4O`̴.)l :7){_Я~"pxh84^/ / #\@S^T0sZs1J1Pr hwVEgSTQ5[ \BO `+˾>}\6/0kg1[ KhlXʿ_Z^IA^N4vOW=%i^<9tf 2СBHg6!u\ҭZ&蒶 2s U]iT ]Uaq;]A :rG-3<Fn*ݴTݯ 4< ; @pxh84^ysh,ux$\j"Z-moSJ9{ e˹[ \fָұy2LT0K@9ԼŢ=?ХB=c"vT6 Tokza9Ts&6ոv }3':[5),xU!҃@}U kc ꈡY,]`&߬('u*^v Owu?}2&CȖr}ݾ^g[`yc*9s"f_b uuT?Mf  eۏ0evbcJEM%6PolM`n ~Esչdj|z)miO q/{کJqAGpxh84^a+ ʥ5݃F+Y&{˾I z\eXoJ}HȯiW)~nm߮ɞhl*7TP3kXJ7R""NXU}ٔއA/(qW\v6$2 -˶E zdj0u]PT{[:>>LDkZYֺ14ZCWUbd12zBY$i".~Ai=Œ ۪>EAIb\Ϋ c6OSB\ɅJ#" REȰ_'I.aluI YX^/  @=h$i37[d:Qu!ZtwUl~FŻbkK"$-c.3@,y;i-JӉR޽H!ɷjN;LdwEdp fO,jTq+ 򩸹h[@Vef6KVx\b|l}_$U+W!?o[yB(p3 r_5P2ݚla˱ *xGXG$`W~9?r+y -kd.@ <]#U\Z, W4Ig9L1s aRO^.P(>K\c6m^um Qlg"y[өD/[V*3谨Xm@[qX#r,a5 kLK"0񢐻(qAOVPU j(iJlWq li xS T!sXD@s 9ky8\aY"rv֗u- v!H 4<@(B$"PdVZ5Ɯ ߦs0kB5h$=dpϪ_@0+4@"hOtcky5vzK\1@ޒZ]B_.܋ؿ!IXdWpW0Z%y9s9jaK0hsN,lUX!hf!2.)0 6B|Iq/Ӽ0jDF[,5 !m`-$J~1wWQJD#"YO  6hVQ5Ct/7 8-*"_EUy 0x+Cxgh|+`6HiA|]Z=^JE\`20 ~]f 5X`?S0Q^?J1%[Gxh84^/{ S"rؘɛnRZԧ[v-POI'Z~ttONzqgآ4X ԃ,seq9 ,2)^Ķ/(rS?=# (9a:,وK x R. B%f6nϻ V/Σ %O+|!I 63eHWO vXIKOrZ8gg8=C29Ǫ[PB' rAmK"zʻ! m6뱾3y5ܓ"[< JsϏU9Z^8_fD!Zq_\- -`)Dg鲔iqIb.JXTbjk$M1^K6<˿9C_frEM~8]TxXu5_<t_0PA𶀆 @p4O"qGA餦vGbQprzE33U 6+$q?W 1XK<8 [sC!}E~5C~=Cn 1[xLO gUX=̪yhsl(&U'/qgv|^8Sx(o(Bxe\ӑľUs:҅ͅ2k W!BԜi VEOfX6gA5kOد2jS6ۼ[JSjQ:(Z0Ne Z]L2$4@8B,,Nj(t'8.JCLKUi5#Xx#|U:@m??d,^q5L!]MrI4pZ;>g@MFK)(}fU .{]~55>"$c +ן?Qc# mK-6)࿁_YnG+:|a "~ϯٯbq~=+,j?My 9"yDʍng6-z<,+tKxW"'l˾H[yJ&a@~/9"a%$iѣ6.S8ظ+y+*ojom p-k1 u%=-" 4wq-ՐEK |UfG -Ua]Xrx.\˅h:"LFdF5pf覊)nYͣnFh 1{'\<ϫlik)$H 䇙5%yknib /OEOjZ<,bP p+ @<[/ #/Zwp6$5DE |6w^>7{ԇNĭPwf>k7/c͗=cMﴯ߁AE`q:N*NQbUG`ʟƳCᨉ"5w5.&v;.ܱ7e$$yKYE<[y8M nm%U4@[&EC(./bC>Z1_PO^;Ф!Nwcl^]`C1L8GO{ >.|mO9QHN P{;=YJ7'[ɂ-b< Xӌ2@}޺PwaŨM lqG{R\pDxsT3Xؓ @pxh8ѱxe l TZBHaect*ZHFb52iiS[:DHS ))%_rpSeUӮ@ *I3*C 3 =&&5CB`Ê,o]~]3tحjXex0CTA3œy 5{t!k@QV+Vr 3e!̰BːۓOA԰‰ # U4VDчD*Oݕ<:XlBxh8L`pxh84y0؃Jk5#;ǮD"-鞺#tLn3ã|ÁysɩqvA2t>}XJx8c&G)jI}@5V&J? Y!\=jb<hj o%tEXtdate:create2016-07-13T10:21:59+00:00%tEXtdate:modify2016-07-13T09:26:54+00:00͠tEXtSoftwareAdobe ImageReadyqe<IENDB`prewikka-5.2.0/prewikka/htdocs/css/images/ui-icons_cd0a0a_256x240.png0000644000000000000000000001070513726165107025020 0ustar rootroot00000000000000PNG  IHDRIJPLTE 4vYtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2016-07-13T10:21:59+00:00%tEXtdate:modify2016-07-13T09:26:54+00:00͠tEXtSoftwareAdobe ImageReadyqe<IENDB`prewikka-5.2.0/prewikka/htdocs/css/32px.png0000644000000000000000000000606113726165107020477 0ustar rootroot00000000000000PNG  IHDR@`[[PLTEZU`999eG  k~~~[Ub[ߟe^ uw|qX. vw|/$--!!*,U=tMY+ 烃|aA fIaktYz^JopggIIYYccڝW8i&&&ޝcUW[$\cpȍƘU56ҷܻמɳ{ģFmC6ԥgtv{-2]*/}HZB9ˢ@5MO믯Jٲ"xBǠހph1^F'`,#ff*nK̽n{ZܙmwZqWŵww&&ֺ==Qe7ab`ߊxo8ϸͭ޶bC11̩Q:վl؇n?U^{oѵ;41),R||Ωö÷YuuuvPx{lbtRNS.ZA& [5"\G9ELn٬`شݜك"WjfTIDATxyXf z (sιM&[hQPYJ[Q"(8FA SйMqל^t9w;}L~IYB'4<ϛi>|oJյ r馻?I $$$$jπh$ *0v}^zc{vkaHIQ`ViV9cvc@1O`v/) ɳX,^ (h3gΜRRb˒_A)) \%GP߉ud$L߉ m3BLX_곚_>mH`%+^_y\$n/#CbHF )l!"P`Iהl/փ[PT_{U4OX`e0$+2mZSF i(pǼO'!6QطCsKߘH'KJ^},00CF=d%PFX2dh.f߬vќ^9 9f#q|3K=@/'~|_nGF,֖<]RR;rt >S9mڴM4,0 t"% Khzp^2&ӧO:uC=rfcn{|2"2׳cjB+ $%%=(H 3u&p{*'sgRhVW9!C|_=S_Gx{.ljĹsv8P@\!!}GH.pmq88q|wvnnzNJzveA1PO5@YYaS0 Ʈ7cf&h#s(6F4=m"H $I $@H $ $H; Iln0zpoHO9/5/Ϥ&lm0m}i6.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} /*# sourceMappingURL=bootstrap.min.css.map */prewikka-5.2.0/prewikka/htdocs/css/font-awesome.min.css0000644000000000000000000007443013726165107023102 0ustar rootroot00000000000000/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} prewikka-5.2.0/prewikka/htdocs/css/jquery-ui-timepicker-addon.min.css0000644000000000000000000000320113726165107025631 0ustar rootroot00000000000000/*! jQuery Timepicker Addon - v1.5.5 - 2015-05-24 * http://trentrichardson.com/examples/timepicker * Copyright (c) 2015 Trent Richardson; Licensed MIT */ .ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:0;margin:0;padding:0}.ui-timepicker-div .ui_tpicker_unit_hide{display:none}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}.ui-timepicker-div.ui-timepicker-oneLine{padding-right:2px}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,.ui-timepicker-div.ui-timepicker-oneLine dt{display:none}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label{display:block;padding-top:2px}.ui-timepicker-div.ui-timepicker-oneLine dl{text-align:right}.ui-timepicker-div.ui-timepicker-oneLine dl dd,.ui-timepicker-div.ui-timepicker-oneLine dl dd>div{display:inline-block;margin:0}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before{content:':';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before{content:'.';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{display:none}prewikka-5.2.0/prewikka/htdocs/css/jquery-ui.min.css0000644000000000000000000007512313726165107022430 0ustar rootroot00000000000000/*! jQuery UI - v1.12.1 - 2017-03-16 * http://jqueryui.com * Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=smoothness&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=2e83ff&fcHighlight=363636&borderColorHighlight=fcefa1&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=fbf9ee&iconColorActive=454545&fcActive=212121&borderColorActive=aaaaaa&bgImgOpacityActive=65&bgTextureActive=glass&bgColorActive=ffffff&iconColorHover=454545&fcHover=212121&borderColorHover=999999&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=dadada&iconColorDefault=888888&fcDefault=555555&borderColorDefault=d3d3d3&bgImgOpacityDefault=75&bgTextureDefault=glass&bgColorDefault=e6e6e6&iconColorContent=222222&fcContent=222222&borderColorContent=aaaaaa&bgImgOpacityContent=75&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=222222&fcHeader=222222&borderColorHeader=aaaaaa&bgImgOpacityHeader=75&bgTextureHeader=highlight_soft&bgColorHeader=cccccc&cornerRadius=4px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}prewikka-5.2.0/prewikka/htdocs/css/select2-bootstrap.min.css0000644000000000000000000004063013726165107024045 0ustar rootroot00000000000000/*! * Select2 Bootstrap Theme v0.1.0-beta.10 (https://select2.github.io/select2-bootstrap-theme) * Copyright 2015-2017 Florian Kissling and contributors (https://github.com/select2/select2-bootstrap-theme/graphs/contributors) * Licensed under MIT (https://github.com/select2/select2-bootstrap-theme/blob/master/LICENSE) */ .select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px;outline:0}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#999}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#999}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#999;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#999}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#777;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{background-color:#f5f5f5;color:#262626}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{background-color:#337ab7;color:#fff}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{margin-left:-12px;padding-left:24px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-24px;padding-left:36px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-36px;padding-left:48px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-48px;padding-left:60px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-60px;padding-left:72px}.select2-container--bootstrap .select2-results__group{color:#777;display:block;padding:6px 12px;font-size:12px;line-height:1.42857143;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;border-color:#66afe9}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 4px 4px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-color:transparent}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-right-radius:0;border-top-left-radius:0;border-top-color:transparent}.select2-container--bootstrap .select2-selection__clear{color:#999;cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--bootstrap .select2-selection__clear:hover{color:#333}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#ccc;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:#eee}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);border-color:#66afe9;overflow-x:hidden;margin-top:-1px}.select2-container--bootstrap .select2-dropdown--above{-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175);margin-top:1px}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:34px;line-height:1.42857143;padding:6px 24px 6px 12px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;bottom:0;right:12px;top:0;width:4px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{border-color:#999 transparent transparent;border-style:solid;border-width:4px 4px 0;height:0;left:0;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{color:#555;padding:0}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--bootstrap .select2-selection--multiple{min-height:34px;padding:0;height:auto}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;line-height:1.42857143;list-style:none;margin:0;overflow:hidden;padding:0;width:100%;text-overflow:ellipsis;white-space:nowrap}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{color:#999;float:left;margin-top:5px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{color:#555;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:default;float:left;margin:5px 0 0 6px;padding:0 6px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{background:0 0;padding:0 12px;height:32px;line-height:1.42857143;margin-top:0;min-width:5em}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:3px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 22px 5px 10px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:30px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{font-size:12px;line-height:1.5;margin:4px 0 0 5px;padding:0 5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{padding:0 10px;font-size:12px;height:28px;line-height:1.5}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 31px 10px 16px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{border-width:5px 5px 0;margin-left:-10px;margin-top:-2.5px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{font-size:18px;line-height:1.3333333;border-radius:4px;margin:9px 0 0 8px;padding:0 10px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{padding:0 16px;font-size:18px;height:44px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 5px 5px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-left:24px;padding-right:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{left:12px;right:auto}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:0;margin-right:6px}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;border-color:#66512c}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;border-color:#843534}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;border-color:#2b542c}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-bottom-right-radius:0;border-top-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--bootstrap{display:table;table-layout:fixed;position:relative;z-index:2;width:100%;margin-bottom:0}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}} prewikka-5.2.0/prewikka/htdocs/css/select2.min.css0000644000000000000000000003553413726165107022041 0ustar rootroot00000000000000.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} prewikka-5.2.0/prewikka/htdocs/css/style.less0000644000000000000000000005005113726165107021223 0ustar rootroot00000000000000/* * global */ html { margin: 0; padding: 0; } body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; color: @active-text; background-color: @active-background; } a { color: @link; cursor: pointer; text-decoration: none; } a:hover { text-decoration: underline; } img { border: 0; } h1, h2, h3, h4, h5, h6 { font-weight: 600; } table { border-spacing: 2px 2px; background-color: @table-background; border-radius: 5px; } textarea, input, select { font-size: 9pt; font-family: Verdana, Arial, Helvetica, sans-serif; color: #333; /* needed for plain inputs because Bootstrap uses color: inherit without changing background-color */ } textarea { overflow: auto; &.vresize { resize: vertical; } &.hresize { resize: horizontal; } &.noresize { resize: none; } } input[type="checkbox"] { border: none; vertical-align: sub; } input[type="file"] { height: 0; width: 0; opacity: 0; } form { display: inline; } thead { font-weight: bold; background-color: @table-header; } fieldset { background: @fieldset-background; padding: 1em 0.5em 1em 0.5em; border-radius: 5px; } legend { position: relative; _top: -1em; padding: 0.4em; color: @active-text; } p { margin: 0; padding: 0; } .fixed { font-family: Courier, monospace; font-size: 9pt; } /* * Padding in prewikka is globally defined in #main */ .container-fluid { padding-left: 0px; padding-right: 0px; [class*="col-"] { padding-left: 0px; padding-right: 0px; } .row { margin-left: 0px; margin-right: 0px; } } /* * top menu */ #topmenu { z-index: 3; position: fixed; top: 46px; background: @active-background; width: 100%; .topmenu_nav { .topmenu_nav_container { background-color: @primary-background-color; opacity: 0.15; position: absolute; top: 0; left: 0; height: 50px; width: 100%; } a { color: #686868; } float: left; padding-top: 9px; font-size: 10pt; font-weight: bold; .nav-tabs { border: none; .active a { background: @fieldset-background; } } } } #topmenu_right { float: right; margin-right: 4px; margin-top: 13px; } .main_menu_form_submit, .prewikka-config-button, .prewikka-help-button { position: relative; /* make sure buttons are clickable */ padding: 5px; } /* * menu */ #main_menu_ng { position: fixed; top: 57px; right: 73px; z-index: 4; max-width: 60%; .main_menu_navbar { margin-bottom: 0px; padding: 2px 4px 3px; color: @active-text; } .collapsed { .form-group { max-width: 100px; } } .form-group { max-width: 160px; input { width: 100%; } button { min-width: 70px; max-width: 100%; text-align: left; text-overflow: ellipsis; overflow: hidden; padding-right: 20px; .caret { position: absolute; right: 10px; top: e("calc(50% - 1px)"); } } } .form-group-date { max-width: 140px; input { cursor: pointer; text-align: center; &.disabled { background-color: #EEE; opacity: 1; } } } .btn-submit { &.disabled { cursor: initial; } } .form-control { width: 100%; } label { display: none; } /* Ease the transition between default select and select2 */ select { padding-left: 6px; padding-right: 18px; line-height: 1.5; appearance: none; -moz-appearance: none; -webkit-appearance: none; option, optgroup { width: 0; } } } .dropdown-header-custom { font-weight: bold; padding: 3px 10px; } .label-xs { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-bottom: -4px; margin-top: -6px; font-size: 62.5%; } label.required:after { content: "*"; color: red; } .popup_select_field, .popup_input_field { width: 150px; max-width: 150px; } /* menu message nav */ #message_list_nav { //height: 43px; //width: 198px; border: none; background-color: transparent; a:visited, a:link, a:hover { color: black; text-decoration: none; width: 100%; display: block; } td { text-align: center; font-size: 9pt; width: 25%; /*font-weight: bold;*/ } } .message_list_nav_infos { background: @table-background; border: @border; } .message_list_nav_button { height: 15px; background: #E2EBF5; border: 1px solid @border; } /* * main screen */ @media (max-width: 768px) { #top_view { #top_view_navbar { position: static; #nav_top_view_header.nav { position: static; } .navbar-toggle { padding-bottom: 3px; } .dropdown-menu { background-color: #fff; } } #topmenu { position: static; .topmenu_nav_container { display: none; } } #_main { position: static; .prewikka-view-config { position: static; } } #main_menu_ng { position: absolute; top: 55px; z-index: -1; max-width: 100%; .form-group { display: inline-block; margin-bottom: 0px; vertical-align: middle; } } #config-button { position: absolute; } } } #top_view { &.detach { #top_view_navbar { position: static; } #topmenu { position: static; } #main_menu_ng { position: absolute; top: -80px; } } &.fullscreen { #top_view_navbar { display: none; } #topmenu { display: none; } #main_menu_ng { display: none; } #_main { top: 0; } #_main_viewport { top: 0; } } #top_view_navbar { z-index: 30; margin-bottom: 0; .navbar-brand { padding: 7px; color: white; line-height: 36px; /* navbar height(50) - (7 * 2) = 36 */ img { max-height: 40px; } } #top_view_navbar_menu { position: relative; z-index: 1; } #nav_top_view_header { right: 20px; position: absolute; z-index: 0; .btn { padding: 6px 6px; } } .navbar-nav > li > a { font-size: 13pt; } } } #_main_viewport { position: fixed; z-index: -1; top: 100px; bottom: 0px; width: 100%; } #_main { top: 100px; bottom: 0px; width: 100%; position: absolute; } #main { padding: 5px; height: 100%; } /* * random class */ .table-striped > tbody > tr:nth-of-type(2n+1) { background-color: @table-row-even; } .table-striped > tbody > tr:nth-of-type(2n) { background-color: @table-row-odd; } table.table.table-borderless > tbody > tr > td { border: none; } table.table.table-borderless > tbody > tr > th { border: none; } .impact_severity_high, .impact_completion_succeeded { text-decoration: none; font-weight: bold; color: #d02a2a; } .impact_severity_medium { text-decoration: none; color: #ff8e33; } .impact_severity_low, .impact_completion_failed { text-decoration: none; color: #418c3d; } .impact_severity_info { text-decoration: none; color: blue; } div.footer-buttons { position: absolute; margin-top: 5px; bottom: 5px; right: 5px; } div.footer-left-buttons { position: absolute; margin-top: 5px; bottom: 5px; left: 5px; } /* * popup */ .popup-menu { background-color: @active-background; a { display: block; padding: 10px 15px; border-bottom: 2px solid #DDD; color: @active-text; } a:last-child { border-bottom: none; } a:hover { background-color: #f5f5f5; color: #555; text-decoration: none; } } .table tbody tr td { line-height: 2; } /* * misc */ .fieldset_heading { legend { font-size: 12pt; font-weight: bold; margin-bottom: 0; } } .shadow { box-shadow: 3px 3px 6px 0 #A9A9A9; } div.prewikka-view-config { border: 1px solid #ccc; padding: 10px; background-color: @fieldset-background; position: fixed; right: 0; z-index: 3; } .ajax-spinner { position: relative; text-align: center; top: 50%; left: 50%; transform: translate(-50%, -50%); i.fa-spin { color: gray; } &.main-spinner { position: fixed; z-index: 1234; } } .text-center-vh { position: relative; text-align: center; top: 50%; transform: translate(0, -50%); } .widget-only { display: none; } .label-checkbox { cursor: pointer; } .checkbox-label { display: none; &:checked + .label-checkbox > span { background-color: #5CB85C; &:after { content: "\2714"; } } + .label-checkbox > span { margin-left: 5px; margin-bottom: 2px; background-color: #D9534F; &:empty { display:inherit; } &:after { content: "\2717"; } } } /* * Prewikka renderer */ .renderer-elem { background-color: @chart-background; display: inline-block; width: 100%; height: 100%; } svg text { fill: @active-text; } /* * Customize Bootstrap */ .list-group-item { background: @fieldset-background; } .navbar-primary { background-color: @primary-background-color; border-color: darken(@primary-background-color, 5%); .navbar-nav { > li > a { color: @primary-color; &:hover, &:focus { color: darken(@primary-color, 10%); background-color: @primary-background-color; } } > .active > a { &, &:hover, &:focus { color: @primary-color; background-color: darken(@primary-background-color, 5%); } } } .nav > .open > a, .nav > .open > a:focus, .nav > .open > a:hover { background-color: darken(@primary-background-color, 5%) } } @media (min-width: 992px) and (max-width: 1300px) { .modal-xl { width: 900px; /* same as modal-lg here */ } } @media (min-width: 1300px) { .modal-xl { width: 1200px; } } .modal-dialog .modal-content { background: @active-background; } .modal-dialog .modal-body { max-height: e("calc(100vh - 200px)"); overflow: auto; } /* Submenu */ .dropdown-submenu { position: relative; &>.dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } &:hover>.dropdown-menu { display:block; &>a:after { border-left-color: #ffffff; } } &>a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #cccccc; margin-top: 5px; margin-right: -10px; } &.pull-left { float: none; &>.dropdown-menu { left: inherit; right: 100%; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } } } .dropdown-menu-theme { background-color: @active-background; > li > a { color: @active-text; } } /* Panels */ .panel { background-color: @fieldset-background; } .panel-default { border-color: #B0B0B0; } .panel-theme { border-color: @primary-background-color; } .panel-theme>.panel-heading{ background-color: @primary-background-color; border-color: @primary-background-color; color: #fff; } .panel-theme>.panel-heading+.panel-collapse>.panel-body{ border-top-color: @primary-background-color; } .panel-theme>.panel-heading .badge{ color: @primary-background-color; background-color: #fff; } /* Buttons */ .button-variant (@color-variant, @background-variant, @border-variant) { color: @color-variant; background-color: @background-variant; border-color: @border-variant; &:focus, &.focus { color: @color-variant; background-color: darken(@background-variant, 10%); border-color: darken(@border-variant, 25%); } &:hover { color: @color-variant; background-color: darken(@background-variant, 10%); border-color: darken(@border-variant, 12%); } &:active, &.active, .open > .dropdown-toggle& { color: @color-variant; background-color: darken(@background-variant, 10%); border-color: darken(@border-variant, 12%); &:hover, &:focus, &.focus { color: @color-variant; background-color: darken(@background-variant, 17%); border-color: darken(@border-variant, 25%); } } &:active, &.active, .open > .dropdown-toggle& { background-image: none; } &.disabled, &[disabled], fieldset[disabled] & { &, &:hover, &:focus, &.focus, &:active, &.active { background-color: @background-variant; border-color: @border-variant; } } .badge { color: @background-variant; background-color: @color-variant; } } .btn-custom { .button-variant(@primary-color, @primary-background-color, darken(@primary-background-color, 5%)); } /* * It looks like a button * It tastes like a button * But it is not a button */ .btn-static { background-color: white; border: 1px solid lightgrey; cursor: default; } .btn-static:active { -moz-box-shadow: inset 0 0 0px white; -webkit-box-shadow: inset 0 0 0px white; box-shadow: inset 0 0 0px white; } .tooltip-inner { color: @tooltip-text; background-color: @tooltip-background; } .tooltip.top .tooltip-arrow { border-top-color: @tooltip-background; } .tooltip.bottom .tooltip-arrow { border-bottom-color: @tooltip-background; } .tooltip.right .tooltip-arrow { border-right-color: @tooltip-background; } .tooltip.left .tooltip-arrow { border-left-color: @tooltip-background; } .popover { background-color: @active-background; .popover-title { color: #333; } &.popover-menu { z-index: 1; .popover-content { padding: 0; } } &.top .arrow::after { border-top-color: @active-background; } &.bottom .arrow::after { border-bottom-color: @active-background; } &.right .arrow::after { border-right-color: @active-background; } &.left .arrow::after { border-left-color: @active-background; } } div.ui-jqgrid-titlebar { color: #222; } .ui-jqgrid tr.jqgrow > td { white-space: normal; } #prewikka-notification { display: none; } #prewikka-notifications-container { position: fixed; left: 0; right: 0; margin: auto; z-index: 50; width: 620px; .alert { margin-top: 30px; margin-right: 20px; } } .modal-dialog .traceback > div { max-height: 300px; } .widget .modal-header { display: none; } .widget .modal-dialog .modal-header { display: block; } .top-right-buttons { position: fixed; right: 80px; top: 59px; z-index: 5; } .modal-dialog .top-right-buttons { top: 10px; } @media (max-width: 768px) { .top-right-buttons { position: static; } .modal-dialog .top-right-buttons { position: fixed; } } .widget .modal-dialog .widget-only { display: initial; } .panel-background { background-color: @fieldset-background; } .default-background { background-color: @active-background; } /* * Bootstrap labels and inputs */ label.disabled a { pointer-events: none; cursor: not-allowed; } .list-bootstrap-label { cursor: pointer; font-weight: inherit; } .list-bootstrap-label:hover { cursor: pointer; font-weight: inherit; color: @active-text; background-color: @active-background; } .list-bootstrap-label-all { float: right; width: 20em; } .checkbox-inputgroup { display: none; } .checkbox-inputgroup:checked + .list-bootstrap-label > span > a:after { content: "\2714"; } .checkbox-inputgroup:checked + .list-bootstrap-label > span { background-color: #5CB85C; } .checkbox-inputgroup + .list-bootstrap-label > span > a:after { content: "\2717"; } .checkbox-inputgroup + .list-bootstrap-label > span { background-color: #D9534F; } .list-bootstrap-label > span > a:after { color: @primary-color; } .btn-default2 { background-color: #777; } .btn-default2:hover { background-color: darken(#777, 10%); } @label_critical_bg: #b03030; @table_critical_bg: #f2c0c0; .label-critical, .btn-critical { background-color: @label_critical_bg; } .label-critical[href]:focus, .label-critical[href]:hover, .btn-critical:hover { background-color: darken(@label_critical_bg, 5%); } .table > thead > tr, .table > tbody > tr, .table > tfoot > tr { > td.critical, > th.critical, &.critical > td, &.critical > th { background-color: @table_critical_bg; } } .table-hover > tbody > tr { > td.critical:hover, > th.critical:hover, &.critical:hover > td, &:hover > .critical, &.critical:hover > th { background-color: darken(@table_critical_bg, 5%); } } @label_panic_bg: #800000; @table_panic_bg: #f2a0a0; .label-panic, .btn-panic { background-color: @label_panic_bg; } .label-panic[href]:focus, .label-panic[href]:hover, .btn-panic:hover { background-color: darken(@label_panic_bg, 5%); } .table > thead > tr, .table > tbody > tr, .table > tfoot > tr { > td.panic, > th.panic, &.panic > td, &.panic > th { background-color: @table_panic_bg; } } .table-hover > tbody > tr { > td.panic:hover, > th.panic:hover, &.panic:hover > td, &:hover > .panic, &.panic:hover > th { background-color: darken(@table_panic_bg, 5%); } } .table > thead > tr, .table > tbody > tr, .table > tfoot > tr { > td.active, > th.active, &.active > td, &.active > th, > td.info, > th.info, &.info > td, &.info > th, > td.success, > th.success, &.success > td, &.success > th, > td.warning, > th.warning, &.warning > td, &.warning > th, > td.danger, > th.danger, &.danger > td, &.danger > th, > td.critical, > th.critical, &.critical > td, &.critical > th, > td.panic, > th.panic, &.panic > td, &.panic > th { color: #444; } } .btn-default2, .btn-critical, .btn-panic { color: white; } .commonlisting .nocheck input { pointer-events: none; opacity: 0.35; } #main_menu_ng_block .form-group-date { padding: 0; } #main_menu_ng_block .form-group-date + .form-group-date { padding-left: 10px; } .panel .instance { border-radius: 3px; border-style: solid; border-width: 1px 1px 1px 5px; border-color: #eee; border-left-color: #1b809e; margin: 20px 0 5px 0; padding: 5px 20px; } .panel .instance:first-child { margin: 5px 0; } /* * Customize Select2 dropdown appearance */ .select2-results { font-size: 13px; color: #333; .select2-results__option { overflow-x: hidden; .select2-results__option { padding: 3px 20px; overflow-wrap: break-word; } } } #main_menu_ng .main_menu_navbar { .select2-container { width: 100%; } .select2-selection__rendered { color: #333; } .select2-selection__arrow b { border-color: #333 transparent transparent; } .select2-container--open .select2-selection__arrow b { border-color: transparent transparent #333; } } prewikka-5.2.0/prewikka/htdocs/css/throbber.gif0000644000000000000000000000327013726165107021472 0ustar rootroot00000000000000GIF89aFFFzzzXXX$$$666hhh! NETSCAPE2.0!Created with ajaxload.info! ,qH;uj01P4HЈ `+I1q|@Pp@\ 84QQZ^- g8) fl9C` O Tp%# c% U! ,pHhy91 KI*,Al `h |&@sHBvD~UM^)H6? xMl< L&klj('K'! ,rH(9NICsa(0F& pP$@0 8 (ZF ( ( iDN1:Hd%M 2 x2GOyo 0Oyrn;bq'1b'! ,pH(c9J& QN,J5P3…`0 J';)l_@H$vb ]M+ g@ ͧ)v1[oz ;|zM1n&&&! ,fHh)9N&  }@APu, \+I 4E| q ؜ɱ] MkI7JيH!8esyVny&! ,xHRRB&' Rr T(2c d&08 g0`lAa~6ܦK!~M }BAbp$SIJǙCp AH4zY *f! ,oHht{6 aWba(5U@ NA;4Br$P(EHTC!@80YQcL z YSY>Z g t! ,sHhtj(6 a$_! _^5FBX 8ZXU(I@ѫ (.AQX%(Q,!DM S a[ 0;prewikka-5.2.0/prewikka/htdocs/css/ui.jqgrid.min.css0000644000000000000000000007315113726165107022371 0ustar rootroot00000000000000/*! * jqGrid 4.15.4 - free jqGrid: https://github.com/free-jqgrid/jqGrid * Date: 2018-04-02 */.ui-jqgrid{position:relative;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;-ms-touch-action:none;touch-action:manipulation}.ui-jqgrid div{line-height:normal}.ui-jqgrid table{border-collapse:separate;border-spacing:0;border-width:0;border-style:none}.ui-jqgrid table td{padding:0}.ui-jqgrid>.ui-jqgrid-view{position:relative;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;padding:0;font-size:11px}.ui-jqgrid>.ui-jqgrid-view *,.ui-jqgrid>.ui-jqgrid-view :after,.ui-jqgrid>.ui-jqgrid-view :before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.ui-jqdialog .ui-jqdialog-titlebar,.ui-jqgrid .ui-jqgrid-errorbar,.ui-jqgrid .ui-jqgrid-titlebar{padding:.3em .3em .3em .3em;position:relative;font-size:12px;border-left:0 none;border-right:0 none;border-top:0 none}.ui-jqgrid-errorbar{max-height:100px;margin-bottom:0;overflow:auto}.ui-jqgrid .ui-jqgrid-caption,.ui-jqgrid .ui-jqgrid-errorbar-ltr{text-align:left}.ui-jqgrid .ui-jqgrid-caption-rtl,.ui-jqgrid .ui-jqgrid-errorbar-rtl{text-align:right}.ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close,.ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close{vertical-align:middle;text-align:center;text-decoration:none;position:absolute;top:50%;width:1.4em;line-height:1.5em;font-size:12px;margin:-.7em 0 0 0;padding:.2em;border:1px solid transparent;height:1.4em;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-jqgrid-jquery-ui .ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close{margin:-8px 0 0 0}.ui-jqgrid .ui-jqgrid-caption .ui-jqgrid-titlebar-close{right:.1em}.ui-jqgrid .ui-jqgrid-caption-rtl .ui-jqgrid-titlebar-close{left:.1em}.ui-jqdialog .ui-jqdialog-titlebar-ltr .ui-jqdialog-titlebar-close{right:.3em}.ui-jqdialog .ui-jqdialog-titlebar-rtl .ui-jqdialog-titlebar-close{left:.3em}.ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close,.ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close{-ms-border-radius:.5em;border-radius:.5em}.ui-jqdialog .ui-jqdialog-titlebar-ltr .ui-jqdialog-title,.ui-jqgrid .ui-jqgrid-caption .ui-jqgrid-title,.ui-jqgrid .ui-jqgrid-errorbar-ltr .ui-jqgrid-error{position:relative;left:.1em}.ui-jqdialog .ui-jqdialog-titlebar-rtl .ui-jqdialog-title,.ui-jqgrid .ui-jqgrid-caption-rtl .ui-jqgrid-title,.ui-jqgrid .ui-jqgrid-errorbar-rtl .ui-jqgrid-error{position:relative;right:.1em}.ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close span{margin-top:0;margin-left:0}.ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close span,.ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close span{display:block}.ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close span.ui-icon,.ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close span.ui-icon{position:relative;top:-2px}.ui-jqdialog-titlebar-ltr .ui-jqdialog-titlebar-close span.ui-icon,.ui-jqgrid .ui-jqgrid-caption .ui-jqgrid-titlebar-close span.ui-icon{right:3px}.ui-jqgrid .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.ui-icon{margin-top:-1px}.ui-jqgrid .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.fa,.ui-jqgrid .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.glyphicon{font-size:14px;margin-top:-2px}.ui-jqgrid .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.fa{margin-left:-1px}.ui-jqgrid .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.glyphicon{margin-left:-2px}.ui-jqdialog-titlebar .ui-jqdialog-titlebar-close>span{margin-top:-1px}.ui-jqdialog-titlebar .ui-jqdialog-titlebar-close>span.glyphicon{margin-top:-.05em;margin-left:-.05em}.ui-jqdialog .ui-resizable-handle{right:-3px;bottom:-3px}.ui-jqdialog .ui-resizable-handle.fa{bottom:1px;right:-2px}.ui-jqdialog .ui-resizable-handle.glyphicon{right:-2px;bottom:-3.8px}.ui-jqgrid>.ui-jqgrid-view>.ui-jqgrid-hdiv{position:relative;margin:0;padding:0;overflow:hidden;border-left:0 none;border-top:0 none;border-right:0 none;height:auto}.ui-jqgrid .ui-jqgrid-hbox{float:left;padding-right:20px}.ui-jqgrid .ui-jqgrid-htable{table-layout:fixed;margin:0}.ui-jqgrid .ui-jqgrid-htable th{height:auto;padding:0 2px 0 2px}.ui-jqgrid-htable>thead>.jqg-first-row-header>th{border-bottom:0 none;border-top:0 none}.ui-jqgrid .ui-jqgrid-htable th.jqgh_cbox{padding:0}.ui-jqgrid .ui-jqgrid-htable .ui-jqgrid-labels th div{overflow:hidden;position:relative;height:auto;margin:2px 2px}.ui-jqgrid .ui-jqgrid-htable .ui-jqgrid-labels>th.jqgh_cbox{vertical-align:middle}.ui-jqgrid .ui-jqgrid-htable .ui-jqgrid-labels .jqgh_cbox>div{text-align:center;vertical-align:baseline;margin:0}.ui-jqgrid .ui-jqgrid-labels th.ui-th-column,.ui-jqgrid .ui-jqgrid-legacy-subgrid .ui-th-subgrid,.ui-jqgrid-labels .ui-th-column-header{overflow:hidden;white-space:nowrap;text-align:center}.ui-jqgrid-labels .ui-th-column-header{vertical-align:middle;height:auto;vertical-align:middle;border-top:0 none}.ui-jqgrid .ui-jqgrid-labels th.ui-th-column{position:relative;vertical-align:middle;border-top:0 none;border-bottom:0 none}.ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr,.ui-th-ltr{border-left:0 none}.ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl,.ui-th-rtl{border-right:0 none}.ui-first-th-ltr{border-right:1px solid}.ui-first-th-rtl{border-left:1px solid}.ui-jqgrid .ui-th-div-ie{white-space:nowrap;zoom:1;height:17px}.ui-jqgrid .ui-th-column>.jqgh_cbox{margin:3px 0}.ui-jqgrid .ui-th-column .cbox{margin:.1em;cursor:pointer;text-align:center;vertical-align:middle}.ui-jqgrid.ui-jqgrid-bootstrap .ui-th-column .cbox{height:18px;width:18px}.ui-jqgrid .ui-th-column .ui-th-div-ie>.cbox{margin-left:-1px;margin-right:-1px}.ui-jqgrid .ui-jqgrid-labels>.ui-th-column>.ui-jqgrid-resize{top:0;height:100%;width:.3em;position:absolute;cursor:col-resize;-webkit-touch-callout:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none;display:inline;overflow:hidden}.ui-jqgrid .ui-jqgrid-htable .ui-jqgrid-labels th div.ui-jqgrid-rotate{-webkit-transform:translateX(-50%) translateY(0) rotate(-90deg);-moz-transform:translateX(-50%) translateY(0) (-90deg);-o-transform:translateX(-50%) translateY(0) rotate(-90deg);-ms-transform:translateX(-50%) translateY(0) rotate(-90deg);transform:translateX(-50%) translateY(0) rotate(-90deg);transform-origin:center center;margin:0;left:50%}.ui-jqgrid .ui-grid-ico-sort{overflow:hidden;position:absolute;display:inline}.ui-grid-ico-sort{cursor:pointer}.ui-state-disabled.ui-grid-ico-sort{cursor:pointer!important}.ui-jqgrid .s-ico{position:relative;width:.87em;height:1.125em;display:inline-block;vertical-align:middle;margin:0 .1em}.ui-jqgrid .s-ico>.ui-grid-ico-sort{display:block;position:relative}.ui-jqgrid .s-ico>.ui-grid-ico-sort.ui-icon{width:12px;margin-top:0}.ui-jqgrid .s-ico>.ui-icon-asc.ui-icon{top:-6px}.ui-jqgrid .s-ico>.ui-icon-desc.ui-icon{top:-16px}.ui-jqgrid .s-ico>.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-jqgrid .s-ico>.ui-icon.ui-sort-ltr{margin-left:-3px}.ui-jqgrid .s-ico>.ui-icon.ui-sort-rtl{margin-right:0}.ui-jqgrid-sortable>.ui-jqgrid-sort-order{position:relative;left:-.1em;top:0;font-size:75%;vertical-align:super}.ui-jqgrid .ui-th-column>div{cursor:default}.ui-jqgrid .ui-th-column>div.ui-jqgrid-sortable{cursor:pointer}.ui-jqgrid .ui-jqgrid-hdiv .ui-search-toolbar{border-top-width:1px;border-top-style:solid}.ui-jqgrid .ui-jqgrid-hdiv .ui-search-toolbar .ui-th-column{border-top-width:1px;border-top-style:solid}.ui-jqgrid .ui-jqgrid-hdiv .ui-search-toolbar input{margin:1px 0 0 0}.ui-jqgrid .ui-jqgrid-hdiv .ui-search-toolbar select{margin:1px 0 0 0}.ui-jqgrid .ui-jqgrid-bdiv{min-height:1px;position:relative;margin:0;padding:0;overflow:auto;text-align:left}.ui-jqgrid .ui-jqgrid-btable{table-layout:fixed;margin:0;outline-style:none;height:1px}.ui-jqgrid tr.jqgroup,.ui-jqgrid tr.jqgrow{outline-style:none}.ui-jqgrid tr.jqfoot>td,.ui-jqgrid tr.jqgroup>td,.ui-jqgrid tr.jqgrow>td,.ui-jqgrid tr.ui-subgrid>td,.ui-jqgrid tr.ui-subtblcell>td{overflow:hidden;white-space:pre;vertical-align:middle;text-align:center;height:22px;border-top:0 none;border-bottom-width:1px;border-bottom-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid tr.jqfoot>td,.ui-jqgrid-jquery-ui.ui-jqgrid tr.jqgroup>td,.ui-jqgrid-jquery-ui.ui-jqgrid tr.jqgrow>td,.ui-jqgrid-jquery-ui.ui-jqgrid tr.ui-subgrid>td{border-bottom-color:inherit}.ui-jqgrid tr.jqfoot>td,.ui-jqgrid tr.jqgroup>td,.ui-jqgrid tr.jqgrow>td{padding:0 2px 0 2px}.ui-jqgrid tr.ui-subgrid>td{padding:0}.ui-jqgrid tr.jqgfirstrow>td{padding:0 2px 0 2px;border-top:0 none;border-left:0 none;height:0;border-right-width:1px;border-right-style:solid;border-bottom:0 none}.ui-jqgrid-jquery-ui.ui-jqgrid tr.jqgfirstrow>td{border-right-color:inherit}.ui-jqgrid tr.jqgfirstrow>td.td_cbox{padding:0}.ui-jqgrid tr.jqfoot>td,.ui-jqgrid tr.jqgroup>td,.ui-jqgrid tr.jqgrow>td{font-weight:400}.ui-jqgrid tr.jqfoot>td{font-weight:700}.ui-jqgrid .ui-jqgrid-bdiv tr.ui-row-ltr>td{text-align:left;border-left-width:0;border-left-style:none;border-right-width:1px;border-right-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid .ui-jqgrid-bdiv tr.ui-row-ltr>td{border-color:inherit}.ui-jqgrid .ui-jqgrid-bdiv tr.ui-row-rtl>td{text-align:right;border-right-width:0;border-right-style:none;border-left-width:1px;border-left-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid .ui-jqgrid-bdiv tr.ui-row-rtl>td{border-color:inherit}.ui-jqgrid .ui-jqgrid-btable td.jqgrid-rownum{padding:0 2px 0 2px;margin:0;border-width:0;border-style:none}.ui-jqgrid .ui-jqgrid-btable td.jqgrid-rownum{border-bottom-width:1px;border-bottom-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid .ui-jqgrid-btable td.jqgrid-rownum{border-bottom-color:inherit}.ui-jqgrid .jqgrow>td.td_cbox{padding:0;text-align:center;vertical-align:middle}.ui-jqgrid .jqgrow>td.ui-sgcollapsed{text-align:center;vertical-align:middle}.ui-jqgrid tr.jqgrow>td.td_cbox{padding:0}.ui-jqgrid .jqgrow>td>.cbox{height:14px;width:14px;cursor:pointer;text-align:center;vertical-align:middle}.ui-jqgrid>.ui-jqgrid-resize-mark,body>.ui-jqgrid-resize-mark{width:0;left:0;cursor:col-resize;-webkit-touch-callout:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;user-select:none;position:absolute;top:0;overflow:hidden;display:none;border-left-width:1px;border-right-width:1px;z-index:99999}span.ui-jqgrid-cell-wrapper{margin:0!important;padding:0!important}.ui-jqgrid>.ui-jqgrid-view>.ui-jqgrid-sdiv{position:relative;margin:0;padding:0;overflow:hidden;border-left:0 none;border-top:0 none;border-right:0 none}.ui-jqgrid .ui-jqgrid-ftable{table-layout:fixed;margin-bottom:0}.ui-jqgrid tr.footrow td{font-weight:700;overflow:hidden;white-space:nowrap;height:21px;padding:0 2px 0 2px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid tr.footrow td{border-top-color:inherit;border-bottom-color:inherit}.ui-jqgrid tr.footrow-ltr td{text-align:left;border-left-width:0;border-left-style:none;border-right-width:1px;border-right-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid tr.footrow-ltr td{border-color:inherit}.ui-jqgrid tr.footrow-rtl td{text-align:right;border-left-width:1px;border-left-style:solid;border-right-width:0;border-right-style:none}.ui-jqgrid-jquery-ui.ui-jqgrid tr.footrow-rtl td{border-color:inherit}.ui-jqgrid>.ui-jqgrid-pager{border:0 none;margin:0;padding:0;position:relative;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;min-height:22px;overflow:hidden;font-size:11px}.ui-jqgrid>.ui-jqgrid-pager *,.ui-jqgrid>.ui-jqgrid-pager :after,.ui-jqgrid>.ui-jqgrid-pager :before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.ui-jqgrid .ui-jqgrid-pager .ui-pager-control,.ui-jqgrid .ui-jqgrid-toppager .ui-pager-control{position:relative;border-left:0;border-bottom:0;border-top:0}.ui-pager-control .ui-jqgrid-pg-left{text-align:left}.ui-pager-control .ui-jqgrid-pg-center{text-align:center;white-space:pre}.ui-pager-control .ui-jqgrid-pg-right{text-align:right}.ui-jqgrid .ui-pg-table{position:relative;padding:0;width:auto;margin:0}.jqgrow .ui-jqgrid-actions{background:inherit;border-style:none}.ui-jqgrid .ui-pg-button:not(.ui-state-hover),.ui-jqgrid-jquery-ui .jqgrow .ui-jqgrid-actions .ui-pg-div:not(.ui-state-hover){border:1px solid transparent}.ui-pager-control .ui-pg-table{border-color:inherit}.jqgrow .ui-jqgrid-actions .ui-pg-div.ui-state-hover,.jqgrow .ui-jqgrid-actions .ui-pg-div:focus,.jqgrow .ui-jqgrid-actions .ui-pg-div:hover,.ui-jqgrid .ui-pg-button.ui-state-hover,.ui-jqgrid .ui-pg-button:focus,.ui-jqgrid .ui-pg-button:hover{border-style:solid;border-color:inherit}.ui-jqgrid .ui-pg-table td{font-weight:400;vertical-align:middle;padding:1px}.ui-jqgrid .ui-pager-control .ui-pg-button{display:inline-block;height:auto}.ui-jqgrid .ui-pg-button span{display:block;margin:1px;float:left}.ui-jqgrid .ui-pg-table .ui-pg-input,.ui-jqgrid .ui-pg-table .ui-pg-selbox{height:auto;width:auto;margin:0;line-height:inherit}select.form-control.ui-pg-selbox:not([size]):not([multiple]){height:auto}.ui-jqgrid .ui-pg-table .ui-pg-selbox{display:block;padding:1px}.ui-jqgrid .ui-separator{height:12px;border-left:1px solid #ccc;border-right:1px solid #ccc;margin:-1px;float:right}.ui-jqgrid .ui-paging-info{font-weight:400;height:auto;margin:0 .2em 0 .2em;display:inline}.ui-jqgrid .ui-jqgrid-pager .ui-pg-div{padding:1px 0;float:left;position:relative}.ui-jqgrid .ui-jqgrid-pager .ui-pg-button{cursor:pointer}.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon{float:left;margin:0 2px}.ui-jqgrid td input,.ui-jqgrid td select,.ui-jqgrid td textarea{margin:0}.ui-jqgrid td textarea{width:auto;height:auto}.ui-jqgrid>.ui-jqgrid-view>.ui-jqgrid-toppager{border-left:0 none;border-right:0 none;border-top:0 none;margin:0;padding:0;position:relative;height:auto;min-height:22px;overflow:hidden}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div{padding:1px 0;float:left;position:relative}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button{cursor:pointer}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon{float:left;margin:0 2px}.ui-jqgrid .ui-pg-table .ui-pg-button{margin:2px;vertical-align:middle}.ui-jqgrid .navtable .ui-pg-div span.ui-pg-button-text{padding-left:.2em;padding-right:.2em}.ui-pg-button.ui-state-hover>.ui-pg-div>.ui-pg-button-text,.ui-pg-button:hover>.ui-pg-div>.ui-pg-button-text{font-weight:400}.ui-jqgrid .ui-pg-div{text-align:center;vertical-align:middle;display:inline-block}.ui-jqgrid .navtable .ui-pg-div>span.ui-pg-button-icon-over-text{margin-left:auto;margin-right:auto;float:none}.subgrid-data>.tablediv>.ui-jqgrid{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.subgrid-data>.tablediv>.ui-jqgrid>.ui-jqgrid-view{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ui-jqgrid .ui-jqgrid-btable .jqgrow>.ui-sgcollapsed{text-align:center;vertical-align:middle}.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span{display:inline-block}.ui-jqgrid .ui-subgrid{margin:0;padding:0;width:100%}.sgbutton{cursor:pointer}.ui-jqgrid .ui-subgrid table{table-layout:fixed}.ui-jqgrid .ui-subgrid tr.ui-subtblcell td{height:18px;border-top:0 none;border-bottom-width:1px;border-bottom-style:solid}.ui-jqgrid-jquery-ui.ui-jqgrid .ui-subgrid tr.ui-subtblcell td{border-bottom-color:inherit}.ui-jqgrid .ui-th-subgrid{height:20px}.ui-jqgrid .ui-row-ltr.ui-subgrid>.subgrid-cell>span{float:right}.ui-jqgrid .ui-row-rtl.ui-subgrid>.subgrid-cell>span{float:left}.ui-jqgrid>.loading{position:absolute;top:45%;left:45%;width:auto;z-index:101;padding:6px;margin:5px;text-align:center;font-weight:700;display:none;border-width:2px;font-size:11px}.ui-jqgrid .jqgrid-overlay{display:none;z-index:100}* .jqgrid-overlay iframe{position:absolute;top:0;left:0;z-index:-1}.ui-jqgrid>.ui-jqgrid-view>.ui-userdata{border-left:0 none;border-right:0 none;height:21px;overflow:hidden}.ui-jqgrid .ui-jqdialog{font-size:11px}.ui-jqdialog{display:none;width:300px;position:absolute;font-size:11px;overflow:visible}.ui-jqdialog.ui-jqgrid-jquery-ui{padding:.2em}.ui-jqgrid-bootstrap.modal{right:auto;left:auto}.ui-jqdialog .ui-jqdialog-content,.ui-jqdialog-content{border:0;padding:.3em .2em;background:0 0;height:auto}.ui-jqdialog .ui-jqconfirm{padding:.4em 1em;border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center}.ui-jqdialog>.ui-resizable-se,.ui-jqgrid>.ui-resizable-se{bottom:-3px;right:-3px}.ui-jqdialog-content .FormGrid{margin:0}.ui-jqdialog-content .EditTable{width:100%;margin-bottom:0}.ui-jqdialog-content .DelTable{width:100%;margin-bottom:0}.EditTable td input,.EditTable td select,.EditTable td textarea{margin:0}.EditTable td textarea{width:auto;height:auto}.ui-jqdialog-content td.EditButton{border-top:0 none;border-left:0 none;border-right:0 none;padding:5px 0}.ui-jqdialog-content td.EditButton-ltr{text-align:right}.ui-jqdialog-content td.EditButton-rtl{text-align:left}.ui-jqdialog-content td.navButton{text-align:left;border-left:0 none;border-top:0 none;border-right:0 none;padding:5px 0}.ui-jqdialog-content td.navButton-ltr{text-align:left}.ui-jqdialog-content td.navButton-ltr>.fm-button{float:left}.ui-jqdialog-content td.navButton-rtl{text-align:right}.ui-jqdialog-content td.navButton-rtl>.fm-button{float:right}.ui-jqdialog-content .FormElement{width:100%;box-sizing:border-box}.ui-jqdialog-content input.FormElement,.ui-jqdialog-content select.FormElement{padding:.3em}.ui-jqdialog-content .data-line{padding-top:.1em;border:0 none}.ui-jqdialog-content .CaptionTD{vertical-align:middle;border:0 none;padding:2px;white-space:nowrap}.ui-jqdialog-content .DataTD{padding:2px;border-width:0;border-style:none;vertical-align:top}.ui-jqgrid-jquery-ui.ui-jqdialog .form-view-data>span{border-width:1px;border-style:solid;border-color:inherit;border-radius:3px;display:block;padding:.2em}.ui-jqgrid-jquery-ui.ui-jqdialog .form-view-label>label{font-weight:700}.ui-jqgrid-bootstrap.ui-jqdialog .ui-jqdialog-content .form-view-data>span{height:100%;width:auto}.ui-jqdialog .fm-button{display:inline-block;padding:.4em .5em;text-decoration:none;cursor:pointer;position:relative;text-align:center;zoom:1}.ui-jqdialog.ui-jqgrid-bootstrap .navButton .fm-button{padding:.375em .75em;margin-left:.125em}.ui-jqdialog .fm-button>span{display:inline-block;vertical-align:middle}.ui-jqdialog .fm-button .fm-button-text{padding:0 .2em}.ui-jqdialog .EditButton-ltr .fm-button-icon-left .fm-button-icon{margin-right:.2em}.ui-jqdialog .EditButton-ltr .fm-button-icon-right .fm-button-icon{margin-left:.2em}.ui-jqdialog .EditButton-rtl .fm-button-icon-right .fm-button-icon{margin-right:.2em}.ui-jqdialog .EditButton-rtl .fm-button-icon-left .fm-button-icon{margin-left:.2em}.delmsg{padding:.5em}.ui-jqgrid .selected-row,.ui-jqgrid .selected-row td{font-style:normal;border-left:0 none}.ui-jqgrid .jqgrow .ui-jqgrid-actions{display:inline-block;vertical-align:middle;margin:0}.jqgrow .ui-jqgrid-actions .ui-pg-div{cursor:pointer;float:left;margin:0 1px}.ui-jqgrid .tree-wrap{display:inline-block;vertical-align:middle;white-space:nowrap;overflow:hidden}.ui-jqgrid .treeclick{cursor:pointer;display:inline-block;vertical-align:middle;width:18px;overflow:hidden}.ui-jqgrid .ui-jqgrid-bdiv .jqgroup .tree-wrap{text-align:center;padding-left:.1em}.ui-jqgrid .ui-jqgrid-bdiv .jqgroup .tree-wrap.glyphicon{margin-top:-.18em}* iframe.jqm{position:absolute;top:0;left:0;z-index:-1}.ui-jqgrid-dnd tr td{border-right-width:1px;border-right-color:inherit;border-right-style:solid;height:20px}.ui-jqgrid .ui-jqgrid-caption-rtl{text-align:right}.ui-jqgrid .ui-jqgrid-hbox-rtl{float:right;padding-left:20px}.ui-jqgrid .ui-jqgrid-resize-ltr{right:0;margin:0}.ui-jqgrid .ui-jqgrid-resize-rtl{left:0;margin:0}.ui-jqgrid .ui-sort-rtl{left:0}.ui-jqgrid .cell-wrapper,.ui-jqgrid .cell-wrapperleaf{display:inline-block;vertical-align:middle}.ui-jqgrid .ui-ellipsis{-moz-text-overflow:ellipsis;text-overflow:ellipsis}.ui-search-menu{position:absolute;padding:.2em}.ui-search-menu.ui-menu .ui-jqgrid-menu-item{list-style-image:none;padding-right:0;padding-left:0}.ui-search-menu.ui-menu .ui-jqgrid-menu-item a{text-decoration:none;display:block}.ui-search-toolbar>.ui-th-column>div{position:relative;height:auto;overflow:hidden}.ui-search-toolbar .ui-search-table{padding:0;border:0 none;height:20px;width:100%}.table-hover .ui-search-table tbody tr:hover{background-color:inherit}.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th{padding:0 .1em}.ui-search-toolbar .ui-search-table .ui-search-oper{width:20px;text-align:center}.ui-search-toolbar .ui-th-column .ui-search-table .ui-search-input{padding:0 .1em}.ui-search-input input[type=text]{width:100%}a.clearsearchclass,a.g-menu-item,a.soptclass{text-decoration:none;cursor:pointer}.ui-search-menu .ui-jqgrid-menu-item .g-menu-item{padding:.2em}.ui-menu-jqueryui .ui-jqgrid-menu-item .g-menu-item:not(.ui-state-hover){border:1px solid transparent}.ui-menu-jqueryui .ui-jqgrid-menu-item .g-menu-item:hover{font-weight:400}.ui-search-oper{padding:0}.ui-search-clear{text-align:center;padding:0}.ui-search-clear .clearsearchclass,.ui-search-oper .soptclass{padding:.1em;line-height:1em}.ui-jqgrid-jquery-ui .ui-search-clear .clearsearchclass:not(.ui-state-hover),.ui-jqgrid-jquery-ui .ui-search-oper .soptclass:not(.ui-state-hover){border:1px solid transparent}.ui-search-clear .clearsearchclass span{position:relative}.ui-search-input{text-align:center}.ui-jqgrid .ui-search-table .ui-search-input>input[type=text],.ui-jqgrid .ui-search-table .ui-search-input>select{display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ui-jqgrid>.ui-jqgrid-view button,.ui-jqgrid>.ui-jqgrid-view input,.ui-jqgrid>.ui-jqgrid-view select,.ui-jqgrid>.ui-jqgrid-view textarea{font-size:inherit;text-align:inherit}.ui-jqgrid .s-ico>.ui-grid-ico-sort.glyphicon{font-size:10px}.ui-jqgrid .s-ico>.ui-icon-asc.glyphicon{margin-top:-.23em}.ui-jqgrid .s-ico>.ui-icon-desc.glyphicon{margin-top:-.34em}.ui-jqgrid .s-ico>.ui-grid-ico-sort.fa{width:.63em}.ui-jqgrid .s-ico>.ui-icon-asc.fa{line-height:.81em;top:.07em}.ui-jqgrid .s-ico>.ui-icon-desc.fa{line-height:.81em;top:-.81em}.ui-jqgrid .s-ico>.ui-icon-asc.fa.ui-sort-ltr,.ui-jqgrid .s-ico>.ui-icon-desc.fa.ui-sort-ltr{left:0}.ui-jqgrid .s-ico>.ui-icon-asc.fa.ui-sort-rtl,.ui-jqgrid .s-ico>.ui-icon-desc.fa.ui-sort-rtl{right:0}.ui-jqgrid .s-ico>.ui-state-disabled.fa{padding:0}.jqgrow .ui-pg-div>span.fa{font-weight:400;font-size:12px;vertical-align:baseline;background:0 0;border:0 none}.ui-subgrid>.subgrid-cell span.fa{font-weight:400;font-size:12px;text-indent:0;background:0 0;border:0 none;margin-bottom:4px}.jqgrow>.ui-sgcollapsed span.fa{font-weight:400;font-size:12px;text-indent:0;background:0 0;border:0 none;margin:0}.ui-jqgrid .ui-resizable-se.fa{-webkit-filter:alpha(opacity=40);-moz-filter:alpha(opacity=40);-o-filter:alpha(opacity=40);-ms-opacity:.4;opacity:.4;background:0 0;border-style:none;right:-3px;font-weight:400}.ui-jqgrid-ltr .ui-resizable-se.fa{right:-3px;bottom:0}.ui-jqgrid-rtl .ui-resizable-se.fa{left:0;bottom:1px}.jqContextMenu .ui-menu .ui-jqgrid-menu-item a.ui-state-hover{font-weight:400;margin:-1px}.jqContextMenu .ui-menu .ui-jqgrid-menu-item.ui-state-hover{font-weight:400;margin:-1px}.jqContextMenu .ui-menu-icons>.ui-jqgrid-menu-item{font-size:11px}.ui-jqgrid-showHideColumnMenu .ui-jqgrid-menu-item:hover{font-weight:400}.ui-jqgrid-disablePointerEvents{pointer-events:none}.ui-jqgrid.ui-jqgrid-bootstrap{border:1px solid #ddd;-ms-border-radius:6px;border-radius:6px}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-view>.ui-jqgrid-toppager{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-view>.ui-userdata{background-color:#f0f0f0}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-hdiv,.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-legacy-subgrid>thead{background-color:#e5e5e5}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-view>.ui-jqgrid-sdiv td{background-color:#f9f9f9}.ui-jqdialog.ui-jqgrid-bootstrap>.modal-dialog{margin-top:0}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-titlebar .ui-jqdialog-title,.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-errorbar .ui-jqgrid-error,.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-titlebar .ui-jqgrid-title{font-size:16px}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-view{font-size:12px}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-pager .fa,.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-view .fa{font-size:14px}.ui-jqdialog.ui-jqgrid-bootstrap{font-size:14px}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-content .CaptionTD{padding:.5em}.ui-jqgrid.ui-jqgrid-bootstrap .frozen-bdiv.ui-jqgrid-bdiv .ui-jqgrid-btable{background-color:#fff}.ui-jqgrid.ui-jqgrid-bootstrap tr.jqfoot>td,.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgfirstrow>td,.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgroup>td,.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgrow>td{padding:.2em .3em}.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgfirstrow>td{padding:0 .3em}.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgfirstrow>td.td_cbox,.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgrow>td.td_cbox{padding:0}.ui-jqgrid.ui-jqgrid-bootstrap .jqgrow>td>.cbox{height:18px;width:18px;display:inline-block;vertical-align:middle;text-align:center}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-btable td.jqgrid-rownum{padding:.2em .3em}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-titlebar,.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-caption{background-color:#cacaca;-ms-border-top-left-radius:6px;border-top-left-radius:6px;-ms-border-top-right-radius:6px;border-top-right-radius:6px}.modal-backdrop.jqgrid-overlay{-ms-opacity:.35;opacity:.35;-webkit-filter:Alpha(Opacity=35);-moz-filter:Alpha(Opacity=35);-o-filter:Alpha(Opacity=35);filter:Alpha(Opacity=35)}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-content{border:0;padding:.3em .2em;background:#fff;height:auto}.ui-jqdialog.ui-jqgrid-bootstrap .modal-dialog{width:auto}.ui-jqdialog.ui-widget{overflow:hidden}.ui-jqdialog .ui-resizable-handle{cursor:se-resize;position:absolute;-ms-touch-action:none;touch-action:none}.ui-jqdialog.ui-jqgrid-bootstrap .modal-content{overflow:hidden}.ui-jqdialog.ui-jqgrid-bootstrap .modal-content>.ui-resizable-handle.fa{bottom:1px;right:1px;height:12px;width:12px}.ui-jqdialog.ui-jqgrid-bootstrap .modal-content>.ui-resizable-handle.glyphicon{right:-.4em}.ui-jqgrid.ui-jqgrid-bootstrap .disabled{opacity:.35;filter:Alpha(Opacity=35)}.ui-jqgrid-bootstrap.ui-jqgrid-resize-mark{border:1px solid #aaa;background-color:#ccc;color:#222;font-weight:700}.ui-jqgrid .jqgfirstrow{border-bottom:0 none;border-top:0 none;height:0}.ui-jqgrid.ui-jqgrid-bootstrap .jqgfirstrow td{border-bottom:0 none;border-top:0 none}.ui-jqgrid.ui-jqgrid-bootstrap .ui-pg-table .ui-pg-button.ui-state-disabled:hover{margin:0}.ui-jqgrid.ui-jqgrid-bootstrap .navtable .ui-pg-button.ui-state-disabled:hover{margin:0}.ui-jqgrid.ui-jqgrid-bootstrap .ui-pg-table .ui-pg-button{margin:.2em 0;padding:.2em 0;border-radius:.4em}.ui-search-input .form-control:not([size]):not([multiple]){height:auto;min-height:18px}.ui-search-input input[type=text]{padding:0}.ui-search-input input[type=text].form-control{padding:0 .3em}.ui-search-input select.form-control{padding:0}.ui-search-input input[type=checkbox].form-control{width:auto;margin-left:auto;margin-right:auto;border-radius:0;background:0 transparent}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-actions .ui-pg-div.btn{padding:0;margin:0;box-shadow:none}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-actions .ui-pg-div.btn:not(:first-child){margin-left:.125em}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-actions .ui-pg-div.btn.ui-inline-save{margin-left:0}.ui-jqgrid.ui-jqgrid-bootstrap tr.jqgrow .sgbutton-div .sgbutton.btn{padding:0;cursor:pointer;border:1px solid transparent;margin:-.3em -.3em}.ui-jqgrid.ui-jqgrid-bootstrap .sgbutton-div .sgbutton.btn:focus,.ui-jqgrid.ui-jqgrid-bootstrap .sgbutton-div .sgbutton.btn:hover{border:1px solid #333}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-content{border-top-left-radius:0;border-top-right-radius:0}.ui-jqgrid.ui-jqgrid-bootstrap .ui-pager-control .ui-pg-input{display:inline-block;font-size:12px;padding:.3em}.ui-jqgrid.ui-jqgrid-bootstrap>.ui-jqgrid-pager{font-size:12px}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-bootstrap-corner-top{border-top-left-radius:6px;border-top-right-radius:6px}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-bootstrap-corner-bottom{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.ui-jqgrid.ui-jqgrid-bootstrap .ui-pager-control .ui-pg-selbox{font-size:12px;padding:0}.ui-jqdialog.ui-jqgrid-bootstrap .FormData .CaptionTD{font-size:14px}.FormData .DataTD{vertical-align:middle}.FormData .DataTD input[type=checkbox]{width:auto;vertical-align:middle}.ui-jqdialog.ui-jqgrid-bootstrap .FormData .DataTD input.form-control[type=checkbox]{width:2.193em;height:2.193em}.DelTable .delmsg{padding:.2em}.queryresult{margin-bottom:.5em;padding:.25em}.group.modal-content tr td{padding:.2em .1em}.searchFilter .form-control{padding:.1em}.searchFilter .form-control:not([size]):not([multiple]){height:2em}.searchFilter .btn{margin-left:.125em;padding:.2em .375em}.ui-jqgrid .searchFilter table.group td{padding:1px}.ui-jqgrid .searchFilter table{border-spacing:2px}.ui-jqdialog.ui-jqgrid-bootstrap .modal-header .close{margin-top:-.7em}.ui-jqdialog .glyphicon,.ui-jqgrid .glyphicon{font-size:12px;top:auto}.ui-jqdialog.ui-jqgrid-bootstrap .glyphicon,.ui-jqgrid.ui-jqgrid-bootstrap .glyphicon{font-size:14px;top:auto;height:1em;width:1.28em}.ui-jqgrid .ui-pg-button span.glyphicon{display:inline-block;text-align:center;vertical-align:middle}.ui-jqgrid-actions .glyphicon{padding:.1em}.ui-jqgrid.ui-jqgrid-bootstrap .ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>span.glyphicon{margin-top:-.125em;margin-left:-.275em}.ui-jqdialog.ui-jqgrid-bootstrap .ui-jqdialog-titlebar>.ui-jqdialog-titlebar-close>span.glyphicon{margin-top:-.1em;margin-left:-.28em}.tree-wrap>.treeclick{line-height:1}.tree-wrap>.treeclick.glyphicon{margin-top:-.2em;font-size:12px}.subgrid-data .ui-jqgrid-bootstrap .ui-jqgrid-bdiv .ui-jqgrid-btable,.subgrid-data .ui-jqgrid-bootstrap .ui-jqgrid-hdiv .ui-jqgrid-htable{background-color:transparent}.subgrid-data .ui-jqgrid-legacy-subgrid{margin:0} /*# sourceMappingURL=ui.jqgrid.min.css.map */prewikka-5.2.0/prewikka/htdocs/css/ui.jqgrid.min.css.map0000644000000000000000000002634213726165107023145 0ustar rootroot00000000000000{"version":3,"sources":["ui.jqgrid.css"],"names":[],"mappings":"AAAA;;;AAMA,WACC,SAAU,SACV,gBAAiB,YACjB,mBAAoB,YACpB,WAAY,YACZ,iBAAkB,KAClB,aAAc,aAEf,eACC,YAAa,OAEd,iBACC,gBAAiB,SACjB,eAAgB,EAChB,aAAc,EACd,aAAc,KAEf,oBACC,QAAS,EAEV,2BACC,SAAU,SACV,gBAAiB,WACjB,mBAAoB,WACpB,WAAY,WACZ,KAAM,EACN,IAAK,EACL,QAAS,EACT,UAAW,KAEZ,6BAEA,kCADA,mCAEC,mBAAoB,QACpB,gBAAiB,QACjB,WAAY,QAMb,mCADA,+BADA,+BAGC,QAAS,KAAK,KAAK,KAAK,KACxB,SAAU,SACV,UAAW,KACX,YAAa,EAAE,KACf,aAAc,EAAE,KAChB,WAAY,EAAE,KAEf,oBACC,WAAY,MACZ,cAAe,EACf,SAAU,KAEX,8BACA,mCACC,WAAY,KAEb,kCACA,mCACC,WAAY,MAIb,kDADA,8CAEC,eAAgB,OAChB,WAAY,OACZ,gBAAiB,KACjB,SAAU,SACV,IAAK,IACL,MAAO,MACP,YAAa,MACb,UAAW,KACX,OAAQ,MAAO,EAAE,EAAE,EACnB,QAAS,KACT,OAAQ,IAAI,MAAM,YAClB,OAAQ,MACR,OAAQ,QACR,mBAAoB,WACpB,gBAAiB,WACjB,WAAY,WACZ,iBAAkB,aAClB,aAAc,aACd,oBAAqB,KACrB,iBAAkB,KAClB,gBAAiB,KACjB,YAAa,KAGd,uEACC,OAAQ,KAAK,EAAE,EAAE,EAElB,wDACC,MAAO,KAER,4DACC,KAAM,KAEP,mEACC,MAAO,KAER,mEACC,KAAM,KAGP,kDADA,8CAEC,kBAAmB,KACnB,cAAe,KAKhB,0DAFA,+CACA,oDAEC,SAAU,SACV,KAAM,KAIP,0DAFA,mDACA,oDAEC,SAAU,SACV,MAAO,KAER,mDACC,WAAY,EACZ,YAAa,EAGd,uDADA,mDAEC,QAAS,MAGV,+DADA,2DAEC,SAAU,SACV,IAAK,KAGN,mEADA,qEAEC,MAAO,IAGR,sEACC,WAAY,KAGb,iEACA,wEAGC,UAAW,KACX,WAAY,KAEb,iEACC,YAAa,KAEd,wEACC,YAAa,KAEd,uDACC,WAAY,KAEb,iEACC,WAAY,OACZ,YAAa,OAId,kCACC,MAAO,KACP,OAAQ,KAET,qCACC,OAAQ,IACR,MAAO,KAER,4CACC,MAAO,KACP,OAAQ,OAIT,2CACC,SAAU,SACV,OAAQ,EACR,QAAS,EACT,SAAU,OACV,YAAa,EAAE,KACf,WAAY,EAAE,KACd,aAAc,EAAE,KAChB,OAAQ,KAET,2BACC,MAAO,KACP,cAAe,KAEhB,6BACC,aAAc,MACd,OAAQ,EAET,gCACC,OAAQ,KACR,QAAS,EAAE,IAAI,EAAE,IAElB,iDACC,cAAe,EAAE,KACjB,WAAY,EAAE,KAEf,0CACC,QAAS,EAEV,sDACC,SAAU,OACV,SAAU,SACV,OAAQ,KACR,OAAQ,IAAI,IAEb,4DACC,eAAgB,OAEjB,8DACC,WAAY,OACZ,eAAgB,SAChB,OAAQ,EAGT,6CACA,oDAFA,uCAGC,SAAU,OACV,YAAa,OACb,WAAY,OAEb,uCACC,eAAgB,OAChB,OAAQ,KACR,eAAgB,OAChB,WAAY,EAAE,KAEf,6CACC,SAAU,SACV,eAAgB,OAChB,WAAY,EAAE,KACd,cAAe,EAAE,KAGlB,0CADA,WAEC,YAAa,EAAE,KAGhB,0CADA,WAEC,aAAc,EAAE,KAEjB,iBACC,aAAc,IAAI,MAEnB,iBACC,YAAa,IAAI,MAElB,yBACC,YAAa,OACb,KAAM,EACN,OAAQ,KAET,oCACC,OAAQ,IAAI,EAEb,+BACC,OAAQ,KACR,OAAQ,QACR,WAAY,OACZ,eAAgB,OAEjB,mDACC,OAAQ,KACR,MAAO,KAER,6CACC,YAAa,KACb,aAAc,KAEf,6DACC,IAAK,EACL,OAAQ,KACR,MAAO,KACP,SAAU,SACV,OAAQ,WACR,sBAAuB,KACvB,gBAAiB,KACjB,iBAAkB,UAClB,oBAAqB,KACrB,YAAa,KACb,QAAS,OACT,SAAU,OAEX,uEACC,kBAAmB,iBAAiB,cAAc,eAClD,eAAgB,iBAAiB,cAAc,SAC/C,aAAc,iBAAiB,cAAc,eAC7C,cAAe,iBAAiB,cAAc,eAC9C,UAAW,iBAAiB,cAAc,eAC1C,iBAAkB,OAAO,OACzB,OAAQ,EACR,KAAM,IAGP,6BACC,SAAU,OACV,SAAU,SACV,QAAS,OAEV,kBAQC,OAAQ,QAET,oCACC,OAAQ,kBAET,kBACC,SAAU,SACV,MAAO,MACP,OAAQ,QACR,QAAS,aACT,eAAgB,OAChB,OAAQ,EAAE,KAEX,oCACC,QAAS,MACT,SAAU,SAEX,4CACC,MAAO,KACP,WAAY,EAEb,uCACC,IAAK,KAEN,wCACC,IAAK,MAEN,wCACI,oBAAqB,MAAM,MAE/B,uCACC,YAAa,KAEd,uCACC,aAAc,EAEf,0CACC,SAAU,SACV,KAAM,MACN,IAAK,EACL,UAAW,IACX,eAAgB,MAGjB,6BACC,OAAQ,QAET,gDACC,OAAQ,QAET,8CACC,iBAAkB,IAClB,iBAAkB,MAEnB,4DACC,iBAAkB,IAClB,iBAAkB,MAEnB,oDACC,OAAQ,IAAI,EAAE,EAAE,EAEjB,qDACC,OAAQ,IAAI,EAAE,EAAE,EAIjB,2BACC,WAAY,IACZ,SAAU,SACV,OAAQ,EACR,QAAS,EACT,SAAU,KACV,WAAY,KAEb,6BACC,aAAc,MACd,OAAQ,EACR,cAAe,KACf,OAAQ,IAGT,sBADA,qBAEC,cAAe,KAIhB,wBADA,yBADA,wBAGA,4BACA,+BACC,SAAU,OACV,YAAa,IACb,eAAgB,OAChB,WAAY,OACZ,OAAQ,KACR,WAAY,EAAE,KACd,oBAAqB,IACrB,oBAAqB,MAItB,4CADA,6CADA,4CAGA,gDACC,oBAAqB,QAItB,wBADA,yBADA,wBAGC,QAAS,EAAE,IAAI,EAAE,IAElB,4BACC,QAAS,EAEV,6BACC,QAAS,EAAE,IAAI,EAAE,IACjB,WAAY,EAAE,KACd,YAAa,EAAE,KACf,OAAQ,EACR,mBAAoB,IACpB,mBAAoB,MACpB,cAAe,EAAE,KAElB,iDACC,mBAAoB,QAErB,qCACC,QAAS,EAIV,wBADA,yBADA,wBAGC,YAAa,IAEd,wBACC,YAAa,IAEd,4CACC,WAAY,KACZ,kBAAmB,EACnB,kBAAmB,KACnB,mBAAoB,IACpB,mBAAoB,MAErB,gEACC,aAAc,QAEf,4CACC,WAAY,MACZ,mBAAoB,EACpB,mBAAoB,KACpB,kBAAmB,IACnB,kBAAmB,MAEpB,gEACC,aAAc,QAEf,8CACC,QAAS,EAAE,IAAI,EAAE,IACjB,OAAQ,EACR,aAAc,EACd,aAAc,KAEf,8CACC,oBAAqB,IACrB,oBAAqB,MAEtB,kEACC,oBAAqB,QAEtB,8BACC,QAAS,EACT,WAAY,OACZ,eAAgB,OAEjB,qCACC,WAAY,OACZ,eAAgB,OAEjB,gCACC,QAAS,EAEV,4BACC,OAAQ,KACR,MAAO,KACP,OAAQ,QACR,WAAY,OACZ,eAAgB,OAEjB,kCACA,4BACC,MAAO,EACP,KAAM,EACN,OAAQ,WACR,sBAAuB,KACvB,gBAAiB,KACjB,iBAAkB,UAClB,oBAAqB,KACrB,YAAa,KACb,SAAU,SACV,IAAK,EACL,SAAU,OACV,QAAS,KACT,kBAAmB,IACnB,mBAAoB,IACpB,QAAS,MAGV,4BACC,OAAQ,YACR,QAAS,YAIV,2CACC,SAAU,SACV,OAAQ,EACR,QAAS,EACT,SAAU,OACV,YAAa,EAAE,KACf,WAAY,EAAE,KACd,aAAc,EAAE,KAEjB,6BACC,aAAc,MACd,cAAe,EAEhB,yBACC,YAAa,IACb,SAAU,OACV,YAAa,OACb,OAAQ,KACR,QAAS,EAAE,IAAI,EAAE,IACjB,iBAAkB,IAClB,iBAAkB,MAClB,oBAAqB,IACrB,oBAAqB,MAEtB,6CACC,iBAAkB,QAClB,oBAAqB,QAEtB,6BACC,WAAY,KACZ,kBAAmB,EACnB,kBAAmB,KACnB,mBAAoB,IACpB,mBAAoB,MAErB,iDACC,aAAc,QAEf,6BACC,WAAY,MACZ,kBAAmB,IACnB,kBAAmB,MACnB,mBAAoB,EACpB,mBAAoB,KAErB,iDACC,aAAc,QAIf,4BACC,OAAQ,EAAE,KACV,OAAQ,EACR,QAAS,EACT,SAAU,SACV,gBAAiB,WACjB,mBAAoB,WACpB,WAAY,WACZ,OAAQ,KACR,WAAY,KACZ,SAAU,OACV,UAAW,KAEZ,8BAEA,mCADA,oCAEC,mBAAoB,QACpB,gBAAiB,QACjB,WAAY,QAGb,8CADA,iDAEC,SAAU,SACV,YAAa,EACb,cAAe,EACf,WAAY,EAEb,qCACC,WAAY,KAEb,uCACC,WAAY,OACZ,YAAa,IAEd,sCACC,WAAY,MAEb,wBACC,SAAU,SACV,QAAS,EACT,MAAO,KACP,OAAQ,EAET,2BACC,WAAY,QACZ,aAAc,KAEf,8CACA,gFACC,OAAQ,IAAI,MAAM,YAEnB,+BACC,aAAc,QAMf,qDACA,4CAFA,4CAFA,wCACA,+BAFA,+BAMC,aAAc,MACd,aAAc,QAEf,2BACC,YAAa,IACb,eAAgB,OAChB,QAAS,IAEV,2CACC,QAAS,aACT,OAAQ,KAET,8BACC,QAAS,MACT,OAAQ,IACR,MAAO,KAER,qCACA,sCACC,OAAQ,KACR,MAAO,KACP,OAAQ,EACR,YAAa,QAEd,6DACC,OAAQ,KAET,sCACC,QAAS,MACT,QAAS,IAEV,yBACC,OAAQ,KACR,YAAa,IAAI,MAAM,KACvB,aAAc,IAAI,MAAM,KACxB,OAAQ,KACR,MAAO,MAER,2BACC,YAAa,IACb,OAAQ,KACR,OAAQ,EAAE,KAAK,EAAE,KACjB,QAAS,OAEV,uCACC,QAAS,IAAI,EACb,MAAO,KACP,SAAU,SAEX,0CACC,OAAQ,QAET,oDACC,MAAO,KACP,OAAQ,EAAE,IAEX,oBACA,qBACA,uBACC,OAAQ,EAET,uBACC,MAAO,KACP,OAAQ,KAET,+CACC,YAAa,EAAE,KACf,aAAc,EAAE,KAChB,WAAY,EAAE,KACd,OAAQ,EACR,QAAS,EACT,SAAU,SACV,OAAQ,KACR,WAAY,KACZ,SAAU,OAEX,0CACC,QAAS,IAAI,EACb,MAAO,KACP,SAAU,SAEX,6CACC,OAAQ,QAET,uDACC,MAAO,KACP,OAAQ,EAAE,IAIX,sCACC,OAAQ,IACR,eAAgB,OAEjB,uDACC,aAAc,KACd,cAAe,KAGhB,2DADA,kDAEC,YAAa,IAEd,sBACC,WAAY,OACZ,eAAgB,OAChB,QAAS,aAEV,iEACC,YAAa,KACb,aAAc,KACd,MAAO,KAIR,mCACC,gBAAiB,YACjB,mBAAoB,YACpB,WAAY,YAEb,mDACI,gBAAiB,WACpB,mBAAoB,WACpB,WAAY,WAEb,qDACC,WAAY,OACZ,eAAgB,OAEjB,kDACC,QAAS,aAEV,uBACC,OAAQ,EACR,QAAS,EACT,MAAO,KAER,UACC,OAAQ,QAET,6BACC,aAAc,MAEf,2CACC,OAAQ,KACR,WAAY,EAAE,KACd,oBAAqB,IACrB,oBAAqB,MAEtB,+DACC,oBAAqB,QAEtB,0BACC,OAAQ,KAET,qDACC,MAAO,MAER,qDACC,MAAO,KAIR,oBACC,SAAU,SACV,IAAK,IACL,KAAM,IACN,MAAO,KACP,QAAS,IACT,QAAS,IACT,OAAQ,IACR,WAAY,OACZ,YAAa,IACb,QAAS,KACT,aAAc,IACd,UAAW,KAEZ,2BACC,QAAS,KACT,QAAS,IAEV,yBACC,SAAU,SACV,IAAK,EACL,KAAM,EACN,QAAS,GAIV,wCACC,YAAa,EAAE,KACf,aAAc,EAAE,KAChB,OAAQ,KACR,SAAU,OAIX,wBACC,UAAW,KAEZ,aACC,QAAS,KACT,MAAO,MACP,SAAU,SACV,UAAW,KACX,SAAU,QAEX,iCACC,QAAS,KAEV,2BACC,MAAO,KACP,KAAM,KAGP,kCADA,qBAEC,OAAQ,EACR,QAAS,KAAK,KACd,WAAY,IACZ,OAAQ,KAET,2BACC,QAAS,KAAK,IACd,aAAc,IACd,SAAU,SACV,OAAQ,KACR,MAAO,KACP,SAAU,QACV,QAAS,KACT,OAAQ,KACR,MAAO,MACP,WAAY,OAGb,8BADA,4BAEC,OAAQ,KACR,MAAO,KAIR,+BACC,OAAQ,EAET,gCACC,MAAO,KACP,cAAe,EAEhB,+BACC,MAAO,KACP,cAAe,EAEhB,oBACA,qBACA,uBACC,OAAQ,EAET,uBACC,MAAO,KACP,OAAQ,KAET,mCACC,WAAY,EAAE,KACd,YAAa,EAAE,KACf,aAAc,EAAE,KAChB,QAAS,IAAI,EAEd,uCACC,WAAY,MAEb,uCACC,WAAY,KAEb,kCACC,WAAY,KACZ,YAAa,EAAE,KACf,WAAY,EAAE,KACd,aAAc,EAAE,KAChB,QAAS,IAAI,EAEd,sCACC,WAAY,KAEb,iDACC,MAAO,KAER,sCACC,WAAY,MAEb,iDACC,MAAO,MAER,kCACC,MAAO,KACP,WAAY,WAEb,uCACA,wCACC,QAAS,KAEV,gCACC,YAAa,KACb,OAAQ,EAAE,KAEX,gCACC,eAAgB,OAChB,OAAQ,EAAE,KACV,QAAS,IACT,YAAa,OAEd,6BACC,QAAS,IACT,aAAc,EACd,aAAc,KACd,eAAgB,IAKjB,sDACC,aAAc,IACd,aAAc,MACd,aAAc,QACd,cAAe,IACf,QAAS,MACT,QAAS,KAEV,wDACC,YAAa,IAEd,2EACC,OAAQ,KACR,MAAO,KAER,wBACC,QAAS,aACT,QAAS,KAAK,KACd,gBAAiB,KACjB,OAAQ,QACR,SAAU,SACV,WAAY,OACZ,KAAM,EAEP,uDACC,QAAS,OAAO,MAChB,YAAa,OAEd,6BACC,QAAS,aACT,eAAgB,OAEjB,wCACC,QAAS,EAAE,KAEZ,kEACC,aAAc,KAEf,mEACC,YAAa,KAEd,mEACC,aAAc,KAEf,kEACC,YAAa,KAEd,QACC,QAAS,KAGV,yBACA,4BACC,WAAY,OACZ,YAAa,EAAE,KAIhB,sCACC,QAAS,aACT,eAAgB,OAChB,OAAQ,EAET,sCACC,OAAQ,QACR,MAAO,KACP,OAAQ,EAAE,IAGX,sBACC,QAAS,aACT,eAAgB,OAChB,YAAa,OACb,SAAU,OAEX,sBACC,OAAQ,QACR,QAAS,aACT,eAAgB,OAChB,MAAO,KACP,SAAU,OAEX,+CACC,WAAY,OACZ,aAAc,KAEf,yDACC,WAAY,OAIb,aACC,SAAU,SACV,IAAK,EACL,KAAM,EACN,QAAS,GAEV,qBACC,mBAAoB,IACpB,mBAAoB,QACpB,mBAAoB,MACpB,OAAQ,KAIT,kCACC,WAAY,MAEb,+BACC,MAAO,MACP,aAAc,KAEf,iCACC,MAAO,EACP,OAAQ,EAET,iCACC,KAAM,EACN,OAAQ,EAET,wBACC,KAAM,EAGP,yBADA,6BAEC,QAAS,aACT,eAAgB,OAEjB,wBACC,mBAAoB,SACpB,cAAe,SAIhB,gBACC,SAAU,SACV,QAAS,KAEV,6CACC,iBAAkB,KAClB,cAAe,EACf,aAAc,EAEf,+CACC,gBAAiB,KACjB,QAAS,MAEV,qCACC,SAAU,SACV,OAAQ,KACR,SAAU,OAEX,oCACC,QAAS,EACT,OAAQ,EAAE,KACV,OAAQ,KACR,MAAO,KAER,6CACI,iBAAkB,QAEtB,mDACC,QAAS,EAAE,KAEZ,oDACC,MAAO,KACP,WAAY,OAEb,mEACC,QAAS,EAAE,KAEZ,kCACC,MAAO,KAIR,mBAFA,cACA,YAEC,gBAAiB,KACjB,OAAQ,QAET,kDACC,QAAS,KAEV,yEACC,OAAQ,IAAI,MAAM,YAEnB,0DACC,YAAa,IAGd,gBACC,QAAS,EAEV,iBACC,WAAY,OACZ,QAAS,EAGV,mCADA,2BAEC,QAAS,KACT,YAAa,IAGd,6EADA,qEAEC,OAAQ,IAAI,MAAM,YAEnB,wCACC,SAAU,SAEX,iBAAmB,WAAY,OAC/B,8DACA,oDACC,QAAS,MACT,gBAAiB,WACjB,mBAAoB,WACpB,WAAY,WAKb,kCAHA,iCACA,kCACA,oCAEC,UAAW,QACX,WAAY,QAGb,8CACC,UAAW,KAEZ,yCACC,WAAY,OAEb,0CACC,WAAY,OAGb,uCACC,MAAO,MAER,kCACC,YAAa,MACb,IAAK,MAEN,mCACC,YAAa,MACb,IAAK,OAEN,8CACA,+CACC,KAAM,EAEP,8CACA,+CACC,MAAO,EAER,wCACC,QAAS,EAEV,2BACC,YAAa,IACb,UAAW,KACX,eAAgB,SAChB,WAAY,IACZ,OAAQ,EAAE,KAEX,kCACC,YAAa,IACb,UAAW,KACX,YAAa,EACb,WAAY,IACZ,OAAQ,EAAE,KACV,cAAe,IAEhB,gCACC,YAAa,IACb,UAAW,KACX,YAAa,EACb,WAAY,IACZ,OAAQ,EAAE,KACV,OAAQ,EAET,+BACC,eAAgB,kBAChB,YAAa,kBACb,UAAW,kBAEX,YAAa,GACb,QAAS,GACT,WAAY,IACZ,aAAc,KACd,MAAO,KACP,YAAa,IAGd,mCACC,MAAO,KACP,OAAQ,EAET,mCACC,KAAM,EACN,OAAQ,IAIT,8DACC,YAAa,IACb,OAAQ,KAET,4DACC,YAAa,IACb,OAAQ,KAET,mDACC,UAAW,KAGZ,yDACC,YAAa,IAEd,gCACC,eAAgB,KAIjB,+BACC,OAAQ,IAAI,MAAM,KAClB,kBAAmB,IACnB,cAAe,IAEhB,mEACC,0BAA2B,EAC3B,2BAA4B,EAE7B,4DACC,iBAAkB,QAEnB,+CACA,+DACC,iBAAkB,QAEnB,kEACC,iBAAkB,QAEnB,+CACC,WAAY,EAIb,0EADA,oEADA,oEAGC,UAAW,KAEZ,+CACC,UAAW,KAGZ,oDADA,mDAEC,UAAW,KAEZ,iCACC,UAAW,KAEZ,iEACC,QAAS,KAEV,6EACC,iBAAkB,KAKnB,4CAHA,iDAEA,6CADA,4CAGC,QAAS,KAAK,KAEf,iDACC,QAAS,EAAE,KAEZ,yDACA,oDACC,QAAS,EAEV,gDACC,OAAQ,KACR,MAAO,KACP,QAAS,aACT,eAAgB,OAChB,WAAY,OAEb,kEACC,QAAS,KAAK,KAGf,uDADA,kDAEC,iBAAkB,QAClB,2BAA4B,IAC5B,uBAAwB,IACxB,4BAA6B,IAC7B,wBAAyB,IAG1B,+BACC,YAAa,IACb,QAAS,IACT,eAAgB,kBAChB,YAAa,kBACb,UAAW,kBACX,OAAQ,kBAGT,sDACC,OAAQ,EACR,QAAS,KAAK,KACd,WAAY,KACZ,OAAQ,KAET,+CACC,MAAO,KAER,uBACC,SAAU,OAEX,kCACC,OAAQ,UACR,SAAU,SACV,iBAAkB,KAClB,aAAc,KAEf,gDACC,SAAU,OAEX,wEACC,OAAQ,IACR,MAAO,IACP,OAAQ,KACR,MAAO,KAER,+EACC,MAAO,MAGR,yCACC,QAAS,IACT,OAAQ,kBAET,2CACC,OAAQ,IAAI,MAAM,KAClB,iBAAkB,KAClB,MAAO,KACP,YAAa,IAEd,wBACC,cAAe,EAAE,KACjB,WAAY,EAAE,KACd,OAAQ,EAET,+CACC,cAAe,EAAE,KACjB,WAAY,EAAE,KAEf,kFACC,OAAQ,EAET,+EACC,OAAQ,EAET,0DACC,OAAQ,KAAK,EACb,QAAS,KAAK,EACd,cAAe,KAEhB,2DACC,OAAQ,KACR,WAAY,KAEb,kCACC,QAAS,EAEV,+CACC,QAAS,EAAE,KAEZ,qCACC,QAAS,EAEV,mDACC,MAAO,KACP,YAAa,KACb,aAAc,KACd,cAAe,EACf,WAAY,EAAE,YAEf,iEACC,QAAS,EACT,OAAQ,EACR,WAAY,KAEb,mFACC,YAAa,OAEd,gFACC,YAAa,EAEd,qEACC,QAAS,EACT,OAAQ,QACR,OAAQ,IAAI,MAAM,YAClB,OAAQ,MAAM,MAEf,iEACA,iEACC,OAAQ,IAAI,MAAM,KAEnB,sDACC,uBAAwB,EACxB,wBAAyB,EAE1B,8DACC,QAAS,aACT,UAAW,KACX,QAAS,KAEV,gDACC,UAAW,KAEZ,+DACC,uBAAwB,IACxB,wBAAyB,IAE1B,kEACC,0BAA2B,IAC3B,2BAA4B,IAE7B,+DACC,UAAW,KACX,QAAS,EAEV,sDACC,UAAW,KAEZ,kBACC,eAAgB,OAEjB,uCACC,MAAO,KACP,eAAgB,OAEjB,qFACC,MAAO,QACP,OAAQ,QAET,kBACC,QAAS,KAEV,aACC,cAAe,KACf,QAAS,MAEV,2BACC,QAAS,KAAK,KAEf,4BACC,QAAS,KAEV,wDACC,OAAQ,IAET,mBACI,YAAa,OACb,QAAS,KAAK,OAElB,wCACC,QAAS,IAEV,+BACC,eAAgB,IAEjB,sDACC,WAAY,MAEb,wBACA,sBACC,UAAW,KACX,IAAK,KAEN,4CACA,0CACC,UAAW,KACX,IAAK,KACL,OAAQ,IACR,MAAO,OAER,wCACC,QAAS,aACT,WAAY,OAIZ,eAAgB,OAEjB,8BACC,QAAS,KAEV,4FACC,WAAY,QACZ,YAAa,QAEd,kGACC,WAAY,MACZ,YAAa,OAEd,sBACC,YAAa,EAEd,gCACC,WAAY,MACZ,UAAW,KAGZ,qEADA,qEAEI,iBAAkB,YAEtB,wCACC,OAAQ"}prewikka-5.2.0/prewikka/htdocs/css/ui.multiselect.min.css0000644000000000000000000000312513726165107023435 0ustar rootroot00000000000000.ui-multiselect{border:solid 1px;font-size:.8em}.ui-multiselect ul{-moz-user-select:none}.ui-multiselect li{margin:0;padding:0;cursor:default;line-height:20px;height:20px;font-size:11px;list-style:none}.ui-multiselect li a{color:#999;text-decoration:none;padding:0;display:block;float:left;cursor:pointer}.ui-multiselect li.ui-draggable-dragging{padding-left:10px}.ui-multiselect div.selected{position:relative;padding:0;margin:0;border:0;float:left}.ui-multiselect ul.selected{position:relative;padding:0;overflow:auto;overflow-x:hidden;background:#fff;margin:0;list-style:none;border:0;position:relative;width:100%}.ui-multiselect div.available{position:relative;padding:0;margin:0;border:0;float:left;border-left:1px solid}.ui-multiselect ul.available{position:relative;padding:0;overflow:auto;overflow-x:hidden;background:#fff;margin:0;list-style:none;border:0;width:100%}.ui-multiselect ul.available li{padding-left:10px}.ui-multiselect .ui-state-default{border:none;margin-bottom:1px;position:relative;padding-left:20px}.ui-multiselect .ui-state-hover{border:none}.ui-multiselect .ui-widget-header{border:none;font-size:11px;margin-bottom:1px}.ui-multiselect .add-all{float:right;padding:7px}.ui-multiselect .remove-all{float:right;padding:7px}.ui-multiselect .search{float:left;padding:4px}.ui-multiselect .count{float:left;padding:7px}.ui-multiselect li span.ui-icon-arrowthick-2-n-s{position:absolute;left:2px}.ui-multiselect li a.action{position:absolute;right:2px;top:2px}.ui-multiselect input.search{height:14px;padding:1px;opacity:.5;margin:4px;width:100px} /*# sourceMappingURL=ui.multiselect.min.css.map */prewikka-5.2.0/prewikka/htdocs/css/ui.multiselect.min.css.map0000644000000000000000000000172713726165107024217 0ustar rootroot00000000000000{"version":3,"sources":["ui.multiselect.css"],"names":[],"mappings":"AAGA,gBAAkB,OAAQ,MAAM,IAAK,UAAW,KAChD,mBAAqB,iBAAkB,KACvC,mBAAqB,OAAQ,EAAG,QAAS,EAAG,OAAQ,QAAS,YAAa,KAAM,OAAQ,KAAM,UAAW,KAAM,WAAY,KAC3H,qBAAuB,MAAO,KAAM,gBAAiB,KAAM,QAAS,EAAG,QAAS,MAAO,MAAO,KAAM,OAAQ,QAC5G,yCAA2C,aAAc,KAEzD,6BAA+B,SAAU,SAAU,QAAS,EAAG,OAAQ,EAAG,OAAQ,EAAG,MAAM,KAC3F,4BAA8B,SAAU,SAAU,QAAS,EAAG,SAAU,KAAM,WAAY,OAAQ,WAAY,KAAM,OAAQ,EAAG,WAAY,KAAM,OAAQ,EAAG,SAAU,SAAU,MAAO,KAGvL,8BAAgC,SAAU,SAAU,QAAS,EAAG,OAAQ,EAAG,OAAQ,EAAG,MAAM,KAAM,YAAa,IAAI,MACnH,6BAA+B,SAAU,SAAU,QAAS,EAAG,SAAU,KAAM,WAAY,OAAQ,WAAY,KAAM,OAAQ,EAAG,WAAY,KAAM,OAAQ,EAAG,MAAO,KACpK,gCAAkC,aAAc,KAEhD,kCAAoC,OAAQ,KAAM,cAAe,IAAK,SAAU,SAAU,aAAc,KACxG,gCAAkC,OAAQ,KAC1C,kCAAmC,OAAQ,KAAM,UAAW,KAAM,cAAe,IAEjF,yBAA2B,MAAO,MAAO,QAAS,IAClD,4BAA8B,MAAO,MAAO,QAAS,IACrD,wBAA0B,MAAO,KAAM,QAAS,IAChD,uBAAyB,MAAO,KAAM,QAAS,IAE/C,iDAAmD,SAAU,SAAU,KAAM,IAC7E,4BAA8B,SAAU,SAAU,MAAO,IAAK,IAAK,IAEnE,6BAA+B,OAAQ,KAAM,QAAS,IAAK,QAAS,GAAK,OAAQ,IAAK,MAAO"}prewikka-5.2.0/prewikka/htdocs/fonts/0000755000000000000000000000000013726165110017525 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/fonts/FontAwesome.otf0000644000000000000000000040723013726165107022502 0ustar rootroot00000000000000OTTO  CFF 9s7EPAR(l0OS/22z^`cmapǢThead6hhea P$hmtxJ+t maxpP `name>$# h postx  FontAwesomeC   U6U6 22  ",04<>EGMT\_ehmqy}#)4>HT_lp{ '4=GRYfoy &,39COVcoz"/5;FPUZes}&+16<EOW_hmqv| )04=DPX\aju(,26GYhy %16;>EMUckox    $ 5 G V g l p v    & * - 0 3 6 9 < ? B F O _ c u     & 5 B Q a f m t y    ! % ) - 1 5 9 = A H L P T X \ ` d h l p t x |       % , 3 7 ; ? C G K O V Z ^ b f j n r v z ~   !%)-159=AEJNRVZ^bfjnrvz~ "&*.26:>BFJNRVZ^bfjnrvz~ "&*.29@GNU\cjqx  '.5<CJQX_fmt{ '.5<kvglassmusicsearchenvelopeheartstarstar_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflagheadphonesvolume_offvolume_downvolume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_heighttext_widthalign_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencilmap_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_rightplus_signminus_signremove_signok_signquestion_signinfo_signscreenshotremove_circleok_circleban_circlearrow_leftarrow_rightarrow_uparrow_downshare_altresize_fullresize_smallexclamation_signgiftleaffireeye_openeye_closewarning_signplanecalendarrandomcommentmagnetchevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontalbar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_altstar_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_signupload_altlemonphonecheck_emptybookmark_emptyphone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificatehand_righthand_lefthand_uphand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilterbriefcasefullscreennotequalinfinitylessequalgrouplinkcloudbeakercutcopypaper_clipsavesign_blankreorderulolstrikethroughunderlinetablemagictruckpinterestpinterest_signgoogle_plus_signgoogle_plusmoneycaret_downcaret_upcaret_leftcaret_rightcolumnssortsort_downsort_upenvelope_altlinkedinundolegaldashboardcomment_altcomments_altboltsitemapumbrellapastelight_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospitalambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_downangle_leftangle_rightangle_upangle_downdesktoplaptoptabletmobile_phonecircle_blankquote_leftquote_rightspinnercirclereplygithub_altfolder_close_altfolder_open_altexpand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcodereply_allstar_half_emptylocation_arrowcropcode_forkunlink_279exclamationsuperscriptsubscript_283puzzle_piecemicrophonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchorunlock_altbullseyeellipsis_horizontalellipsis_vertical_303play_signticketminus_sign_altcheck_minuslevel_uplevel_downcheck_signedit_sign_312share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfilefile_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexingxing_signyoutube_playdropboxstackexchangeinstagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightapplewindowsandroidlinuxdribbleskypefoursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EECopyright Dave Gandy 2016. All rights reserved.FontAwesome [_"+/37;TX_dhn#'Prz.26:@DHM %*.48@ENUZ^}/3PW^cgl8<FJCUajov{ @ J Z  & * . : A T m r }   ; B F L T X _ c i n s z   . 3 8 @ F K P p |  & E d m z  %1=BGNU[e #)-7=CJO]kr):PUblqv|",5:BJOTgz$6HZ]hs{  &,6@JTX`hnt| )8@OSX\bhp~"/4;?FLSW\hmt ',2=HS^elw* A T&fAV TlfPzz  P 4 ! t  q q bt& y}}y 33 % 33 `zT~~ 4] Tg@Z 4  R ,T[@ << 4 ,  ^ 2 %%%%%% 3 T< nh @ ;T N TITN C KFKk 6 ? J  : K, : y}Tj 5 / W  K$ 'T$ V L  v   L  6 f y}}yy}}yl z||z % 1  KTTY= |zKz||zKz|N !5 ! ff( G Q 3 |T|T| T T T|zs R 3& ' ' < @A G   ^ [= T / 3 c - `V } hn " Bv g OG `E}n\>lg ,hh@@h EQ P  |z@z||zTz||zz||zTz|7 F x  3C DRRD D u y  ; ;  5!J b h  5 / TT  + - tzuxu[Brlmyz~5qsU hnnhhnnh ttt  T  y}}yKy}? j 3CC  5 ;(=ZXWG/9;/_Mknmn9:YIƑP`q~d_i rcrr iii  y @H -R '   T  1<t0  lnl||}_zob^^bzM ~w~~w~ K = +tX @] @gZ t V``V; ;`L< xra YW  @3 &  ~~w~ @    5! }yvKyx}zy n   T7 rrcr ~ g hnnh YYG P ~ ******** = 4 4  )  .@ (  [  h  P v T~z$ j +[   <<5! I 4 * A C 7 r C 7 @r b ! 6g  T E ˋh 3/{V= n\n ]9 vx {zz{ X  CZ7)D T}yT8T C T7 Tr ]][ 1    7U f @ m   < ZZ ZZ { B r r z{ + T  |z nh yyrrrry pttp&pt 15 tv ' K(   ;;  g  $4 y  ~ MQ s QDnty y  t Ft e 11e BB  T  2     r   I F  y'& K w__c 4444 p] R  GTTX x ]]  83  wrr h  h@ ;fveK \xcikvss]tRat 7+447 && 7  V ( - hn  D$$D  , }t P  `=db97 Bx  t3 ?L g__gg__g a `V     C3 ~w] } y6%6- _$cX ~ TR V22VV22V   P@zyz z  s/ A v  zz{   b   z -    f t    & 3    ]] EGxZny tP P   ++P,  ʲ ,   _hmx 2       ˋ  d4  4 T[ `M`M y}}yT, V ;; 0 && T 3   t' . %  @ p ) qt{tsoy s%$   333vK  44 \ ~v  }jii C @@ x~ C Kw 5 !4 wkz|| ,$P++   -     g s} }y     f   #E T @  )Wbit  S 4X wmxyjh  ofZedZd W f r rsyy'&    h@ v   }592I88!~   I M ? y * BP|88;l]5m+\<b-G_y'>U>c R !0!","^"#0#$ $q$$%%~&5&'A'))*J++,,m,,-..1.../P/00192245q556<6717x78h9:S;x<ghhi-iij jkwl%lm7mmmn$n;nOncnnnno"oopp&p>pXqq q}rIrs8s:s<ssstuv<wIwhwxGxy yz&{6{u{|||}~~~~CM9C|28VP cSOI#|L`m Po1*x4f.HU\1'Cw[W(b;J{.ŝQƭfǮ*ʛ˗̉͌|`ϫZҝ(Jտ׻p9D9gtg,q?o]1aJC0g $   N   F.yq4+M< !>!";"h"##$b%g&D&''''''(()*"*++,?,p,-F-U4>45~566636>67 8"99:-;F;<9<='=\==>?Y@RABDEAFGH(HIImKGLLM^NZOPxQ@RS%SlSVWX:XRXXYY]YZZ[+[n[\d\]g^Y^_2_`5`aacBdd;dWdvde!ffgoghNhikj@jklmnopqhrtukvYwfxzV{r|}/~~Uu[ tJ~3J#c$;Tt TT4P 4 c z..ȮhKhh3c # ^uiƭR@2A 4 FMffMZnnw   v x P  `Vc~ofa[! Y!    T@ b@ suw#$L>$#69JX"!!`V+/EE+V1RF _r Zo p]t ksu[ztvUZ tq9 [[9:QQ:Mqksu[ztvUZ ZJ J&  & a )| s Kw t w4X ] g@ v   YT3 Y`VV``VTV`Գ  T3 YT3 TV``VT; YTV``VT; T\TV``VT;  ^y $% IVhhvjyy  IIVV V V ttC KFttFKktt r tt> @   V  FKkr @   pP tW&S:aR`S:a))6z 6)õ`a;R`W&tPQEEQQEEQY 8 &8 &T8 T&8 @ e { zK}zaEV" nmloL{yry}{{OJNll~n|i&js^^[{m~mkNo|y|rz{Kpijki\f_i]QM[!|Lz~rǑ̒Ȫ'fgiMm([popHH4 wOVVOcZwE;L1Hu v tnnt/ s~oJ,zW`aGahc~v~AHH  w !4t4tt4tt to T 4# )vTV{||||Ng|5ppTy~}y:y~Tppur5|gccn_Tz}y}}zT T dgf[wXX[fe6 tqTKTTT TTx44t8 zT~~f9x44t8(& T T9vT ,T,ThXhYm}}chhcqj}}iVgv wxrwwvtL# P  !SY ylD&)'C3$ Y4K Ti t}yT|}zcesd,.9/F- 1T5 T "Q>W "SX5z|[,9FZ3 Ti 9 "! ! T@ G vTi TT T+3 kT^^^^Tkcv ]btkr Kg _=1lno1"-SKq~n}s{x}zsz.;3n L vTTVT/WW/!(ZMj: kD L k+8V=_GxɁHKxMG_8+ MrrN-hnog? ?go Gw_ rN-hnog? ?go_QPox}yCQ(Csyrp}t{xo^PQ_K n{}|zx8 S``*S8 qxozo||{}s}|{n. K    x       0m 8 vvʪʪꪫʪ骫kihvvvijiʌ 1 w ʓ ʓ 1Y1Q kllʙ F?ijivvviijz )z _^X*DtcX_^sjii}jttjjhsW  m g|vtywxog`vf/TFw.qra\zzzaM{tswxyzzVc,sj|wut{tv\h2p]yx}xzuxWi:mY{pvzs~{sww}e_^#:/r8"   4< 4K4"Kme,,eBV4 K"44"4kt4:4t> )T33333333T4tXr=EE=UIrXt tK T/ ,Q iep%/,xxx(((#Ɏ wR'VbgfVpoqqq{\/j}}Yh^?DFG@EatV@ha%-n<5scsŔO5*VJM(0x[[_}~􊢋 %;AHW{'Qbgfg FIGf=R!Gv^]^z8'n\PuH#hPMqJK{-!ߜv`ЊxġMMN[ĐơϦԖУ!!!x$ǁΓm`r;ni~GhftnOlFKwz6- ;p6p_ph6hpo;_}oh6h6}_ Ǐ\|}Cy ^^^LuZ qmeptcCDCm  ǐ]|zb||}3mrS 667W, "m~yv}u] y]h vp|zwwzv {y{  |p hm R<0 R<P 0 R< i m R<0 R<i m 1<0 1<P 0 1< i m H H H t##@w t\ > tTdw TiFy tdv0{tz{~'&9* TT33T&:''~ )TTTn4444Tt|z@ 4kX S @g@ m  D~~UT44~sjiij}st:944::W  {   NLT_p’xJ  vPPϠHGwwsrP mXXj:bkkcv`~:jX;`Y;l-&PyyQ 4 S+,,||~KKXfccQ+4444400f,,fMff//  gt}{|y~wjX|zh "Q2{zt{tqT4 7\3ulz* p4Tqt   Jw tKK3CC  G fccQ{kkYkkkYkkkkYkBBk C     - 4= 1  gsvZvZ SZvZZZZrZhlvlr|hh|e P @g @g i e P @  ZwZZ2ZZrwhZ P Zw Z  @w}rrwrZZ   %L.2::zzzzr::2%L'2zz:::: zz ph H Z hn  e }2zz11zIIII{zzz1IIII IIII1zzz{IIII{zv P zz{zM vv,+M 1zz6 T 4y}}yTy}T T4,#Q?`\pnZtҫȧPKgjzx}wy\O~#7@TKT ttt4 4: T +y}4j 4y}}yTy}4 44 `$$`$`$ $$$`$<Tg #Zk==k##kZ==Zk#<#k==kZ##k==k#i ]&&  &&&&&&kK# g2%''%% ::!8# t  %56&{SjjQh[=<<=> >KwP ^CT}s@skiij}sstv jt }sTӸKw~ssjiik}ss@@stjtTC^OGGOTsv js@tE @wKsjiij~stsv ks@sTC^ǸTs @KT@sjiij}ttT  Ttjiij}tsA@sv jt t W @j{t,Qa! KtkvqCt e t ԛ 4 * <<< <+!y}|z |RT|y.}|yMx|zp 4HhnzhThnhTThS\V`fy~5V``VV5`V RL'HMoZd99dMH''e L( $4A 4u v߈ /J7I[^_[Z_~}yhn{x(HZf7p\XTHaG-whhiwVQZ:#vz]l`L{l{,+\^˒1 t4C FKk@r CN.ETiCkhT$T$?LL?'0cGv=< vc0;'dquuq--] LaaLvtrrtvLa`Lv$T$]D'#5'0cGv=<#7quuq-.] Sv-yU*PNO_Z~wrsrswH7*V3ziU{Qg eg SA:NT~=L=&0ErAuX5y}|y }R|yR ~|yMx|z]pkou`\\`qbuud[ddsP uz``K4K++44-3V +*QQ듔VV땓4L554K 4 ˫44˫  44Tt Tt Tt44K Gt4 tK Gq q bt."&Ft8t+ +K Qc-b.T5MKTz|sRrQnSSL0t8tĤŨTy}v0%%_Ib \;COLD|yz|rs{A0%e P T%Ki``iK%,QQ,g /g / arzyzyrrbr:9r :9k lr:9:9rrbrzy zy) 4TT@yxxy}||g T44rdTr 4g T44fTF4TTB ||} pQEEQQEEQQEEQQEEQg OH `E{l^@lg ,h v 4 4 &Q)WWXg3 UGQ {y|ss^    / T   14= 1i    m} t2o`gfbnh ./>p+>|Ri/8Crb{Zja_qV Om|  PC44T%V``V L teP  T  hP  TTTT noqqon Tft//tq:v++n+*mm*+n33Väyppv-)mvv  >{ ERQDEQc ERQDEQQE9},~ q 2srqt-}}N}}~ZTYprr~n pwefc~rrq/s~|~M}~,soppndmfnen s -}N1kmo/ ` >a B`  aNty6$7mF dI.3WW- hn fo1\s\ko{yxx<^  U/SkW ?Ÿj-@  +6 OGo Dɝ·lZ'#ik}ts')2OKebh`i_mdG1dqhWm]a"WY VF e G.3O׈- 7hn GNOH 6  t@K̬-*osr^ ?<kO篞 OY OxxytR]׈ssvkc\k}\vsO1fOzkO~rvdOJ.eY$n:moOhq1d_`cJl2)t}ǏymD׈ 83vb@KM>M>KR4)<5Mnɿ<5)4RP p]o udr T~ϧ\ ԕT33~ϧ4 J{{{J{J IYU:=YϿڼWG j8Ke`bz|vw{ ̋{&,(i"z  4t4 T, L T480QEEQQEEQ08.(y{wAi  t XTiTQg B 4DD G U DD t * ^GofTp ^Go &  8^!Y1/)Yb1+3 X ] +V``VRzf|Xm}[YKKkK+++K+>7+++k˙̚zfR[ /`obt@v'T_Gqzy Ywjo`)Ib`__`b)`~oDW~jgw^SX _~|~~tjn~@t^oYYk|P/"`c}{q_'TvQ yyt    ?ApDU88Dp?6 \xTTz{{z~TTK TT 1 !8 2 ZZ.n82Y\uZQ m{r^-Ʒ֫Ϧ [ @{wx^^]Up[c\ˀt bdee  @$fb% aa>"ipuleǞëѯ X4* (3&  &;*226;*qXsIm[FHNMo;otpлͩ&oxtt_Jdwry0Ayu{&Ay  v(TQrLyJγʣMfEpB}P7.G$%Frrs3Xo[{TO(QVY`1(mpnnvww ."4X+prq/#>VK?ʹķ Sp.v/nQ11'A<* <<xp%j]^hYE֊ׅB ?Gߩϼqٵ˟'(͔͂z'w!q=wUG7HJ?xs]C$8rwsp+qi^arʆŕ vTTTT$T4\+T /i )* l @Z @Gtt   V Tnzi.],++,]i{{}zyjpnjry''{{~{y#joicciq#4 444@ G2t1v~z1vF4YtHAAHZEtYrtpg  2  4Ttt] TgEuFF6!1=۴ n_F( RD\\D VT$4[ .G^SSG^J(@twT3fV``V}~d3fTw@t(EQT! Te `wrPNxyprNV[Pwrqqyxyprrwwr[PNrpyxxyprNP[rwwrrpyxyprrwP[VNrpyxNPrw}PNVVNPx,4.oU wtFPPFs\k{oyxx >\V?Ckwk++JLOG  =3`?.Qm\ibgbjnG5[hofuelY=  ,.Gc4n8`XC>[B natĹo8ixFPv8+֫ঽtttuV]]B1 o8[GngimQ`?34=_`b    =acfn}|}KKYXS#Ln8  4.B `KPV?Ck1B]]Vvuut+`PF`xiPta ?MQYKK}|}Pfca=    b`_=43?`Qmig`nG[  ʰ .Gc4B tZB xxyatRt]ssvikcx\j_qFPPFGOLJ++kϰkpC>[Hkfuf h[5Gjnbgbi\m.Q?`3<    p=ϰˠSLH QQ{zH 00 0, {zz{QQ   X00{zXz{0QQQQN0{z 00{QQpQQ , {z P00 M QQqQQ, {z %Q4.&E݂v'* <<< <+'~'|iyzr|x|~t}uz~}tyzrjhv~|'{|~oz|'r}spwhjhy~|}}|x}owuxzp}o~vqyv}}{oy~tcuyuu~xr}|~gwɛ|cx||v'݀t| $|~d+|~vrys~݇uw}{~|G|}}xzutl݇|~|rk|'|}y~z{|}{x|sv~vzyzzy'7}r~ww/*Gs kin 8"W==sv jt >>Gww|&xjUt=N,B[ Q?F  t{tqz4~ zv x  44B  44t tX S {e w$$ Tx Tqt{stoy$$$$tqT5 Tp $$ yots{tqT/T $$K T0 T $$) Wn|`_]#v:[vVi\\iVv6*446eTa u܎v#6]_`uuu0n1W@^;e UU`4U5TTTT`4S2SBzyrrrrybcyjdM djyddysqSUmtvwjoXV``VXojvwtnrryBddkybcyrrUnTddUA??BnUU'&UVlA?>CTddUmի3STk@<?BUbcTm,Ԩ'&)J,> KQtd_O>Kj }|},D!/G  # # @*! ! @i##flA\4v4443T3o@TMK"~xF͇F6)-1?pWSRWn?=%(EUmþBB_XS-(mU6EF(%=?VXpO򎬇F˞y\&sqb]NENewdG&NS6}dNDwO]bqNñџsSe&GF\}w~vt:4+q4CKtېE,  aV4dYztdP\4VAlff,,fflAV4< :\i?fflAV4M 4440M 4|+fLdUS55TTd..Ġ ..||eWT6LL6UVe[o!"m\à B)%h;=h&)CMe0 0 4\ 44< A 4{}~bx4T TGkmeeBV4V``VTe P  & P T wVn5!Jt4C 7 F nt4C 7 F T 7 F ') h $J7_H,  `djXg]SˈScfzhebpR3 ^v" Om(;.?GdFjPyi7voMyyy4 (!?::: @(t T @ Tz|> $@1 i{pkgGR[".__ušȟmNgG&߅ȂAP_ATeAa6226^%OLJnpsosxZWS]{`lcmcbnXzyY\a\^cbhnnpszf%_whY+W~ cv͉ΒИ15hv9U!݉}t{D$ WW2 g 5 T4g[wrrZZTTp_Civ9U:j\iCeM#&nYA ,Ómxwr .ffFfH4 ze`c`c#NW[S 9Z))));7eefeefeefee)4  {r|sv>(T+J~ff~JJ~ff~JK  g 5 /{i WԂ W~  TT{z4TT TT TT  m F84  X l @ @wWT ~ KWT @wW~ t0mjingr;<7 M7#?#77 <:fim B4@ V7)0[/1/^//106;$p#sEAA*,?m6"mpF=(G`$.ƣ 0п D&l&yPsjiel{ppmoy,,yrrUg[giyxtq]um~~~~mu]qtyxgi[gUrry,,Vompp{leijttW m b GTTG@u^9v:p%"M$%MڑhiGGTTGT&&@;$yz%:@b %% v TDddDWXYV_lw}v~v*AdDyo6$7 ^~ )?cwrvy~x]͈}|*YvvT p{3 +T TA \ < T T+ \+TT+ \+TT+  m 4 XvvuuvvHNNHHN)   1j j/ eU> k) $1   4< 4T TGK4ime,,~\-4:4 #x:4tT.F pF F 4KqHaZxuuvwtD6O'xODwuxaq\_ II_ \DD$2?? nzykjstz{ztsjmy}z{JlQeűťž̛{yn׭ 0|zT|T`> t7 `Tz|)ttF TGtt )4z}|ytT ty} b tT4TN[cG=B^60AQEEQQEAKuI7#e  #7upjj_pB: ܾئ_Wc[|a m w7Ep{ m;4U3ua[ RҢ&{ & RD[apdu- U;4mph]@@h֦ t tK} KQ$4[ (@twT3fV``V}~d3fTw@t(EQT! T)TTT K5! Khh5 t TQ  _ 4nhhnnh4nhhnnh:Bp צg U ktEQ9 w !44>TiT( ttT1 TiT1 Ti99 t"! N T|zKz||zKz|IT|zKz||zKz||zKz||zKz|6F ^P @g 5 /i  Ut"! 6D> ^ k< TA K +K G+  TGEg p\T /i )> GWW2G4 ttT15 4hZwrrZZrrwZh4 !""  " Ti  4 44 ttTtk}44 kQ)TkktK +4Kk44Tt+kkTkTsTskkTkTt44Kk4 Ftˋ v |g>DRTT˫kTTktkKh@@hTTTppqq4  ph  zZ4  k   k zZ  !ZtLLAZ4K K ztk  z YY Y LK )d { |zX ] g4KGfg 0 K )+TKx  ^4Z T] TgkF GTԀ `t4+V`@Ӷ+r S > n 4Ԁ T q] g 4d_gg_ d4 T GTT[ r  EQ9 v ԫ  TTYwNTt"RDEQRDEQbBTTBQEhEQXxC3p 3CBc BT  b&'&e pe P  @*j{4a,t {z4 tC8qbbb{y{x{K  t4 4t__4\<-7ʗ7-tD&c+zi0&H. 0,-##s& &2iGz@@RQT+c& &t  x P tV``V V`T^ T TT 4 &Q)F|~aiEjVulѬo70 XDQ^ 47mGGT4} & Tnaxjigxi j(C(jgjixhi5'=='5G8 mTi n5Y'=='5YihC ix8  Tg  0 T8 )TK4TTT: TTx TT4 [TTTTKGxP  x  yy p< ZQ ) I t+t I 4!+ I r@I 0I I p%I 0 0 +t $ h q^jM Pdioo '.X Qv \buD J  zxvuzLJ?  s ]RT1 T*)\&Y ffffzM{yz zyz  % @tJjZ!!3!" $yf+/Y kzX,Hn|}1dtZ\IێĬ TPv4TTTTT{K=but5mUzxwyysqggKgywxz{TmӨ'&h ~zUB>>CnUU'&TUmC>>CTz~{ky 75u+= TTg K%.Khnnh<KT/i vPKt/ ohhonhhn ;mg<&S3r< ;|#&%6Nkjk hW x}p;F&<U3r< Y;|$&%6Nlik hW y|p) 9Iv]Yfh{osjeV]]nw vvKuKpJQT*FhltnݖݘƎqDA5%!*QTFhulstnl_a99:Pp~݀*Pk9okթm p [ SD D DU D$$Dm8?CI9 ..9~`n [ AEN^ U TT% 7;L9\XpqTTg 5 9 $9  # 4@n T+}~|C3p knr]J'V{ke{ohc-#</&|~T+ t`` t{yS;RQPIODwt{K6KtqvMn;<-=vvkhF8 !!f ZZ3ZZg%E E !  a!f %33gZZE  Z!f f %3ZZgZZE ! Zf ZZ3gg%E X FIC?6IY(uC XVYx\b66S* PeSGQGz5:5'DN5TT(TKKT(Tn 4R~~'1 A3ZpT4 T7׷ b ,9_7T5 2 TZA1 ~'~Q1  Q1. ꗐv@Ti Tt2 @$k\9 e   yyQ a U) _ T_ T_ _ T_ T_ ss G- |a99az~z |33z}z99S e * <<< <+wvttvw_+3sE Z@@@@֋Y9ZYhYY9Z@@@@Z݋ Z  t   tR1 ~* Q 9{sYsn{xput}T4T~T7T }4TTru|utpxnurT}yZnnAf 3gggggg%E  (@WWS+}}F簰ɋf,,fMff zzq{ttz{ f %3 xt t 444G{zs{4O!mFNB9x*}}~5W]4xE G xtTc ## yussu~uvqxTzTQOy7}TxvvxzT}xqvu~OzTxqvu~ussuTTt: T,T[T}ysxEFvdyDs4>$0K_|h)!LNMMNwK=KQx<rGCTU{x%%%%TD即#}f ؋›%%%x%{TG>h  ˳&~'+'}~~}}33 +t4b4tD809mi%if+qU3@  nDDnnDDnnDDnnDDn.bXXbbXXbpc}zppqh&c&}hzqppppqzh}c&&hqppz}c o11!"!!"! $o1111o!"!!"! %11o $Z< <ps 7 7 e &]&8t#4#4-_G_G C3uXr 9*Hb=gh`̀, ް5-"MM/8(x,(90KDzіɕOTOm̀ցQ\Y5Yy{))+)jxYhmG{IUsV7=o{vu! z'f@o&d1caaPEb4"f|aunO鿦ɯ˱nnoI7J!I5.OB\WQĦdRۛ~-aOpbKI2C@lU[s^Yoc`̄ƃ~ƒΑ~vD,@aD1"@3byЀѐl"k"rbsIr3p1o1]_qewG1('$:er)n'y*ԧӥؘؒ6;2]zt[uns PDcl|P~_q<}Nx0k<N/ pti"d-"`#69VѺDMV"TAK$ Th~tT  t~~h hh ~t t{tR t~򕃘t6 ~~t ?t~ qqPV]]tסжihhMD;ZQuItI[nt]FEQZ-[+@@*e-8;@@4uvǹߤ p7ZYCYCq5( v >>>-r>->j7)1 ;auabtavzyvvzyu:uzyvvzyvLR]]SBR]ĸB]Sx*.NZwR]ĹwwR]ĹwǼ|CNGCCG|pNC!C,313, q|]RS]^RBR]Ĺ_wη}|w$䔻kiᦿůI7J+kt}n~x?z}}}b;u{{~(0YP KS{TSm{qiTAsFGKiwzw0o_ewkj "˒lshztu|Цy(0u"5@B'\ϊ؊sqٱ0@.&7e}|_g͗|qD|unlaK]~d iqqquzw|wʎó^=~Şv}M,7QupzTS(pzKYNGJ b/ѓcctup4K6gp1zy@yr7Y}{w\wxFis}txyoGqt sp^)X)iz=JFdf|oL{1$+#~[G0`SQRne*wXjsIx[Ͽ^d7,vX9 ZY 2deҦt0 tE EE#)vo}}4u{zu\ O#nWvZh,lt:$4Zsj{rglb1XldvG'bQ^{yqa|x|{jjs}.Ӣѡ?IY–Kk.#4)sV 1|5Gc%1A XRf 7n]Mw]^}ǟxwVo] ytyywyB A'!3EMM!#]([B4WtIm@nxWxWtIWȇ$rzӎlQ3J>Rq_(%vv==)G/H{uAR6=z@kwlkkwllaelj{RI7 A5ifsgffsh./gge0lF  miE#=[Z\Z#=EOiNQ@QyQ@QpzE&}9ً܉{H[1N[GCJۋz"q*g2EKa"81&*a/rwxrrwT(v]*I0 330H5 7 Tz|4# 5 T|6 T> 4# T3~~TzwwvxT44Oe9 1 dpSF47zw8,lr7RZ(x[ts[{+;fC3DK^Fxukrlqv}TK ?(&PX+)#JU ^mmm jgenyiYW»ëP7iSպԤÎ˒rSppoG.B%r u`vtTtp TR4%Zdz{ IS4( k. pkTt t  tRMo  6 ~* Q)ۛS%4՘ΖT˫KT]HAF-"K g_yz}>Q~{{~؉؇}zy_gK飳ܩn_ZZp_bn:vkbA*t%ndʋ̫44m4tbm++44kkLJJl.d |{|8S"1ÞH=|}}6TV5wSLTT=g}}RIcZYccYZccYZccYZc \pcdwywxRj.j.Rcoͭ}t qZbZZcbYZc\L gSVIm 0ܰ .G.k.L.k?+llH\\HlZ釧鏼0  kcthjz{{z7LvvK7isùĨwлQahaahhaai?Ul[Ĺ]SZ Z+)**MOvrqvvq 25 3 + qv6!Mr342oqv*  ).```NW{WM}|XLyR]^SS]TTVQ~ùù]SS]^SS]WQURTTtt4''tTTttTTtT 788a`aa`a^Mkl` 8aMakaW`a9M97Ba 8M97Ba Hgg[o\@\CG%:`dhbgbۏ֯Ȱ:%G?G%;adhbgbN;%GH v/}7 Q Yr3FZXaXxwx_blkxB) K%Lo3BJwu~kuxu*k?Oz!xyxvzAY Ϲ[Djmhl|{{̡ԡԈ֊ j8ч5T&9E Z$jb<r(B{]<6TYuZ|iJC^E,g_zsyubՖӪu^q-1ݛzJ1jI1jgTiԻEY}MF{M`@]~tvtz,J ~Y=U/0Aqtתԛdz}PPxvtnos~}mzVz-cObPru[N S=)id<&liXsŒՍ0ZZ6:3W4U_U266WBN h[aj6GUv@cLj^HI,+Tjk(jjc+,54+,mmZZ;ZZ۽+,33m0vH9*/o⩩+,44>4 q{7$//)9wh 0m+,54+,44,,nZܼۋZ,,>'l4n,,44,,44,,mZ;ZZZZ;Z+,/o-D/#5>'}n00nm,,54,,44,,ۋZZ;ZZ+,j+ JѲ"^ z}i{ѧ錐zss^myzSvnnU{uuwz~˜ڦLvewe :rnwt]R{ϝȹ̯\jtazm|}l~~nh~uN?MamJ}fg^%llI%uXBlznxj|Z6{&1~\NULܿI4'6kZ6nNwatTTTt  T] gZ `77lf,,fAV4 gKW?tqEEE44   @ 5 /0 x AAK TV 1CK TAK TA_K y}}yKy}}yT9 ;9 >0y}}yKy}}yT9 PttpfeOefxxxxeOeffeOeDD8|  Z *`7Q `6w% Y4W%*% X4j%1g6` Q7*` D4 Y%*&4 X%W T#EE#\[^hnT^\z.}TNNNiYT}||||}TYyi[U\`uTTv + @ 8TjMQMQMQWm[FN$l\TT{zzzz{TT\vl]X$FN\vl]X4[^vTt Tt P8jJ2RQkVo8>A , '>&&2uQeGWn!eq=s)b?ɽVWX/c@o E`(yk2@ /@OlmCLAAls  e1U**j*.Nz+8a{z{aY%#y=<==<=<<*```^+LPzlX1Az/-6D&@I`_4| 4B   44!3}|~jk/k;j:/d;jkjL`* `h uY54Y\55\Z56\~  q@-33T&kvvXwpD>m2W._Z8nE 5<hLhLQRSu'/>0Agz8(ҒӑP0KC'ZL{o_uOn ɋ#xW{D ߥpBdȋeE)p3 +57wp ntTy @ y 4'   u n  t' T  K K V ' tXt@ Xtv&'y&'Y   Y&' y&' bKHJjp̃Έbi aouwr~'89{={mx<*e>okjqpi{AR*7}xE|}jp]VY0-|xpaime{}ld""p*}|blv\&A}xfa) Wpo"_m3m"3sٝϞ¿8~~}~hs׌ $zctc^_Pvv~w~yf{h{  Z~}}}}}||{|Z} z}{10df}itj\KMuTuzy~00&    <!! !< jvt Ǒml!4CPWhЌnj|vw||ryIs7h3^1c:gJlXJU>]wD&_nr6Hgdalor@/K&``m}", y@}z~|{@Ë)ҧ̞ȭBO`)y)o3hm^Zx  :w !4i 1J{z~v$${z~J1 E8)3y{||y38)E 1V!4gVQG ?33A HWT! 5|x$5! ~; ~V!4t/|h7S.1l~gd`;!wgvph  i ?v x V!4mTTT  x - VP P P PfAV TlfPzz !  P 44rn<B@(vMzzy:((! u6B@!eDRĨnhhRnD  x K!4Bf~:;8:; 5E}}oۮhJto%]8%{~yxg(|{~rxjrqO>99l>SO~~zz x K!4 EQy  1  %v w !44v{v}JJ}X}w}vw}Xe}w}JJ}wevaʁӎyLzzyӈzz|cyuYaaff6&̶Q HyA~`Dޟ(#PgQ+<3%!!!S|BDMhߺ ђO .-.-.plHs-U7sH<JJJ?H&Urs&l~v~||||~v}~rrrr}|"d ^)[OK0-npq D:)rJ?t~rIFo9$"%9/iüIIR^rdclmkԧ2*:8)0\pFN[BA\ŸghgGDDl)3=  0 jRVVVTPQSyVVV:RjVVyVTPQSVxVVyÁ•VVRjhh @xmŁyVVjRttttF4xPp[px4MFqqqqIwwv|yx*|8 G}AIrw-u\? 5'px$ PY84I5K G3#T1!I%>HGUB& v\wͷ- -%bbd&-JRprvQiu,t~՗Ӣ9RMgĬx{}ާEvhrjplJ- ?&n 5dbbI,ueui`M6fXPljiijlPXlf`M6`ZiRuL};pommop|;LRZM6`m[ [ƗM6Ġ|}+vjS&zzgMRjhed9oICAA~CtIo}d{fxgj ;v+Iz5&o? mjhĬ7;jjjjjjjj 0KBH \O+:xOa_UTS˄BgftXRweWWk!:{z{zzy"J<%wly}jhw|m'!+\! ոϡnMbx7tttpopyjef{m~ Ǻ iii yzyWuf^ V]g`[[f_\ A^N?I`Ujf#b'^jTm4=yBF$3P:kS43g߫ޯG@pFAw@UMMM%O&iWtLXU_ogBF bWR?d/y(#-:=;ra``^_^rrukedA~R?‰“wnmm"?+RU`B=jȕwS<;QE>?F`  RXX4! 55 pqsa_^U^HKʲJpwm7ųu~//:q~iykkkkkkgfhopypoo n0 +(\fmjő¡CB{gtzldg{S)ik-z/Rɮ٫ސq,Þ2=5qnYVL9+3zZ$;;#}MwzVqzvy^oyzzv!UggTUT¯¯gT{fggTgg¯ggUggUTUgTffgUgggg!Mm#[8ICnyy|죢Ԟ[TI&%7O ~~Tvtsrv61psYM O wpv~Tv~tsrvlUXqsk %]rKwx ܿ D&l&yP >T / Ua  3^bXk>C_}g555333g}cm6ﳽmv%f~~O~~~^a}g767/./h~bn1lp.[Rh5kuZi/4oe ^Wf7h7jvWi'2nfz#zCpisL2r@;pEVP<Q;Odlw #> ƭ tt4tt ttTtte 7>jVRH %HVjE##EE EE#HR>7E#E##EجHE##EE##EE E?>?  ++ +  heXuS + þuh  + ++ SXe  %  +  o9˫49/ː/4Gj{fj}^11^rt|qj|$$J|jBGrbrrKK& j SˤreGe~1~w~~w~1G zz0v~0BKR+%+ ~ T+u+~w~10G 4 v2 dd0 mcFr@:}77:@ڳm-T0>2tM2V33V2Y&Lt>T0-V- KKKKKKKKTtY TY TY "6 gn~Y TY TY "@6  H~HfT Tgnp(pT<}~}<4TT~}<2 <p4tp Y:YY%$~~$%YY:YZ$%**44ool8II8oo44**%$Zu* + uHd8lhTwwvym\_u5^/7hVfJC22C=+JVhX[<*N?Y3: ]#"S:Y3N%%I%%%%F%"F%F%"mmm%@5z"mmmmFF VmyjjgwrPE]}~Su8ӗ)xm6 |uw}un]~')kp{u~ y nkuptogo>4y}Ϧ)Q4  gyr=7TRyytvz3*WJttx~8tA&ysjmm}՗ : Vx  dTT- 5P x`  eepZp %$ B((BP! (''$$ GG(GGs$$zhl?9%$ _{_{ V| m % GGGGGGEQQEEQQEG-   %  EQt lT^_|_j-Z7BG:?)_s:y8CXccs{~syyyyzyoto֎~@,="H(`dine|Anq˗NJܨ,+Pמ M q{mv=m RJCww7cl!w/|)q% QXeYGDW[r0Id?qov|wvNX^UZl-ƒs|eW"}fڋ\GQ+L~bGDCd5.26J:#:t|mcUJmopmvn]TB4B@Dd$rvJL88˿}~=.|Նs=xzo<Bd l8l \ʨʩܧxxӪѩ̉Шܧ̩ۨ~+Un/nT8)m'xxxx+UmTs_^^_xxxx((8m0nyfzz~|~wL@ %"sx@{s@q|xs@mw~x ~x _sx{rr|xs@sx@zs (r{xs 2C % $ %w x}s@nww~s@m ({|vk6~}xenHG)qtyduw{z~l{s{y{si|hobp[N@~ r@na&s u}{xw cn3ow~u?m{D@}s~szzqqzs}}w_oG~}xemHGox~u?n{ ~}wfmG( % $ %d ;zu1t&A"Ω̵i&L̔+@~tvqazp@ubw&8@SJZu\ek pkfY8@,F):J\^GZgmn|~~rNvƯri_z{wow{vy}psV1}nso(>}>ptlN[XKH[ͨ>- "?4'::''::',Ah"ttLR AS1 Sc1JֶgLXpjZ@  =PBBPOA AOgŬ\]W»[Z3)Sff@_±RD=̹|ͻMV˹$QG̟^ͫw_BG.O`IΤwϓRϺTEDjX 3""7<"ߊmQ1@@ryt8spvu:@rfqvu:d@r_F/D@>L6L! @+Ohhhh[N@c@92;@1  y,((,mm<}nik<ytgn(Bnlmva2gWTP Q~awez!uP!Eu :PBBPNBG=_!!@1@Z*y@u@_@M_HEQJiQwrSrNG2JtA(@w\EQx]nrTrN:BNcTX.E!]^ggTW-|cQ f P+((+ll>vII<5 YaqT;Qvy{Qŷ`bZ Y`qT;Rwz{Q9RIPP(*/inW|ϊL/b\04]O__@P( e,l,|} v)eiyz ) v??4 For^{g=Zi *>薚=v*09H3 Fos^{f=ZPi E(J-I4i^xz xd 623~**)(!= xetpqRtJ͉yiiylHXzdipsl_~UGJhsxyW9Yӿwyk]]s}zw~{mh7k>Yi{ ztdYgrn|oM򹓝gptx*kSk*kl1wGb_]aTfvst+*r\zheN;h_hg_@_hh_ilu~~$rfP|KEUfav,ɼuaaP@d XvvT@A!!KTy  ~@7뀙v~6 D  T4[ *<씒>? DB(DD(BzD)ANZȼxȼXN=v :jTRR;;PPQ2<;5 ,$()MU]()++\TMqqz΂34ypm1 .oQke^ 'uv& ^ek7|epex#B9o=9B]:#/ݠp"\&"iRexp hB RXD@ _* pX@RpchE:dM+A * [ $0bwqf]]]U9pttp.ptqtoqJN JAN AJN lL6HpAOYKI++srs I0"/rIHqqIHrv;(hqjuqiF ﷰg(7]F$ g)XP p'7)28]8j*%jjjAo]" -]" -]" .\#<]i|i|i|j|666Fٯ6UaZg<xgw;A A@ !A@!!@A! @9ŵwvmQuLflD^A94wHMZXaǂݏ,!|) *) )* )* ** )* *) *) )[OCPZ[P55ZPCO[[PP[(ǻ .S"0@:M`edeSO[/:~~|yw{ >g7.iczdfptð+&4R l^vQBR{xxgd~y</Rc4jc'^d K4T+TDqT1 aa 1qӌ $ӊ4FlGuj/>cvYXwrlO[MOO[Olr}twXPYv@c>kPS/k_`bjpN1kI|  FkuU)4S'-{:d@G &zzEwvlmulchr]t bFs^[XV[ vN;mЋD1 g%/O,kjF?j}yykD D'wsxx tD D7U 1 t_>hjthhjbgSgT.  T譁bjh>n_KD;D h/4+| ZsuS&yprxoh nrR/Eoqwn썍c@ ";;dxpXBB}tq۽w Tdmlsur|jto tt ttDtE [ S)\<D 4x / m  8{uNvQ*33Q~Fu{uv+NR-XvD ^ vXRX/ m *6xllsvr}jXm 9 )[=)R~[~w~5-!i5 D "~v_V=)[D Xwauqu f!D! }qquur|jto tt ttD ttDtì|r6Z<:S vg$gJAv<ֽYi}=af44 )x5Mk4444+   T T T  {{{tT aT TF7  Tr J tTsR@6{@),\,)@əEQZT aIIs~xxx{?+)])+@8s~v T@P Tx { T Ti P TTTTT//TTTlvT T T!5  s^vt 4~44 }}{ptrmg}e}Mpvwyۏ P Xtj\b'djгg[L״( ¯#wmݿbtG(r|kj>Slst =Sls_tiqnv„Ņ3I`QnN^DyagTQ3I`nȜn;((5;!!6ryqhn}.d9=k%)}|||{zvvuyyvvx}̖ҹ֐acrppxswzn}{wvvӍ⟳͂pTlZxeyR{0o|WbeVHquO z|n*)j4_SnNe]_\]“†gwkrmnnny{ʼnZlvTdp@JI4X^xԉ@jwvw@~ny yorpmue{`nYnpr@^rss~~xvvyv}y@uwzD8{{|z|{}{x}~yz~~} ; $ˉˬ7y88Siˎ; D8hLp` d|jK='t<  jmP P Z-mm  me f44-4LLmxzzMMzzV``V43 -ժLL\UI (fc}sm- -yisnK8 A*, gtx^L p&{'%%{pVJ9$5EE$ݑͥ}r:CW*[_?P`X=}[Abo/ kk(22I2(UJU2kd +Ԁ GX ] gZ X ] g44 G4 t TTTipE77EV@p1 U_xo H 6 f  I{ _gg_n 7bn 7b$ Xrzspps^?``^ $ _`bZ[z[;Z$ &jWWj&[@"UzUU$ XrzsppskG+P Tv@T K xILLIILLIx^ mK+ tttt΄PHt ZVt ˻WLqqrHrqqr- hnnu~t t˻WL@mA ˻WL.t JMs^\tlji!) tIK^0tH!wwxt^B<``uft`WU4 x tttt* ɽYM$ ɽYM ɽYMwwx?)^cj]Dces ҳxk.a ɽYM$ 18X:b}}} FhXa"! D( }}}b81mo9ttʓ 0 %nllb !+fzx!p|/7chhk+^[THP}.}{{MYɷ7o_qccy4{H]ȣǦɽYM|%npzdcZ}!DR߼ \Zjћ|0!߼XEdkdNYTMNX 0PcXR}6~YVWt   S kIJX%Ba8k#E b>[=:-  Yvk2 OT\0OUƀԫafob~hSwk9&&FD[ _Jͽ "QQO;2x) +?q$@8q+*;u~-%xxxquutgfh%'E̹VL*v˺VM`wzTE`ubiqzuppJ_e'%|ŕ}rɾɿdZ,ɻ˾gY%8>4 x [;kttTtTl* MCΫ MC1 ˻WLN͜f´[VmJJ{K/oqwnbces՜ ѵvj+^ d^]  blՔm)xyx^HCii}l\NJp" #kk՜͜k眫 tt: oVtt c7/{{{b zf+!b lln% 0 ǓEt^+jffllɽYM{{}.}PHT/7qͻ]H{4cycq_MYɛǦsjZ\ !}Zcdznp% 0DRɹXNMTYNdkdEXÿ!0WV~Y6R}XcP^vHZt|z( z] }z!~q{yzp~"{}~{=UP? Q={~G 4IHtZ]41YW36ЧubQEd]"( T$7/V,'t 044 '%YT8l 9|2'8  (%XU7l 9|3'940 k@tt++UUttttC<<4444 TTUUttttC++<<44 aJZZZZ44cTSc++TS33ZZ 0gQvOy#DORKPKaXWaaXWaaWWabWWa 45! 54! 54!-..-......-..-..Xcc@cccccc0ɂь8`a@aNdC9sbccc@ccbcX9XE-JF,bH5@Y&nË49HbF8s̷pzSzN{R{< `_`_`_`_9''''pqD-A&aa-D`qX_1`AMtCC%&*)GGbbIc~c͋%)Gc͋cBս_m 3PD33DD33DjKgl:VF_-zMWSRn\nnnn\nZECSSnn\nnӾN+F:g˝VC&&ӋlgZG%%GG%%GG%%GG%%GP8 XP * 6DD6srpsG4Tmmv)t~̩vVJk}ltu(vumm4[ `$O?$d``zw~y8Mva\tiN߶܎`4s~nkA["gwdLaG$lΥэ`v~{ҊꅮK-5%L .U |肙i54_:vxH|Q̋yPBCĻ*O8Qz }y2!v w 2!dx%%uouyf"2E"ciP8+ H>VV> 8PicE0}D8F?:/5mV?_@)*_AUm֡F8~4pw:{hI K6AOR||| 7::-R=6jsnVK {Qr2w..4$<1Unk;HKTC$[EEq;rI/(6F+G-7+`=(c2F]U=PO>Ulx x { T@q] Tgt1 it c* KWWKKW#1bnZyOL/õB+ h'X=-k7yS[rWmK|CO]ew,i@RF˿WKJvf|)}xyk~JJ?X7gf3.x,+.46?JGXjkځLJvl~doJLN*4A@Pbaul~xyJJJww}IIJÐN~LkR{mmaUULEC><;;{mDRs*MSPwms}wy<u|ƌ  Y10 Y 1122X48C1£dzʧr]^NJqZoe~|Z~W43XV32X+1fIHJLh67:gfs˂uncor~EMUUaml|ؚѩʵɩӛlG@/' "vg9~{~iyenaMxx,wMw^Fyl}l 66xtm|cw&LL+dtjiJ4qqߠ˚|O)xOpYpZ,,pWwT,JyIE7wt4vQ^6_4 TT4 P q q bty % %  @tTtL tto tt ttD4 TT 4 t#4 +PPPP]w~PPPP# QPQPPQPQk#4 ]w~PPpp# iP# T /0   x `tT_`b##b`_ yyQ t33 V22VL ' !!yrr11K- /H !!e+TTTrryy!!!!V@;vyuw{{{s{sqvwtzz zm m{`mm  F> v m m m %%WBS qg@\LP{|@)҅%V` BBB %%  @w\h<;v-;ݯ].Sg9GFXVi_d:ftl\mM>U:\!-B o-Bvˌ{bє~8w0R8#0F2SXtegJ]lA9HH8QXi[syxy\HN-fXR22Tt4t9lF9y4d;1?;UҒ/tt<%%< "SKj<5eZ>:$ $$=:Z>ejS m$54444q(f?f?(q***M**wI9(9II9(9I*' wdA467MR*M8=IF[-2 ~ 0XPdow4 4b^hvii!r(u)-vjzfj~qsoqz az qHoCwqs|qjz)(!ivi#o#vi%GT;;;;;;P 0VviWPVgumlwa||q{cYili`dH__·I5)4y)Y>BݮU11V1h8SM$wh#hAQWƇ¹ÐvZ];();;)(<&U11UԡϱB.` eSGtCm$t]$ttR4'4$BL8,L9}x9`Q^fxOoDk3dGԴ"TUa  vsXQF55EE65E<xiUNgs{f<ϖҖ~hr84W{mXx|cqJ_s'*0󍂎iZӵԵYn5U+"C~?ihyvxnnn6 >#A0W9 |xuzlMx|lT(x||xx|T*0(=`hZ6, L86- I86, _ -i1Yn|||jjk8dJ!E+z$99$+!8YisV>crbxy~vz\\\}v{~^ws8~64468w^~ybrc>s3%p[rrcrrkii~kssqrbrIIV*B+$$c+CB~II%%Uaa;U%% 5??H5 ~)ԫ   Tt t ` 5!J Jn J wNk+mTTT11W E VNMDH>>35b d- E. :V22VV22Vd'cU/ ocuovocv?% q|~fFF 0.*ocvnvocv&0q|KTi KTTdhjw{i^u_oYlnus o^iwhY_u{jhwuji>qw[GA?ijkŒ[V(1g=VijNbi6%Qtb(e nzfl4u~d p "v[~}dtVldvtşW4tt }}} "CVt[Rt}~[tvR[Cljh\^a\Qwt\s[Rsjz\oUwQVf[VT[gdk\c`^ebiObt6Qb(Te |TT&&'dq:=2G<LCYRhn@K5 $c{{q{<<{{qz{cc00E3'ҥ}}{PRHLbyz{*Tb#E.ᕖz<_d_:@sgD_^_*dJA Bɴ׵to'W4pwοšvWXM uY1A3g,{ հ yL Z=xsav^|ZZ[k.k/k.hemf$6k+ː]V$Iqo~QNڈ7.;ghhVND<{B3^w/ۍֵ5b LQ*GJW}ϗѝڏy kTUnn~ryj_MlNy|bmmT]bj[X]~-u[_k[TZKNW]dWT]TkYacYUaö1r&>kfbr(ywvE^nw"'hRcl`jObenfQaWT`]Tti\~{&XU3tOZq]s~Q[8qQ]sZq{N\[kP`m]lM_|r(nhd&>lecovDd$H6}z~t1YbSu\qP y,:|`B/ O~TaKJ~Lyy1Vwy:pI>/2ndgaWrsw  =!Y 2R?2"?=. O?U<AD$(-}}}[ׯMgYST**lSmMrWJB`enū)c1&E,u|ѰڡšXMN9* T(T33T&V ]!zltahqrp!s,o"prrgl!| N#l[heeezpK^7Lw} cb* [)F3RtZ>UKLLdllh]rd.^7|}}\".% _qqoy~yGAokzAïwPW ~|ԪAyoqq0[]yZigmpgːt@6)HW\!zktaiqqq s,o!qrqhk!{ N#k[iedezpK^7Kx}p    #` RN{M{ xiwi9#GsE}Tl+{X|V}2h8pihE[&Yr!hgRoq-εߝA UǾԾ*}t~xqi#E3lgc2Fj`\Y=urrqrqs $>tY~\w`rk2FclgglbE3jr`w\~Yu<rqqqrr %tmZR{QsstN]wiggXnϤOTͮmwmwmwŷ v|iI#&bSS!mvvu  D4P 3i-kbUST345IIIyq߬ ) )) 19j4 :P* C3+K}T -M ujmatvhj_|[t>4a@kk[|^4z8qFl;7MtH $v"?-=xGnS-ub7È A wc-Ef7-^DNfrx~58~O  K(JD;;JEYFkT«FYEA# ## #$ ## $R+7TS+V T}y ` $ ## $# ## #[pdIH[<+N  >t:OO  %%%&$'b %%$'#( Gg4(K K4(Gg.S1>P;;>S1. F ڨzz'.<!bV[b-;PP-;b[V!E$@hh ? +YZ< [ ZY+  d 0dA1]ZInBBIZ1dA05K.$$%&T `X +S @gT T B[PP>P[,cs£,P t K: y}j Ky}}yTy} K K[R +X @l  9tk,ccTsNNTck,BP>ƻPn4RT1 T7}y1 T 8 K ' T1 T @ {X @l  o0v@0<;u^'\ =*S<,cXP*"c`[h3\5jj5< UgF19PREij+#hd$єZۯӄhw*K (Y&ZvV^e1.j4E9""оqrQ)`j#KE[|z0Y`7~?g drlf.kg*{WrrZ^mwvl[s njbgnzhylqfSB[< .ShtviKkTpxvnmn`j|kfZ_FnʬҞgn|rRMHh,Irqprg^sAM/)8[PD0nf ivqXѵ+DD yZnbt9#tx 3 us{q[Ƣ᳚s~N\ 0H" H" H" H" 1  VKTT6 64" E#E EP/"@Z<[@E EE#[<:Z TTT@TTx T) 9 __&X.$ Kp_A;__9~2M@nh M* TKMT @nh M(@nh M P M@  @ i @ TT&DNuye }  Vҽ T} ljllR  ~ufH7NuuaauuTAMr\JC+1 7}yy}}yy}K}yy}}y+ , @j vjIIJ# %BzϜԝ̒<LRosxzce%k$ld!|{{tuv\| k~}lr>++6YF$&E{YIv['?Eljo~ (9 0tX @] T +X T] S TgTZ c k~~w~}}}}~~w~&&~}}}}~&&~}}}}~&&~w~~}}}}~w~~k =====&& ==== &&====&&====&&} ""4 0_}2/bw_1*S@ H2spoȫg zz9A{ezp{{hh{zqz@ez@zz'L`FF=1<1#WX ]vvL;3lK@+@LV +< qU]%FO^ePVn`r'sysfX\Rq8dsضsF%KٮJ}3хbslt[`Tvuai4.:e?2%ٰۂ~%~GbRSlg}^`st`an좾]4jމQ@.&%&%&%&% YJ I8/-pR %szw8&%Bpq2zr% !!2.l?A  R჋Ίt,ә$j"u/}s-|ZH8 H.w_puj}$xll`?^ l2BAAq3l۴l8okmYQSBjtvml .ڎ\KHqX @l  )uAp6wYl4~yUѯW?QYm}ptjhFEPx3|(/ŏ45&ϻąfamJ?jԋ<#>n,iIΙJ\DHհ4.4g"]vzuyia=sA|M5#Mo`Ba,l#:PhCt"]уHą3B̖ڒ/qu=hUUv@i/ ::hUyrw>ggjk>pDLUxzxzxzxz[a7MzR?ݙob4~{z+4+4+4+4+ T@   (     ` @{3 @< A P    P P  x 7ޜr8{M11Mז@;NyydmyN!4p<%0d*TKjjT*6Ld0%pb;4NmdylymczN ;j|@118rz;jN mzcmmNT4o;b0dSL6jcjKSd0<oT4N!ymN ]]zϞҞԝxxy5___Yt ~rl3/r5l3/  HrvZjG ?C-T%%\:RR:R_DDDDDDDD?)|8oCA /-$",B5|6-GcKdԛӘ py||u~w'~rb F o    & , @ e s {      - : K U c g l u |   / O V Z ` j o u {  &Dbs~-18>EKOTm  ).7<DQYns%:@Ui{ "',1CUZl~$(-2BHP`gku{ $,2APWZ_drw} +8EOU[binty~ $).38CNY_doz <<C KFKkr =oYB; E#E EP/" @Z<[ E EE#[<:Z@ TTT TTxTBt) P t* i@EXXE+y}}yK . +EXXE P  +  .  '  33 y] hnnh }y ]]]]s4  . \2A y} B  ,  FTk BBa U) y}}yKy}}yTN %  = hnnhhnq F  A [ ]]E }t ""  M - \      1<0 0 +   ff }y f _" - .  hnnh C p  }yT(  - V` C3 }yTy}}yT c  |z S +o + D+ \T2TA  ʆiimdod $@~ Kz&w{yyw}| |}xz{wa&zK $|' [[ !!  oZ S 1  0 [R YWffG ffU ] @g w TH U  3CC3 X K] + > TY  [ RDh  1  TTTG_^X*D4 4D*Y_`tW ! '''e   TT  TT i hh    O  g B 4TT=TT y}7 !x! hD  : ,  JJ 4   F/B NPuc]T! >9U G @V``V}~d3fTw@t(suwN5~w}+}PV  {zg  : T TR ] Ky}  H g TB 4$$G U$$ V``VV` `V  ! _Ib \;COLD|yz|ru{A0%{[k @h hn z|  r  4~~4`_`R`e9C/R&ažҦ4A'")~4 Uff ,u !55! = = T- /T {z GCC8=<<8CGC   VV  z| YY .:t: } &&T O  ' LfeNzyz# u"=1?u՗ ff YY Yff  & /]]1a }. M MY;/a3 :  t@y t gZ !5  \|\?ZEԅc*y^H(ym|[ n U t3 ZZr EQQEEQc '> 0 4 Z V``V  ~   zz3') {z4  +<<<< { .= =  C 9"TM5Ř{~~D;i ffW 4x !x! QE 8 8 8 x  i     tkRE; V``V< A 5 /  RT &    + ,  3    O >  zr^``^?*<씒   @(  S t }    X @] -   }y yrrrryy  ( yy ~w~~     [  tt |z@( Tz| }D}} RD ,l"7o''$ { 1 D     !K z{ 8T(A(A(A mt Kxxtw~ ̍t|~}: @w{tsoyx ~  R1 7 OIIgX!!gXg! fz\J$9:lA ~w]]w~ z  mm))mm)  { G YU 3- t a h N0  K m + )v P  \ t44  < A ,, , ,  T  b  < TA  F  }t.+ݭ { `T33 V @  tk rcrr   @  >  xyots{ SK(   tp  yy :  7 D$$D   nh &T* 5 @$$@! quuqqu;;uq f K< p   QE t ' rrcr 2 T STdJ,]շ49 arwwvyr/ (DB%$AΌ %  `uttu~w ccl qt= hF B 44    V s V   Ez*6z*E! !$DD$    7T  -  R  5 yy C .  @h  <<<<  o7 TT_Ld haahi`ah  /ti V H  ԫԫ  ] Tt . ;; <:Z:  3}|A  P  3C ɽ Nba] 0 $7 o"7l      @      << y}|z  i  z{ RD 3 $$ DR  ip w   EQy 1 0 fM@ jmq  ,4[  @ XtxmihbW_)  RK( t :z{ z} R%  7 tC ( t  z x x !5  x  & %y}  _gg_    *10 ˒ h   `V  m    [  ˋˋˋˋˋ 7ߋ7   K [ L z   - -      Ty  !5  z + &m/ %t~ -   \$"WT * nh ttt v    ##   h33spyrs@  "" x@8 !"""`>N^fin~'(.>N^n~>N^n~ !"""`!@P`gjp ()0@P`p!@P`p\QA0ޕR     v^  %|_<O<01h  pv_]yn2@zZ@55 ZZ@,_@f@ @(@@@- MM- MM@@@ -b   5-8@ D@,*@  m)@@   ' D9>dU*#    R     @ e  %RE    $ k(D'  % %  0$.$P/ /: /K /Q]    ^ U k "y U $ U  a y * <Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFONTLAB:OTFEXPORTVersion 4.7.0 2016Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/Copyright Dave Gandy 2016. All rights reserved.FontAwesomeRegularFONTLAB:OTFEXPORTVersion 4.7.0 2016Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/prewikka-5.2.0/prewikka/htdocs/fonts/fontawesome-webfont.eot0000644000000000000000000050355613726165107024253 0ustar rootroot00000000000000nLPYxϐFontAwesomeRegular$Version 4.7.0 2016FontAwesome PFFTMkGGDEFp OS/22z@X`cmap : gasphglyfMLhead-6hhea $hmtxEy loca\ maxp,8 name㗋ghpostkuːxY_< 3232  '@i33spyrs@  pU]yn2@ zZ@55 zZZ@,_@s@ @(@@@- MM- MM@@@ -`b $ 648""""""@ D@ ,,@  m)@@   ' D9>dY* '    T     @ f %RE    $!k(D'  % %  0%/&p@0 !"""`>N^n~.>N^n~>N^n~ !"""`!@P`p 0@P`p!@P`p\XSB1ݬ        ,,,,,,,,,,,,,tLT$l x T ( dl,4dpH$d,t( !"0# $,$&D'()T**,,-.@./`/00123d4445 556 6\67H78 8`89L9:h:;<>?h?@H@A0ABXBCdCDLDEFG0GHIJ8KLMdN,NNOP`PQ4QR RlS,ST`U0WXZ[@[\<\]^(^_`pb,bddePefg`giLijDk klm@n,oLpqrsxttuD{`||}}~Hl@lH T H`@$\XDTXDP,8d\Hx tXpdxt@ Œ\ ļŸƔ0dʨˀ͔xϰЌ,ш҈ ӌ8,՜`lHش`Tڸ۔@lބ߬lp 4X$l( ` d      ,,8(Xx|T@| !"x##l$$'h(*L,T.L1t1230345t6T7$8 9H::;<<?X@ABCDEHFHGpHHIxJ JKLMN@P@QRSDT ULV`VWXX4XZZ[d[\|]^`aHabcXdetfhghi\jxnp@svwxyz{h|}}\lt4t88LT|| 4xLX(  @lt$xLL HĠT(  ʈˠϔldPՄxpڬTT ވL <H$l4 Pl ,xp,xt d 44,hP 4   4<,,408$8T |!h"$L%0&H'()*0*+,.$.012@234t5$69 ::; ;<(<=4?@ACDFH`HILLLLLLLLLLLLLLLLp7!!!@pp p]!2#!"&463!&54>3!2+@&&&&@+$(($F#+&4&&4&x+#+".4>32".4>32467632DhgZghDDhg-iWDhgZghDDhg-iW&@ (8 2N++NdN+';2N++NdN+'3 8!  #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%=M%+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3%    @ :"7..7":6]^B@B^^BB^ $΄+0110+$ (   t1%%1+`B^^B@B^^"'.54632>324 #LoP$$Po>Z$_dC+I@$$@I+"#"'%#"&547&547%62V??V8<8y   b% I))9I  + % %#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[   2 b% I))9I %#!"&54>3 72 &6 }XX}.GuLlLuG.>mmUmEEm> /?O_o54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B^^B@B^^/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2L44LL44LL44LL44LL44LL44LL44LL44L4LL44LL4LL44LL4LL44LL4LL44LL /?O_o#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88/?O_#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88(@(88((88((88(@(88(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88y"/&4?62 62,PP&PP,jPn#$"' "/&47 &4?62 62 PP&P&&P&P&P&&P&P#+D++"&=#"&=46;546;232  #"'#"$&6$   @    @  rK56$܏ooo|W@    @   rjK&V|oooܳ0#!"&=463!2  #"'#"$&6$   @ rK56$܏ooo|W@  @ rjK&V|oooܳ)5 $&54762>54&'.7>"&5462zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL/?O%+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2`r@@r@@n4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632Ԗ #H  ,/ 1)  ~'H  (C  ,/ 1)  $H ԖԖm 6%2X  % l2 k r6 [21 ..9Q $ k2 k w3 [20/;Cg+"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@@`0 o`^BB^`5FN(@(NF5 @@@L%%Ju  @LSyuS@%44%f5#!!!"&5465 7#"' '&/&6762546;2&&??>  LL >  X   &&&AJ A J Wh##!"&5463!2!&'&!"&5!(8((88((`x c`(8`((88(@(8(D 9 8( ,#!"&=46;46;2.  6 $$ @(r^aa@@`(_^aa2NC5.+";26#!26'.#!"3!"547>3!";26/.#!2W  .@   @.$S   S$@   9I   I6>  >%=$4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2&4&&4&&4&&48(@(88(ч::(8@6@*&&*4&&4&&4&&4& (88(@(8888)@)'&&@$0"'&76;46;232  >& $$ `  (r^aa` @`2(^aa$0++"&5#"&54762  >& $$ ^ ?  @(r^aa` ? (^aa #!.'!!!%#!"&547>3!2<<<_@`&& 5@5 @  &&>=(""='#"'&5476.  6 $$   ! (r^aaJ %%(_^aa3#!"'&?&#"3267672#"$&6$3276&@*hQQhwI mʬzzk)'@&('QнQh_   z8zoe$G!"$'"&5463!23267676;2#!"&4?&#"+"&=!2762@hk4&&&GaF * &@&ɆF * Ak4&nf&&&4BHrd@&&4rd  Moe&/?O_o+"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2 @  @  @  @  @  @  @    @    @    @   ^B@B^^BB^`@  @ @  @ @  @ @  @ @  @ @  @ 3@  MB^^B@B^^!54&"#!"&546;54 32@Ԗ@8(@(88( p (8jj(88(@(88@7+"&5&5462#".#"#"&5476763232>32@@ @ @KjKך=}\I&:k~&26]S &H&  &H5KKut,4, & x:;*4*&K#+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G< _bb_ 4.54632&4&&M4&UF &""""& F&M&&M&%/B/%G-Ik"'!"&5463!62#"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632&4&&M4&UF &""""& FU &'8JSSJ8'&  &'.${{$.'& &M&&M&%/B/%7;&'66'&;4[&$ [2[ $&[  #/37#5#5!#5!!!!!!!#5!#5!5##!35!!! #'+/37;?3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3???? ^>>~??????~??~??^??^^? ^??4&"2#"'.5463!2KjKKjv%'45%5&5L45&% jKKjK@5%%%%54L5&6'k54&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&% jKKjK@5%%%%54L5&6'45%%%54'&55&6' yTdt#!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM ,*$/ !'& JP$G] x6,& `   h `   "9Hv@WkNC<.  &k& ( "$p" . #u&#  %!' pJvwEF#  @   @  2#"' #"'.546763!''!0#GG$/!''! 8""8  X! 8" "8  <)!!#"&=!4&"27+#!"&=#"&546;463!232(8&4&&4 8(@(8 qO@8((`(@Oq8(&4&&4&@` (88( Oq (8(`(q!)2"&42#!"&546;7>3!2  Ijjjj3e55e3gr`Ijjjj1GG1rP2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03& K5!)V?@L' >R>e;&L::%P>vO 'h N_":- &+# : ' +a%3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$ $5.3bZF|\8!-T>5Fu\,,jn OrB,7676'5.'732>7"#"&#&#"OA zj=N!}:0e%  y + tD3~U#B4 # g  '2 %/!: T bRU,7}%2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6 ,,$$% *'  c2N  ($"LA23Yl !x!*%%%% pP,T NE Q7^oH!+( 3  *Ueeu  wga32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* <7@@7<  <7@@7<  pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh',686,'$##$',686,'$##$/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?O_o%+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2        @     @   @   @   s  s    s    s  s  /?O#"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2     @     @   @  @          s  s  s  /?O#"&54632 #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`      @     @   @  @     @   s  s  s  #"'#!"&5463!2632' mw@www '*wwww."&462!5 !"3!2654&#!"&5463!2pppp@  @ ^BB^^B@B^ppp@@  @    @B^^BB^^k%!7'34#"3276' !7632k[[v  6`%`$65&%[[k `5%&&'4&"2"&'&54 Ԗ!?H?!,,ԖԖmF!&&!Fm,%" $$ ^aa`@^aa-4'.'&"26% 547>7>2"KjKXQqYn 243nYqQ$!+!77!+!$5KK,ԑ ]""]ً 9>H7'3&7#!"&5463!2'&#!"3!26=4?6 !762xtt`  ^Qwww@?6 1B^^B@B^ @(` `\\\P`tt8`  ^Ͼww@w 1^BB^^B~ @` \ \P+Z#!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8 pB^^B@B^ 'sw- 9*##;Noj' #ww@w "^BB^^B  *  "g`81T`PSA:'*4/D#!"&5463!2#"'&#!"3!26=4?632"'&4?62 62www@?6 1 B^^B@B^ @ BRnBBn^ww@w 1 ^BB^^B @ BnnBC"&=!32"'&46;!"'&4762!#"&4762+!54624&&4&&44&&4&&44&&44&&4&&44&&6'&'+"&546;267: &&&& s @  Z&&&&Z +6'&''&'+"&546;267667: : &&&&  s @  :  Z&&&&Z  : z6'&''&47667S: : s @  : 4 : | &546h!!0a   $#!"&5463!2#!"&5463!2&&&&&&&&@&&&&&&&&#!"&5463!2&&&&@&&&&&54646&5- : s  :  :4:  +&5464646;2+"&5&5-  &&&& : s  :  : &&&& :  &54646;2+"&5- &&&& s  : &&&&  62#!"&!"&5463!24 @ &&&&-:&&&& "'&476244444Zf "/&47 &4?62S44444#/54&#!4&+"!"3!;265!26 $$ &&&&&&&&@^aa@&&&&&&&&+^aa54&#!"3!26 $$ &&&&@^aa@&&&&+^aa+74/7654/&#"'&#"32?32?6 $$ }ZZZZ^aaZZZZ^aa#4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa:F%54&+";264.#"32767632;265467>$ $$ oW  5!"40K(0?i+! ":^aaXRd D4!&.uC$=1/J=^aa.:%54&+4&#!";#"3!2654&+";26 $$ ```^aa^aa/_#"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%&&&l m&&m l&&l m&&m ,&%&&%&&%&&%&#/;"/"/&4?'&4?627626.  6 $$ I     ͒(r^aaɒ    (_^aa , "'&4?6262.  6 $$ Z4f44fz(r^aaZ&4ff4(_^aa "4'32>&#" $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz@5K #!#"'&547632!2A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K5K #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#5K@!#"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'5K"#"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K',"&5#"#"'.'547!34624&bqb>#  5&44& 6Uue7D#  "dž&/#!"&546262"/"/&47'&463!2 &@&&4L  r&4  r L&& 4&&&L rI@& r  L4&& s/"/"/&47'&463!2#!"&546262&4  r L&& &@&&4L  r@@& r  L4&& 4&&&L r##!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8#!"&=463!28(@(88((8 (88((88z5'%+"&5&/&67-.?>46;2%6.@g.L44L.g@. .@g. L44L .g@.g.n.4LL43.n.gg.n.34LL4͙.n.g -  $54&+";264'&+";26/a^    ^aa fm  @ J%55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MMN4&#"327>76$32#"'.#"#"&'.54>54&'&54>7>7>32&z&^&./+>+)>J> Wm7' '"''? &4&c&^|h_bml/J@L@#* #M6:D 35sҟw$ '% ' \t3#!"&=463!2'.54>54''  @ 1O``O1CZZ71O``O1BZZ7@  @ N]SHH[3`)TtbN]SHH[3^)Tt!1&' 547 $4&#"2654632 '&476 ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D# =CU%7.5474&#"2654632%#"'&547.'&476!27632#76$7&'7+NWb=嘧}(zVj\i1  z,X Y[6 $!%'FuJiys?_9ɍ?kyhun(}Vz YF  KA؉La  02-F"@Qsp@_!3%54&+";264'&+";26#!"&'&7>2    #%;"";%#`,@L 5 `   `  L`4LH` `   a 5 L@ #37;?Os!!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@ @ @  @  @  @  @ L44LL4^B@B^^B@B^4L  @@@@    @@   @@    M4LL44L`B^^B``B^^B`L7q.+"&=46;2#"&=".'673!54632#"&=!"+"&=46;2>767>3!546327>7&54>$32dFK1A  0) L.٫C58.H(Ye#3C $=463!22>=463!2#!"&5463!2#!"&5463!2H&&/7#"&463!2!2LhLLhLhLLh! &&&&& &4hLLhLLhLLhL%z< 0&4&& )17&4& &&#!"&5463!2!2\@\\@\\@\\\\ W*#!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\ @+32"'&46;#"&4762&&4&&44&&44&&4@"&=!"'&4762!54624&&44&&44&&4&& !!!3!!0@67&#".'&'#"'#"'32>54'6#!"&5463!28ADAE=\W{O[/5dI kDtpČe1?*w@www (M& B{Wta28r=Ku?RZ^GwT -@www$2+37#546375&#"#3!"&5463ww/Dz?swww@wS88 ww#'.>4&#"26546326"&462!5!&  !5!!=!!%#!"&5463!2B^8(Ԗ>@|K55KK55K^B(8ԖԖ€>v5KK55KKHG4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb '"+`N*(a;2̓c`." b PTY9ppP*)pppP*)b ".`(*Nͣ2ͣ`+"' b MRZB4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK "8w s%(  ")v  >  "8x s"+  ")v  <  3zLLz3 3>8L3)x3 3zLLz3 3>8L3)x3 ԖԖ4LL45KK54LL45KK #)0C wZ l/ Y N,& #)0C vZl. Y L0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq%O#"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2 $ |E~E<| $ 2$|ZV:(t}X(  &%(Hw쉉xH(%& (XZT\MKG<m$4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232&4&&4N2`@`%)7&,$)' %/0Ӄy#5 +1 &<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c>q4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2&4&&4+ 5#bW0/% ')$,&7)%`@``2Nh0##T3'"( 0;e$5KK5 tip<& 1&4&&4&#\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I@#"&547&547%6@?V8 b% I)94.""'." 67"'.54632>32+C`\hxeH>Hexh\`C+ED4 #LoP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+ (@%#!"&5463!2#!"3!:"&5!"&5463!462 ww@  B^^B  4&@&&&4 `  ww   ^B@B^ 24& && &%573#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www .4&"26#!+"'!"&5463"&463!2#2&S3 Ll&c4LL44LL4c@& &{LhLLhL'?#!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t  r &&`ww@w@^BB^^B@R&t r  4&&@"&5!"&5463!462 #!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw  @B^^B  @w4& && &3@w   ^BB^    I&5!%5!>732#!"&=4632654&'&'.=463!5463!2!2JJSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8 ',26'&'&76'6'&6&'&6'&4#"7&64 654'.'&'.63226767.547&7662>76#!"&5463!2  /[  . =XĚ4,+"  * +, 1JH'5G:: #L5+@=&#w@wwwP.1GE,ԧ4 4+ ; /5cFO:>JJ>:O9W5$@(b 4 @www'?$4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762&4&&4&&4&&48(@(88(c==c(8*&&*6&4&&4&&4&&4& (88(@(88HH88`(@&&('@1c4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632   N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ  ,-[% 061I()W,$-7,oIX()oζA;=N0 eTZ  (O#".'&'&'&'.54767>3232>32 e^\4?P bMO0# 382W# & 9C9 Lĉ" 82<*9FF(W283 #0OMb P?4\^e FF9*<28 "L 9C9 & #!"3!2654&#!"&5463!2`B^^B@B^^ީwww@w^BB^^B@B^ww@w#!72#"' #"'.546763YY !''!0#GG$/!''!&UUjZ 8""8  X! 8" "8 GW4.'.#"#".'.'.54>54.'.#"32676#!"&5463!2 1.- +$)  c8 )1)  05.D <90)$9w@wwwW  )1) 7c  )$+ -.1 9$)0< D.59@www,T1# '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}a u&,SXK &$f9s? _#"!#!#!54632V<%'ЭHH (ںT\dksz &54654'>54'6'&&"."&'./"?'&546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9' 0BA; + >HCU  #  $  2  AC: oM=a-6OUwW[q ( - q[WwUP6$C +) (  8&/ &eMa  & $      %+"&54&"32#!"&5463!54 &@&Ԗ`(88(@(88(r&&jj8((88(@(8#'+2#!"&5463"!54&#265!375!35!B^^BB^^B   `^B@B^^BB^  ` !="&462+"&'&'.=476;+"&'&$'.=476; pppp$!$qr % }#ߺppp!E$ rqܢ# % ֻ!)?"&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B @   2^B@B^\77\aB//B//B//B/@    ~B^^B@2^5BB52.42##%&'.67#"&=463! 25KK5L4_u:B&1/&.- zB^^B4LvyKjK4L[!^k'!A3;):2*547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\}I/#"/'&/'&?'&'&?'&76?'&7676767676` (5 )0 ) *) 0) 5(  (5 )0 )))) 0) 5( *) 0) 5(  )5 )0 )**) 0) 5)  )5 )0 )*5h$4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2&4&&4N2$YGB (HGEG HQ#5K4Li!<;5KK5 A# ("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K J7R>@#zD<5=q%3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2` #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"( #A  5K2*! Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>igR7J K5h4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326&4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K J7R>@#zD9eMZ4&&4&<#5K4LN2$YGB (HGEG HV;5KK5 A# ("/?&}vhi!<4<p4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*! Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J K55K;E@TƾH #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"( #A  5KK5;+54&#!764/&"2?64/!26 $$ & [6[[j6[&^aa@&4[[6[[6&+^aa+4/&"!"3!277$ $$ [6[ &&[6j[ ^aae6[j[6&&4[j[^aa+4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[ &&[^aa+4/&"4&+"'&"2? $$ [6&&4[j[6[j^aad6[&& [6[[j^aa   $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"      4   $!   #          .0"Y +  !       $     "  +       Α      ^aa                        P   ' -( # * $  "  !     * !   (         $      2 ~/$4&"2 #"/&547#"32>32&4&&4V%54'j&&'/덹:,{ &4&&4&V%%l$65&b'Cr! " k[G +;%!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2&&&&&&&&&&&&@&&&&&&&&&&&&{#"'&5&763!2{' **)*)'/!5!#!"&5!3!26=#!5!463!5463!2!2^B@B^&@&`^B`8(@(8`B^ B^^B&&B^(88(^G 76#!"'&? #!"&5476 #"'&5463!2 '&763!2#"'c)'&@**@&('c (&*cc*&' *@&('c'(&*cc*&('c'(&@*19AS[#"&532327#!"&54>322>32"&462 &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe= BPPB =eF6 ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖp!Ci4/&#"#".'32?64/&#"327.546326#"/&547'#"/&4?632632(* 8( !)(A(')* 8( !USxySSXXVzxTTUSxySSXXVzxT@(  (8 *(('( (8 SSUSx{VXXTTSSUSx{VXXT#!"5467&5432632t,Ԟ;F`j)6,>jK?s !%#!"&7#"&463!2+!'5#8EjjE8@&&&&@XYY&4&&4&qDS%q%N\jx2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&l NnbSVZ bRSD zz DSRb)+USbn \.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` ` &4&&4r$#@B10M5TNT{L5T II T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$: $/ @@Qq`@"%3<2#!"&5!"&5467>3!263! !!#!!46!#!(88(@(8(8(`((8D<++<8(`(8(`8(@(88( 8((`(8((<`(8(``(8||?%#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs] = OfjL?R@T?"& > f?rRX=Edudsq = _MjiL?T@R?E& f > =XRr?b!1E)!34&'.##!"&5#3463!24&+";26#!"&5463!2 08((88(@(8  8((88((`(1  `(88((88(@  `(88(@(8(`#!"&5463!2w@www`@www/%#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&&&&&@'7G$"&462"&462#!"&=463!2"&462#!"&=463!2#!"&=463!2ppppppp @   ppp @    @   Рpppppp  ppp    <L\l|#"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE @  k*Gj @   @   TP\BX-@8 C)5Xs J@$3T4+,:;39SG2S.7<  vcc)) %Ll}    5e2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo  T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ $&P{<8[;:XICC>.'5oe80#.0(  l0&%,"J&9%$<=DTIcs&/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260% <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$@@ /?O_o%54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2@@@@@@@@@^BB^^B@B^NB^^B@B^^#+3 '$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb@M$4&"2!#"4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh LhLLhL! 'ԖԖ@' !&  ?&&LhLLhL hLLhL jjjj &@6/" &&J#"'676732>54.#"7>76'&54632#"&7>54&#"&54$ ok; -j=yhwi[+PM 3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|aL2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U ,iXբW<"uW1AqSH1bdww'74'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www ]#/#"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC` cot*tq||.EXN#?? ,<!5##673#$".4>2"&5!#2!46#!"&5463!2rM* *M~~M**M~~M*jjj&&&&`P%挐|NN||NN|*jjjj@&&&&@ "'&463!2@4@&Z4@4&@ #!"&4762&&4Z4&&4@@ "'&4762&4@4&@&4&@ "&5462@@4&&44@&&@ 3!!%!!26#!"&5463!2`m` ^BB^^B@B^  `@B^^BB^^@ "'&463!2#!"&4762@4@&&&&44@4&Z4&&4@ "'&463!2@4@&4@4&@ #!"&4762&&4Z4&&4@:#!"&5;2>76%6+".'&$'.5463!2^B@B^,9j9Gv33vG9H9+bI\ A+=66=+A [">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^l+!+"&5462!4&#"!/!#>32]_gTRdgdQV?U I*Gg?!2IbbIJaaiwE3300 084#"$'&6?6332>4.#"#!"&54766$32z䜬m IwhQQhbF*@&('kz   _hQнQGB'(&*eoz(q!#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+~(  (h  &  \(  (  &  ~+54'k%5%l%%l$65+~  &  (  (\  &  h(  (~+%'!)19K4&"24&"26.676&$4&"24&"24&"2#!"'&46$ KjKKj KjKKje2.e<^P,bKjKKjKjKKj KjKKj##LlLKjKKjK jKKjK~-M7>7&54$ LhяW.{+9E=cQdFK1A  0) pJ2`[Q?l&٫C58.H(Y':d 6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK ~EVZ|$2 $ |: $ 2$|ZV:(t}hfR88T h̲X(  &%(Hw(%& (XZT\MKG{x|!#"'.7#"'&7>3!2%632u  j H{(e 9 1bU#!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!2328((88(``(88((88(``(88((88(`L4`(88(@(88(`4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48OY"&546226562#"'.#"#"'.'."#"'.'.#"#"&5476$32&"5462И&4&NdN!>! 1X:Dx+  +ww+  +xD:X1 -U !*,*&4&hh&&2NN2D &  ..J< $$ 767#"&'"&547&547&547.'&54>2l4  2cKEooED ) ) Dg-;</- ?.P^P.? -/<;-gYY  .2 L4H|O--O|HeO , , Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq4#!#"'&547632!2#"&=!"&=463!54632  @  `     ` ?`   @  @  !    54&+4&+"#"276#!"5467&5432632   `  _ v,Ԝ;G_j)``    _ ԟ7 ,>jL>54'&";;265326#!"5467&5432632    v,Ԝ;G_j) `   `7 ,>jL>X`$"&462#!"&54>72654&'547 7"2654'54622654'54&'46.' &6 &4&&4&yy %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% >4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~>M4&"27 $=.54632>32#"' 65#"&4632632 65.5462&4&&4G9& <#5KK5!!5KK5#< &ܤ9Gpp&4&&4&@>buោؐ&$KjKnjjKjK$&jjb>Ppp %!5!#"&5463!!35463!2+32@\\8(@(8\@@\\@\(88(\@ 34#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\@"4&+32!#!"&+#!"&5463!2pP@@Pjj@@\@\&0pj \\&-B+"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4&L44L &=d4LL4 d=&&`&&&&`&&&&4LL4  &#3CS#!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x c`(8@@@`((88(@(8(D 9 8(`@@@@@/?O_o-=%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @   `&&&& /?O_o%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ 8(@(8 @  @  @  @  @ &&&@8((8@&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @  (88(  @  ``   `` -&&& (88(&@<c$4&"2!#4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKjKjKKj&ԖԖ&&@&&KjKKjK jKKjK .&jjjj&4&@@&&#'1?I54&+54&+"#";;26=326!5!#"&5463!!35463!2+32 \\8(@(8\ \\@\(88(\: #32+53##'53535'575#5#5733#5;2+3@E&&`@@` `@@`&&E%@`@ @ @      @ 0 @!3!57#"&5'7!7!K5@   @5K@@@ #3%4&+"!4&+";265!;26#!"&5463!2&&&&&&&&w@www&&@&&&&@&&@www#354&#!4&+"!"3!;265!26#!"&5463!2&&&&&@&&@&w@www@&@&&&&&&@&:@www-M3)$"'&4762 "'&4762 s 2  .   2 w 2  .   2 w 2    2  ww  2    2  ww M3)"/&47 &4?62"/&47 &4?62S .  2 w 2   .  2 w 2  M . 2    2 .  . 2    2 .M3S)$"' "/&4762"' "/&47623 2  ww  2    2  ww  2    2 w 2   .v 2 w 2   .M3s)"'&4?62 62"'&4?62 623 .  . 2    2 .  . 2    2 .   2 w 2v .   2 w 2-Ms3 "'&4762s w 2  .   2 ww  2    2 MS3"/&47 &4?62S .  2 w 2  M . 2    2 .M 3S"' "/&47623 2  ww  2   m 2 w 2   .M-3s"'&4?62 623 .  . 2    2- .   2 w 2/4&#!"3!26#!#!"&54>5!"&5463!2  @ ^B && B^^B@B^ @  MB^%Q= &&& $$ (r^aa(^aa!C#!"&54>;2+";2#!"&54>;2+";2pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p!C+"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp@@ #+3;G$#"&5462"&462"&462#"&462"&462"&462"&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\  $$ ^aaQ^aa,#"&5465654.+"'&47623   #>bqb&44&ɢ5"  #D7euU6 &4&m 1X".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|x xXK--K|Mp<# )>dA{RXtfOT# RNftWQ,%4&#!"&=4&#!"3!26#!"&5463!2!28(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\ u'E4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\&8((88((8,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1. $4@"&'&676267>"&462"&462.  > $$ n%%/02 KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa$4@&'."'.7>2"&462"&462.  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y jKKjKKjKKjKffff@^aa +7#!"&463!2"&462"&462.  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa#+3C54&+54&+"#";;26=3264&"24&"2$#"'##"3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,, #/;GS_kw+"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2`````````````````````p`K55KK55Kp`````````````````````````5KK55KK@*V#"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK# ڗXF@Fp:f_ #WIpp&3z h[ 17q%q#::#5KKu't#!X: %#+=&>7p @ *2Fr56565'5&'. #"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ8 2.,#,fk*1x-!#@#KjK# ڗXF@Fp:f_ #WIpp&3z e`vo8t-  :5 [*#::#5KKu't#!X: %#+=&>7p  3$ "/&47 &4?62#!"&=463!2I.  2 w 2   -@). 2    2 . -@@-S$9%"'&4762  /.7> "/&47 &4?62i2  .   2 w E > u > .  2 w 2   2    2  ww !   h. 2    2 . ;#"'&476#"'&7'.'#"'&476' )'s "+5+@ա' )'F*4*Er4M:}}8 GO *4*~ (-/' #"'%#"&7&67%632B;>< V??V --C4 <B=cB5 !% %!b 7I))9I7 #"'.5!".67632y( #  ##@,( )8! !++"&=!"&5#"&=46;546;2!76232-SSS  SS``  K$4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*54&#"#"/.7!2<'G,')7N;2]=A+#H  0PRH6^;<T%-S#:/*@Z}   >h.%#!"&=46;#"&=463!232#!"&=463!2&&&@@&&&@&&&&&&&&&&&&f&&&&b#!"&=463!2#!"&'&63!2&&&&''%@% &&&&&&&&k%J%#/&'#!53#5!36?!#!'&54>54&#"'6763235 Ź}4NZN4;)3.i%Sin1KXL7觧*  #& *@jC?.>!&1' \%Awc8^;:+54&#"'6763235 Ź}4NZN4;)3.i%PlnEcdJ觧*  #& *-@jC?.>!&1' \%AwcBiC:D'P%! #!"&'&6763!2P &:&? &:&?5"K,)""K,)h#".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n  "h.=T#)#lQTv%.%P_ % %_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|'' 59%D-I)OY[R+P19-,##,-91P+R[YO)I-D%95%_P%.%v'3!2#!"&463!5&=462 =462 &546 &&&&&4&r&4&@&4&&4&G݀&&&&f s CK&=462 #"'32=462!2#!"&463!5&'"/&4762%4632e*&4&i76`al&4&&&&&}n  R   R zfOego&&5`3&&&4&&4& D R   R zv"!676"'.5463!2@@w^Cct~5  5~tcC&&@?JV|RIIR|V&&#G!!%4&+";26%4&+";26%#!"&546;546;2!546;232@@@@L44LL4^B@B^^B@B^4L  N4LL44L`B^^B``B^^B`LL4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632&4&&4  @ o&&}c ;pG=(  8Ai8^^.   &4&&4&` ` fs&& jo/;J!# 2 KAE*,B^^B! ` $ -4&"2#"/&7#"/&767%676$!28P88PQr @ U @ {`PTP88P8P`  @U @rQ!6'&+!!!!2Ѥ 8̙e;<*@8 !GGGQII %764' 64/&"2 $$ f3f4:4^aaf4334f:4:^aa %64'&" 2 $$ :4f3f4F^aa4f44f^aa 764'&"27 2 $$ f:4:f4334^aaf4:4f3^aa %64/&" &"2 $$ -f44f4^aa4f3f4:w^aa@7!!/#35%!'!%j/d jg2|855dc b @! !%!!7!FG)DH:&H dS)U4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f ]wq4qw] `dC&&:FԖF:&&Cd`4&&4& ]] `d[}&&"uFjjFu"&&y}[d#2#!"&546;4 +"&54&" (88(@(88( r&@&Ԗ8((88(@(8@&&jj'3"&462&    .  > $$ Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88((88((88((88((88/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((885E$4&"2%&'&;26%&.$'&;276#!"&5463!2KjKKj   f  \ w@wwwjKKjK"G   ܚ  f   @www   $64'&327/a^ ! ^aaJ@%% 65/ 64'&"2 "/64&"'&476227<ij6j6u%k%~8p8}%%%k%}8p8~%<@% %% !232"'&76;!"/&76  ($>( J &% $%64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www/#5#5'&76 764/&"%#!"&5463!248` # \P\w@www4`8  #@  `\P\`@www)4&#!"273276#!"&5463!2& *f4 'w@www`&')4f*@www%5 64'&"3276'7>332#!"&5463!2`'(wƒa8! ,j.( &w@www`4`*'?_`ze<  bw4/*@www-.  6 $$  (r^aaO(_^aa -"'&763!24&#!"3!26#!"&5463!2yB(( @   w@www]#@##   @ @www -#!"'&7624&#!"3!26#!"&5463!2y((@B@u @   w@www###@  @ @www -'&54764&#!"3!26#!"&5463!2@@####@w@wwwB((@@www`%#"'#"&=46;&7#"&=46;632/.#"!2#!!2#!32>?6#  !"'?_  BCbCaf\ + ~2   }0$  q 90r p r%D p u?#!"&=46;#"&=46;54632'.#"!2#!!546;2D a__ g *`-Uh1    ߫}   $^L  4b+"&=.'&?676032654.'.5467546;2'.#"ǟ B{PDg q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%_ ,-3  cVO2")#,)9;J) "!* #VD,'#/&>AX>++"''&=46;267!"&=463!&+"&=463!2+32Ԫ$   pU9ӑ @/*f o  VRfq f=SE!#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![       % )   "  Jg Uh BW&WX hU g 84&#!!2#!!2#!+"&=#"&=46;5#"&=46;463!2j@jo g|@~vv u n#467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ !mY Zga~bm] [o"U+, @h h@@X hh @83H\#5"'#"&+73273&#&+5275363534."#22>4.#2>ut 3NtRP*Ho2 Lo@!R(Ozh=,GID2F 8PuE>.'%&TeQ,jm{+>R{?jJrL6V @`7>wmR1q uWei/rr :Vr" $7V4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F +>R{8PuE>.'%&TeQ,jm{?jJrL6 @`rr :Vr3>wmR1q uWei@ \%4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2&%%&&&& &7.' :@$LBWM{#&$h1D!  .I/! Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r@ \#"&546324&#!"3!26%#!#"'.'.'&'.'.546767>;&%%&&&& &i7qN !/I.  !D1h$&#{MWBL$@: '.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L  +=\d%54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%! B? )#!CC $)  54f"@@ B+,A  A+&+A  ZK35N # J!1331CCC $)w@www2"33FYF~(-%"o4*)$(* (&;;&&9LA3  8334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www  +=[c}#"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY .06 62+YY-06 R[!.'CD''EH$VVX::Y X;:Y fyd/%jG&DC&&CD&O[52. [$C-D..D^^* ly1%=^I86i077S 3 $EWgO%33%OO%35 EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R 7>%3!+}{'+"&72'&76;2+"'66;2U &  ( P *'eJ."-dZ-n -'74'&+";27&+";276'56#!"&5463!2~} 7e  ۩w@www"  $Q #'!# @www I-22#!&$/.'.'.'=&7>?>369II ! ' $ !01$$%A' $ ! g  \7@)(7Y   \7@)(7Y @ '5557 ,VWQV.RW=?l%l`~0  !#!#%777 5! R!!XCCfff݀# `,{{{`Og4&"2 &6 $"&462$"&62>7>7>&46.'.'. '.'&7>76 Ԗ HR6L66LGHyU2L  L2UyHHyU2L  L2UyHn X6X  XX ԖԖH6L66L6 L2UyHHyU2L  L2UyHHyU2L n6X  XX  2#!"&54634&"2$4&"2ww@ww||||||w@www||||||| !3 37! $$ n6^55^h ^aaM1^aaP *Cg'.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7':Yi4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C ."!$28 h /" +p^&+3$ i0(w@www+.i6=Bn \C1XR:#"'jj 8Q.cAj57!? "0D$4" P[ & 2@wwwD"%.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45/%'#.5!5!#"37>#!"&5463!2p>,;$4 5eD+WcEw@wwwK()F ,VhV^9tjA0/@www@#"'&76;46;23   &  ++"&5#"&7632  ^  c  & @#!'&5476!2 &  ^  b '&=!"&=463!546  &    q&8#"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}} !"䒐""A$@C3^q|z=KK?6 lk)  %!%!VVuuu^-m5w}n~7M[264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67 \  U7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O $.( *.'  .x,  $CN      * 6   7%&&_f& ",VL,G$3@@$+ "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!e  R   "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?Ae  .(;1.D 4H&.Ct iY% *  7      J  <    W 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3  '.2>Vb%&#'32&'!>?>'&' &>"6&#">&'>26 $$ *b6~#= XP2{&%gx| .W)oOLOsEzG< CK}E $MFD<5+ z^aa$MWM 1>]|YY^D եA<KmE6<" @9I5*^aa>^4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV;267676&#!"&=463!267 #!"'&5463!26%8#! &&Z"M>2! ^I 7LRx_@>MN""`=&&*%I},  L7_jj9/%4&#!"3!264&#!"3!26#!"&5463!2  &&&&&&&&19#"'#++"&5#"&5475##"&54763!2"&4628(3- &B..B& -3(8IggI`(8+Ue&.BB.&+8(kk`%-"&5#"&5#"&5#"&5463!2"&4628P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ!%>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa,I4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛o ܴ   $ $ " $ $  ՛[[՛[[5` ^ ^ 2` `2 ^ ^ ` 1%#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn) 6<ׂf{z}))Ns3(@ +4&#!"3!2#!"&5463!2#!"&5463!2@&&&f&&&&@&&&&4&&4&@&&&&&&&& `BH+"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F Z4&w4) '' 5r&4&&4&&4}G#&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*&@P9A #sGq] #lh<* 46+(  < 5R5"*>%"/ +[>hy  K !/Ui%6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt -okQ//jo_  %&JՂYJA-.-- 9\DtT+X?*<UW3' 26$>>W0 {"F!"E    ^f`$"_]\<`F`FDh>CwlsJ@ ;=?s  :i_^{8+?` ) O`s2RDE58/Kr #"'>7&4$&5mī"#̵$5$"^^W=acE*czk./"&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtPt=  &ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1 +!"&=!!%!5463!2sQ9Qs***sQNQsBUw wUBFHCCTww%1#"&=!"&=463!54632.  6 $$     ` ?(r^aa    (_^aa%1#!#"'&47632!2.  6 $$   @  ` (r^aa  ?  @  (_^aa/#"'&476324&#!"3!26#!"&5463!2&@& @   w@www& @B@ &  @ @www"&462  >& $$ Ԗ*(r^aaԖԖ (^aa]6#"$54732>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ *>6߅r#! 3?^BEa߀#9#36'&632#"'&'&63232#!"&5463!2 Q,&U #+' ;il4L 92<D`w@www`9ܩ6ɽ ]`C477&@wwwD+"&5#"'&=4?5#"'&=4?546;2%6%66546;2  wwwwcB G]B Gty]ty #3C#!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w'/?P+5#"&547.467&546;532!764'!"+32#323!&ln@ :MM: @nY*Yz--zY*55QDDU9pY-`]]`.X /2I$ t@@/!!/@@3,$,3$p$00&*0&& !P@RV2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T7%>ww@ww!"5bBBb// * 8(@(87)(8=%/' #?w@www#~$EE y &L(88e):8(%O r    O?GQaq47&67>&&'&67>&"$32#"#"'654  $&6 $6&$ CoL.*K  Px.* iSƓ i 7J ?~pi{_Я;lLUZ=刈刈_t'<Z :!   @! j`Q7  $ky, Rfk*4LlL=Z=刈&$&546$7%7&'5>]5%w&P?zrSF!| &0 ##!"&5#5!3!3!3!32!546;2!5463) );));;))&&&@@&&&  6 $&727"'%+"'&7&54767%&4762֬>4P t+8?::  ::A W` `EvEEvE<."e$IE&O &EI&{h.`m"&#"&'327>73271[ >+)@ (]:2,C?*%Zx/658:@#N C= E(oE=W'c:#!#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%"N^ '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL#Qa"'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!2 55 **.>.-@-R.>.-@-<+*q6- -- 0OpoOxzRrqP6z~{{Prr^aa]054&"#"&5!2654632!#"&57265&'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![,7*  2(-#=  /~[(D?G  |,)"# +)O8,+'6 y{=@0mI#938OAE` -  )y_/FwaH8j7=7?%a % %!?)L J 9=5]~pj  %(1$",I  $@((  +!.S -L__$'-9L 5V+ 6 T+6.8- $ 0 + t |S 16]&#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@ "kb2)W+ ,5/1   #   Z -!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1  ! / ,   /--ST(::(ep4AM@=I>".)xΤlsY|qK@ %(YQ&N EHv~<Zx'#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A %%%h% %hJ%D,FZxULs TgxUJrVD %hJ%@/LefL.C %Jh%CV sNUxϠ@.FZyUHpVA %h&%% %Ji%CWpIUybJ/Uy^G,D %Jh%@U sMt UC %hJ%C-KfyEX[_gj&/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf' % :/d B 4@ }  &!0$?Jfdf-.=6(:!TO? !IG_U% . k*.=; 5gN_X "  ##  292Q41   *6nA;| BS N.  %1$ 6 $nk^ '7GWgw2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`( `(8^BB^^B@B^"vEj^B(8(`(8(/?O_o/?2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`' "&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広3CQ#".54>32#".546322#"&#"#"54>%".54>32%2#"&54> &X=L|<&X=M{2r_-$$-_rUU%&&5%ő'- "'.546762@FF$@B@$.&,&.]]|q#<<#(BB B%'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px p=`$>>$&@&@ @&p@ &.A!!"!&2673!"5432!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:%,AGK2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa| DH> I1q Fj?w@wwwsq*4p9O*¸Z^qh LE "(nz8B M'?"&4624&#"'.'324&#"3267##"&/632632.ʏhhMALR vGhг~~K „yO^   ʏʏВ*LM@!שwwȍde)qrOPqȦs:03=7'.?67'67%'>&%'7%7./6D\$>  "N,?a0#O 1G9'/P(1#00  ($=!F "9|]"RE<6 'o9%8J$\ :\HiTe<?}V#oj? d,6%N#" HlSVY]C =@C4&"2!.#!"4&"2+"&=!"&=#"&546;>3!232^^^Y ^^^`pppp`]ibbi]~^^^e^^^PppPPppP]^^]3;EM2+"&=!"&=#"&546;>;5463!232264&"!.#!"264&" ]`pppp`]ibbi^^^dY !^^^]@PppP@@PppP@]^^] ^^^e^^^ 3$#!#!"&5467!"&47#"&47#"&4762++&2 $$ 2&&&4&&Z4&&##&&4&4&44&m4&m+DP4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠) -g+^aaF s" +g (* 3#!| #/IK/%*%D= )[^aa !!!'!!77!,/,-a/G t%/;<HTbcq%7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632 #"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632632  *     X    ^  `    ^  b  c   fu U`59u  4J   l~ ~ F 2    m | O,           ru| u  " )9 $7 $&= $7 $&= $7 $&=  $&=46w`ww`ww`wb`VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv#^ct#!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x c`(8!3;:A0?ݫY   ^U 47D$    74U3I  |L38wtL0`((88(@(8(D 9 8(Q1&(!;  (g- Up~R2(/{E(Xz*Z%(i6CmVo8 #T#!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x c`(8iFFZcrcZ`((88(@(8(D 9 8(kk" kkJ  ! k#S#!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x c`(8-Kg kL#DCJg  jLD`((88(@(8(D 9 8(jj jjkk kk#8C#!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x c`(8 G]L*COJ?0R\wx48>`((88(@(8(D 9 8(jjRQxk !RY#*2#!"&5463!2!&'&!"&5!!57"&462(8((88((`x c`(8Pppp`((88(@(8(D 9 8(ppp  #*7JR5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"<(8((88((`x c`(8kޑcO"jKKjK`((88(@(8(D 9 8(SmmS?M&4&&4#9L^#!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x c`(8 6ddWW6&44`((88(@(8(D 9 8(. G5{{5]]$5995#3C#!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x c`(84LL44LL4l  `((88(@(8(D 9 8(L44LL44L  Z #7K[#!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x c`(8` 3  3  3  3 v  ?  `((88(@(8(D 9 8( & & - & &  ?   '6#'. '!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H( ' gQWZc[ -%7' %'-'% %"'&54762[3[MN 3",""3,3"ong$߆]gn$+) ")")" x#W#"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\ u_MK'̨|g? CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*'/7  $&6$ 6277&47' 7'"' 6& 6'lLRRZB|RR>dZZLlLZRR«Z&>«|R ! $&54$7 >54'5PffP牉@s-ff`-c6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92Z2&`9UW=N9:PO;:dhe\=R +)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X  #'#3#!"&5463!2) p*xeשw@www0,\8@www9I#"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4 &) @]v q#CO!~󿵂72765'./"#"&'&5 }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6.> !-I[4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R HMŰ9ou7ǖD䣣 R23('3_,--,R23('3_,--,NJ ?uWm%#"'%#"'.5 %&'&7632! ; `u%"(!]#c)(  #"'%#"'.5%&'&76 !  (%##fP_"(!)'+ʼn4I#"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2z䜬m IwhQQhbF*@&('k@z   _hQнQGB'(&*eozΘ@@`  >. $$ ffff^aafff^aa>"&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:! %]& %@2(/.+*)6! <.$..**"+8#  #Q3,,++#-:#"$$ /:yuxv)%$ /?CG%!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&&&& &&&&&&&&@&&&&&&&&&&&&%2 &547%#"&632%&546 #"'6\~~\h ~\h\ V V VV%5$4&#"'64'73264&"&#"3272#!"&5463!2}XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www/>LXds.327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,  *"T.D@Yooo@5D [  Z  Z  [ ``[ Z  2 ,l0 (T" .D5@oooY@D, Z  [  [  Z ``EZ  [ 5%!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYC L||L Y˄(E''E*( /?IYiy%+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P > P3&&rrr&&rrr he 4LKM:%%:MKL4WT&&%/9##!"&563!!#!"&5"&5!2!5463!2!5463!2&&&&&&  &&&i@&&@&7'#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%  :g"&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[ gq# /3qFr2/ $rg%4 HffHJ4d#!#7!!7!#5!VFNrmNNN N!Y+?Ne%&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76 '6# <;11x# *# G,T93%/#0vNZ;:8)M:( &C.J}2 %0  ^*  JF &7'X"2LDM" +6 M2+'BQfXV#+] #' L/(eB9  #,8!!!5!!5!5!5!5#26%!!26#!"&5!5&4& &pPPp@@&&@!&@PppP@*  9Q$"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK NN Ud: xx 8    ,, |2222 MXXM ic,>>,   ̺  '/7?KSck{4&"2$4&"24&"24&"24&"24&"24&"24&"24&"264&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj&&&&KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK&&&&jKKjK4LL44LL 'E!#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7' #$ &gpf5 O.PqZZdS -V"0kqzTxD!!8p8%'i_F?;kR(` !&)' (2!&6367! &63!2! `B 1LO(+#=)heCQg#s`f4#6q'X|0 -g >IY#6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24  : @7vH%hEP{0&<'VFJo1,1.F6A#L44LL44L"% 7x'6 O\JYFw~v^fH$ ! "xdjD"!6`J4LL44LL +3@GXcgqz -<JX{&#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/ !/  !! 00/e&'!"e$   '!!''   8''NgL44LL44LUQghQUk=("  ! =))=2( '! 'L#(>( & DC(>(zL#DzG)<)4LL44LL  BWbjq}+532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32 !264&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA !M77MM77M3! 4erJ]&3YM(, ,%7(#)  ,(@=)M%A20C&Mee(X0&ĖjjjV 8Z8J9N/4$ 8NN88NN  #&:O[ $?b3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM ') ~PSPRm٘M77Mo7q @)U 8"E(1++NM77Mx378D62W74;9<-A"EA0:A F@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?* $\amcrVlOO176Nn23266&+"&#"3267;24&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,,  _3$$2%%M>AL Vb5)LDHeE:< EM j,K'-R M ~M>AR  Vb5)LEHeE:< E J ABI*'! ($rL44LL44Lv%1 %3!x*k $2 %3!;5h n a !(lI;F   rp p8;5h t a !(lI;F ` #k 4LL44LL  2HW[lt#"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#7532764&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * / 8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L44LL44LyE%# Vb;A !p &'F:Aq)%)#orgT$ v2 8)2z948/{ 8AB..B/q?@r<7(g/4LL44LL ?#!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ;U g3 T 2RX='8P8|5 4Ljj U;Ig@   `  "*\(88(]k  &N4#"&54"3 .#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT T 2RX='8P8|5  U;IgXu?bl3@4Ljja`   `  "*\(88(]k/7[%4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@0 o`^BB^`5FN(@(NF5@@@u  @LSyuS@%44%,<H#"5432+"=4&#"326=46;2  >. $$ ~Isy9"SgR8vHD w ffff^aam2N+ )H-mF+10*F +fff^aab4&#"32>"#"'&'#"&54632?>;23>5!"3276#"$&6$3 k^?zb=ka`U4J{K_/4^W&  vx :XB0܂ff ) fzzXlz=lapzob35!2BX G@8  ' '=vN$\ff  1 SZz8zX#("/+'547'&4?6276 'D^h  i%5@%[i  h]@]h  i%@5%[i  h^@@)2#"&5476#".5327>OFi-ay~\~;'S{s:D8>)AJfh]F?X{[TC6LlG]v2'"%B];$-o%!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52-P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@@PpH85K"&ZH85K"&ZH85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :& !!3 ! @@@  #"$$3!!2"jaѻxlalxaaj!!3/"/'62'&63!2'y  `I  yMy `I y'W`#".'.#"32767!"&54>3232654.'&546#&'5&#" 4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8 oNU0 J1F@#) [%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn* -c1BWg4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$( 1$6]' !E3P|ad(2S;aF9'EOSej]m] <*rYshpt.#)$78L*khw@wwwB % $/$G6 sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www34."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhfffнQQнQQнQZZQffff#>3!2#!".2>4."fffнQQнQQffffQнQQн ,\!"&?&#"326'3&'!&#"#"'  5467'+#"327#"&463!!'#"&463!2632(#AHs9q ci<= #]$ KjKKjKKjKKjH#j#H&&&KjKKjKg V i jKKjKKjKKjK ..n(([5KK55KK5[poNv<+#"'#"&546;&546$32322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃ 2$#2UU1݃2 ,u54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%" *#͟ O%GR=O&^opC8pP*bY _#$N Pb@6)?+0L15 "4$.Es  5IQ"!@ h "Y7e|J>ziPeneHbIlF>^]@n*9 6[_3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>! =39? 6'_ >29? 5'17m-VU--,bW.뮠@Fyu0HC$뮠@Fyu0HC$L= ?? <=! A <`;+"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@Ipp>Sc+"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0` !!!! #!"&5463!2ړ7H7jv@vvv':@vvvMUahmrx#"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%# %'3/&=&' 5#?&547 6!p4q"""6" 'h*[ |*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M "! O dX$k !! ! b [TDOi @6bxBAݽ5  ɝ:J +3,p x1Fi (R 463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C} )&54$32&'%&&'67"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn+;"'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk[/?\%4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i qfN-*#Sjt2"'qCB8!'> !%)-159=AEIMQUY]agkosw{! %! 5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#"Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'32#".543232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU 7#"&463!2!2&&4&&&&4&KjKKjKjKKj &&&%&& &&4&&&&4&&&5jKKjKKjKKjK%z 0&4&&3D7&4& %&'S4&"4&"'&"27"&462"&462!2#!"&54>7#"&463!2!2&4&4&4&4KjKKjKjKKj &&&%&& &&4&%&&ے&4"jKKjKKjKKjK%z 0&4&&3D7&4& %& & !'! !%!!!!%"'.763!2o]FooZY@:@!!gf//I62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@4SS4ZSS6SS4SS4SS4SS4SS4S@ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:= :+: =RRZSSSSSSSSSSSSSCv!/&'&#""'&#" 32>;232>7>76#!"&54>7'3&547&547>763226323@``` VFaaFV      $. .$     yy .Q5ZE$ ,l*%>>%*>*98(QO!L\p'.'&67'#!##"327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"' Dg OOG`n%ELL{@&&Nc,sU&&!Fre&&ss#/,<= #]gL oGkP'r-n&4&2-ir&&?o  4 _5OW! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@&&@&K55K`?e==e?1O6# ,  #$  , #6OO&&&&5KK?!"'&'!2673267!'. ."!&54632>321 4q#F""8'go#- #,"tYg>oP$$Po> Zep#)R0+I@$$@I++332++"&=#"&=46;.7>76$  @ ᅪ*r@@r'/2+"&5".4>32!"&=463  &@~[՛[[u˜~gr&`u՛[[՛[~~@r=E32++"&=#"&=46;5&547&'&6;22676;2  >``@``ٱ?E,,=?rH@``@GݧH`jjrBJ463!2+"&=32++"&=#"&=46;5.7676%#"&5   &@~``@``  vXr&@``@+BF`rks463!2+"&=32++"&=#"&=46;5&547'/.?'+"&5463!2+7>6 %#"&5   &@~``@``~4e  0  io@& jV  0  Z9r&@``@Gɞ5o , sp &@k^ , c8~~`r8>KR_32++"&=!+"&=#"&=46;.767666'27&547&#"&'2#" @@ 'Ϋ'sggsww@sgg@@-ssʃl99OOr99FP^l463!2+"&=$'.7>76%#"&=463!2+"&=%#"&54'>%&547.#"254&' &@L?CuГP vY &@;"ޥ5݇ޥ5`&_ڿgwBF@&J_ s&&?%x%xJP\h463!2+"&='32++"&=#"&=46;5.7676632%#"&56'327&7&#"2#" &@L? ߺu``@``} ຒɞueeu9uee&_"|N@``@""|a~lo99r9@9;C2+"&5"/".4>327'&4?627!"&=463  &@Ռ .  N~[՛[[u˜N .  gr&`֌  . Ou՛[[՛[~N  . @r9A'.'&675#"&=46;5"/&4?62"/32+  '֪ \  . 4 .  \r|ݧ憛@\ .    . \@r~9A"/&4?!+"&=##"$7>763546;2!'&4?62  m  - @ݧ憛@& -  @rm4 -  ٮ*   - r+"&5&54>2  @[՛[rdGu՛[[r  ".4>2r[՛[[՛r5՛[[՛[[$2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88 2#V#2L4>32#"&''&5467&5463232>54&#"#"'.Kg&RvgD $ *2% +Z hP=DXZ@7^?1 ۰3O+lh4`M@8'+c+RI2 \ZAhSQ>B>?S2Vhui/,R0+ ZRkmz+>Q2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_ pdddxO"2xxê_lx2X  !+'5>-pkW[C I I@50Oddd˥Mhfxx^ә #'+/7!5!!5!4&"2!5!4&"24&"2!!! 8P88P 8P88P88P88PP88P8 P88P88P88P8 +N &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`     `  L4Dgy 6Fe=OOU4L>   ` `  4L2y5eud_C(====`L43V &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>     %%Sy 6Fe=J%>     %65%Sy5eud_C(zz.!6%$!2!!!46;24&"2!54&#!"&&&@ԖV@&&@&&ԖԖ@&3!!! !5!'!53!! #7IeeI7CzCl@@@#2#!"&?.54$3264&"!@մppp((ppp#+/2#!"&?.54$3264&"!264&"!@մ^^^@^^^@((^^^^^^v(#"'%.54632 "'% 632U/@k0G,zD# [k# /tg F Gz  #'#3!) p*xe0,\8T #/DM%2<GQ^lw &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7&"2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9 W"-J0(/r V"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V  # 5X N"& . ) D>q J:102(z/=f*4!> S5b!%  (!$p8~5..:5I  ~T 4~9p# ! ) & ?()5F 1   d%{v*: @e s|D1d {:*dAA|oYk'&<tuut&v HCXXTR;w 71™ Z*&' 1  9? . $Gv 5k65P.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F& OܽsDD!/+``aa``a154&'"&#!!26#!"&5463!2    iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L44LL44L44%2"4:I;p!q4bb3p (P`t`P(6EC.7BI64LL44LL  .>$4&'6#".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL44LL44L')꽽)J)]wL`ֺ۪e4LL44LL;4&#!"3!26#!"&5463!2#54&#!";#"&5463!2  @ ^BB^^B@B^  B^^B@B^`@  MB^^B@B^^>  ^B@B^^5=Um ! !!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762?(``(?b|b?B//B/]]FrdhLhdrF]]FrdhLhdrF@@@(?@@ ?(@9GG9@/B//BaItB!!BtI Ѷ!!ь ItB!!BtI Ѷ!!ь-M32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsFFsMMsFFsMojjo@@jj@@<!(!!(!-3?32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ`  DqLLqDojjo@@jj@@B>=C-3;32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ`UVU96gg6ojjo@@jj@@β**ɍ-G32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsFFsMkkojjo@@jj@@<!(!33!(!9I2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7Aj"#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>3265K @0.B @0.B#6'&& l @0.B 2' .B A2TA9B;h" d mpPTlLc _4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E`1X"#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE& ԖPjjdXUGJ7!.B P2.B %2@ 7K5(B@KjKj?+fU E,5K~!1.>F.F,Q5*H$b2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Mye t|]WSSgSY\x{ 70"1i92DU1&=  =&0@c >&/Btd4!*"8K4+"@H@/'= t?_K93-] UlgQQgsW ]#+ i>p&30&VZ&0B/ %3B. "to ){+C4I (  /D0&p0D3[_cg"'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k cJ/4qG^\hB2.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5KG#!+"&5!"&=463!2+"&' +"' +"'&5>;2>76;2Y    M .x - N     u  , u ?  LW   #  *:J4'&+326+"'#+"&5463!2  $6& $&6$ UbUI-uu,uuڎLlLAX!Jmf\$ 6uuu,KLlL-[k{276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&  $&6]h - %Lb`J%E 5 ,5R- h - %Lb`J%E 5 ,5R-'uu,uulL/hR    dMLc  NhR   dMLc  N1uuu,LlL@  ' 7 '7 ``H ``H !``H ```H` '%  7' 7'7 ' $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL $ %/9ES[#"&54632$"&4624&"26$4&#"2%#"&462$#"&4632#"32&! 24>  !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,> nP/R U P酛n >,m'77'&77N77N6^Orqqqqqqt棣棣(~|| on[usј^~33pc8{y%cq33dqpf L 54 "2654"'&'"/&477&'.67>326?>< x ,  (-'sI  VCV  Hr'-(  $0@!BHp9[%&!@0$u  ]\\]-$)!IHV D V HI!)$-#36>N"&462."&/.2?2?64/67>&  #!"&5463!2]]]3 $; &|v;$ (CS31 =rM= 4TC(G zw@www]]]($-;,540= sL =45,; @www(2#"$&546327654&#" &#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|! gL&5&'.#4&5!67&'&'5676&'6452>3.'5A5RV[t,G'Q4}-&r! G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K r#"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^ u_x^h ;J݃HJǭ qE Dm! M G?̯' %o8 9U(F(ߎLlL&!&!SEm|[n{[<ɪ "p C Di% (K HCέ  pC B m8 @Kނ  HF(LlL "*6%&6$ 7&$5%%6'$2"&4}x3nQH:dΏX e8z' li=! 7So?vM '&7>>7'7>''>76.'6'El:Fg r *t6K3U Z83P)3^I%=9 )<}Jk+C-Wd &U-TE+]Qr-< Q#0 C+M8 3':$ _Q =+If5[ˮ&&SGZoMkܬc#7&#"327#"'&$&546$;#"'654'632ե›fKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}+5?F!3267!#"'#"4767%!2$324&#"6327.'!.#"۔c28Ψ-\?@hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ34&#!"3!26#!!2#!"&=463!5!"&5463!2  @ ^B `` B^^B@B^   @ @B^@@^BB^^>3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="# U<-M93#D@U8vk_Y [hD00DD00Dce-JF1 BDN&)@ /1 dy%F#"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>* 432fba  $B? >B BB AA.-QPPR+ 42 %<ciђ:6& hHGhkG@n`IȌ5 !m(|.mzyPQ-.  je  q>@@?ppgVZE|fb6887a %RB? =B ABBAJvniQP\\PRh!cDS`gΒ 23geFGPHXcCI_ƍ5" n*T.\PQip [*81 / 9@:>t%6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676= >vwd" l "3 /!,+ j2.|%& (N &wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])  u1V(k1S) - 0 B2* %M ;W(0S[T]I) A 5%R7&&T,Xq&&1X,LΒw%%;#!"&5463!546;2!2!+"&52#!"/&4?63!5! (&&@&&(&&@&&( (  &&@&&@&&&&  #''%#"'&54676%6%% hh @` !   !    #52#"&5476!2#"&5476!2#"'&546        @  @  @    84&"2$4&"2$4&"2#"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4" %!KjKKjKKjKKjKKjKKjK.٫8  !%00C'Z'.W"&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A  0) LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee    Y'w(O'R@$#"&#"'>7676327676#" b,XHUmM.U_t,7A3ge z9@xSaQBLb( VU  !!!==w)AU!!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465! KkkK _5 5 #BH1`L I& v6S F!Sr99rS!`` /7K%s}H XV P V  e  Vd/9Q[ $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#";2 P 3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*  ))  +^X^|WX=>X:_.2//a:Ru?  Q%-W|XW>J( =u>XX|WX`  *((*  +2 2X>=XW|E03>$32!>7 '&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O  5!#!"&!5!!52!5463 ^B@B^`B^^B `B^^"^BB^0;%'#".54>327&$#"32$ !"$&6$3 ##320JUnLnʡ~~&q@tKL}'` - -oxnǑUyl}~~FڎLlLt`(88(   7!' !\W\ d;tZ`_O; }54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2````pp```  !,! -&M<FI(2 ```@PppPpppppp# #   ppppp j#"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546 %. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z & :k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k: !+32&#!332 $&6$ ~O88OLlL>pN  iLlL '':Ma4&'#"'.7654.#""'&#"3!267#!"&54676$32#"'.76'&>$#"'.7654'&676mD5)  z{6lP,@KijjOoɎȕ>>[ta) GG 4?a) ll >;_-/ 9GH{zyN@,KԕoN繁y! ?hh>$ D" >â? $ n"&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6# -SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc* &D~WL}]I0"  YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-" 7Zr^Na94Rji3.I+ &6W6>N%&60;96@7F6I3+4&#!"3!26%4&#!"3!26 $$ ^aa`@@^aa '7  $ >. %"&546;2#!"&546;2#/a^(^aa(N@@4&#!"3!26 $$ @@^aa`@^aa '  $ >. 7"&5463!2#/a^(n@^aa(N@ %=%#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$KjKKjK$&4&Ԗ&4&>9G!5KK55KK5!&&jj&&#/;Im2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH..Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze] E-&&-EKjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8!O##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7 8Q NQ N 8G@ 8GQ NQ N7   8 8  H H  k%  ".>2I20]@]@oo@@oo㔕a22]]p^|11|99|11|(%7'7' ' 7T dltl)qnluul)1$4&"24&"2 &6 +"&5476;2 &6 LhLLhLLhLLhL>  &   &`>hLLhLLhLLhL>&&>G  .7)1!62 1!62he220e22> v +4 [d+ d 135#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa  (+.>#5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'    jjV>(>VV>>Vq  ( ^(>VV>>VV=&'&'&'&76'&'&.' #.h8"$Y ''>eX5, ,PtsK25MRLqS;:.K'5R ChhRt(+e^TTu B"$:2~<2HpwTT V/7GWg. %&32?673327>/.'676$4&"2 $&6$   $6& $&6$ d -- m  ,6*6,  mKjKKjoooKzz8zzȎLlLU4>>4-. YG0 )xx) 0GYޞ .jKKjKqoooolzzz80LlLD/7H#"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$ +s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm>NZ+"&=46;2+"&=4>7>54&#"#"/.7632  >. $$ p=+& 35,W48'3  l zffff^aaP2P: D#;$# $*;? R Cfff^aa'Y >O`"&5462&'.'.76.5632.'#&'.'&6?65\\[( | r [A@[[@A#2#  7* <Y$  +}"(  q87] F  _1 )    #1Ke34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7  , L; =+3&98&+)>>+3&98&+)>=+3&88&+)> Wj|r >Q$~d $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgYJ\m4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$ $^"  %%  "^$ $W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm ^x -  - x^ = /U7C kkz'[$ =&5%54'4&KK4r7>54 "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4SZ&4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$  !D4%  ,\44&&4&4&&4&-Z4&&4&;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0 u40 )4#g&'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$ "0%>s$ "0%>;;>%5KVL#>H30 \($$(\( єyO2F/{(?0(TK.5sg$ єy#-F/{$70(TK.5sg$L#>H30 \($$(\#(@5"'K58!'"58!'"55"'K#dS$K K$Sdx#@1 w d>N;ET0((? - 2K|1 wd#N;ET0$(? - 2K$#dS$K K$SdxDN\2654& 265462"2654 #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4[ " @ GB[ "&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛ "  " Gi[ Xh#"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b )   :4FDN  [1,^JK-*E#9gWRY vm0O w@wwwC22 c@X&!9{MA_"S4b// DR"XljPY < @www%e4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32 ''il$E/  @P@ ^`'W6&!.. ! -P5+ E{n46vLeVz:,SN/ M5M[  ]$[^5iC'2H&!(?]v`* l b$9> =R2 #"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676 &676&6766/&672? =1( H/ '96&@)9<')29% &06##$ J 0 7j)5@"*3%"!M %#K"%Ne 8)'8_(9./=*%8!Q #P"\Q#N&a)<9bR]mp%"'.'&54>76%&54763263 #"/7#"'#"&/%$%322654&#"%'OV9  nt  |\d ϓ[nt  |@D:) ;98'+| j," 41CH^nVz(~R 9\'  r  @L@  @w46HI(+C ,55, f[op@\j;(zV~i/5O#"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM $bKd ү[E";Kx%^6;%T,U:im=Mk).DT4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-54&#"#"'654'.#"#"&#"3263232>3232>76 $$ Cf'/'% ( $UL ( #'/'@ 3#@,G)+H+@#3 ^aaX@ _O#NW#O_ .* ##(^aaq[632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9 B6?K? %O4T% >6>Z64Y=6>%S4N$ ?L?4B @{:y/$ ,'R! F! 8% #)(()#%: !F Q'+%0z:zO_4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2Cf'.'% ( $VM  ) #'.'@ 3 #A,G)+H+A# 4 w@wwwXA  ?4N$NW&M&L  /* ## + @www O$>?>762'&#"./454327327>7> EpB5 3FAP/h\/NGSL  RP* m95F84f&3Ga4B|wB.\FI*/.?&,5~K % & Y."7n< "-I.M`{ARwJ!FX^dj''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$   *'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM $'&&NJBg=.%w؝\\w Ioo<<-NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@)6!!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC" !-9[nx"&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<) Tد{ՐRhx=8 78 n 81 pH_6Soc F@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB; W#;WS9 &(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@9 1P%14'!3#"&46327&#"326%35#5##33 $$  }Pcc]321IUΠ?LL?cc4MX &04;0XpD[[DpD,)&&Q 9V\26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P P  92#.}SP9::%L \B )spN/9oJ5  !+D`]BgY9+,9% Pk 4P P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@ J"@*4^`ED B o/8927 *@OLC!T!323X$BJ@@@&AS 0C 59" 'D/&&D4 88 $5A&%O#!"&547>7>2$7>/.".'&'&2>^B@B^ >FFzn_0P:P2\nzFF> R & p^1P:P1^ & R P2NMJMQ0Rr.B^^B 7:5]yPH!%%"FPy]5:7 = 4 QH!%%!Ht 4 =<"-/ ?1Pp+".'.'.?>;2>7$76&'&%.+"3!26#!"&54767>;2' +~'*OJ%%JN,&x' % ^M,EE,M7 ZE[P*FF*P:5  ^B@B^){$.MK%%KM.$+X)o3 "a 22!] 4  I>"">,&S8JB##B12 ` `B^^B8&ra#11#$R&  "&.2v%/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J" 0<=_gNU?DfuYGb7=^H^` =v~yT3GDPO 4Fѭqi_w\ހ!1uS%V_-d 1=U{J8n~r'U4.#".'"3!264&"26+#!"&5463!232+32+32 0P373/./373P0 T=@=T֙֙|`^B@B^^BB^`````*9deG-! !-Ged9IaallkOB^^BB^^B +Yi"&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO -Q52-)&)-2 ``  ``  `^B@B^^BB^`  @   |kkl"=IYL)CggC0[jM4      B^^BB^^B @  @ !1AQu4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2)P90,***,09P)J66S"@8@^B@@B^^BB^Ukc9 9ckU?@@88 @@N@B^````^BB^^!1AQu#!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2J66J)P90,***,09P)"@8@ @  `@@` ^B@B^^BB^ՀUUkc9 9c`@@88@@2  @ ````@B^^BB^^(%.'"&' $&  #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL$,  $&6654&$ 3 72&&  lLmzzBl>KlLGzzG>'7#!"&54>7&54>2  62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff#=#!"&4>3272"&462!3!26#!"&5463!;26=!2J66J)Q8PP8Q)  ^B@B^^B``B^VVVld9KK9d` @B^^BB^``^+;K[eu4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@@^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^+;K[eu#!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@  ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@` @B^^BB^^A#"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu +I\Gw\B!al݇yǙV/]:=B>9+32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632  ?c'p& ?b1w{2V ?#&#9&CY' &.&#+B : &65&*2w1GF1)2<)<'  ( BH=ӊ:NT :O )4:i   F~b` e!}U3i?fRUX|'&'&Ic&Q  *2U.L6* / L:90%>..>%b>+ +z7ymlw45)0 33J@0!! TFL P]=GS -kwm  !*(%6&692? $&6$  '   al@lLlL,& EC h$LlL /37;%"&546734&'4&" 67 54746 #5#5#5ppF::FDFNV^fnv~"/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4  R ,H8JfjQhjG^R,  !4&&4&Z4&&4&4&&4&4&&4&&4&&44&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&  R  ,[cGjhQRJ'A, &4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4%-5=EM}+"&=#!"'+"&=&="&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2"&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?AA? @ @R...R@`jlL.h) * * $ %35K.....uvnu....@@jN  * * .t2#K5..R..R. @Hq '&'&54 &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k] :Buq CA _kނXVobZZbnW|V 0  Q2- l}O  / :1z q%zG 4( 6Roa ą\< )4 J}%!!#!"&5463!2^B@B^^BB^`@B^^BB^^%#!"&=463!2^B@B^^BB^B^^BB^^ &))!32#!#!"&5463!463!2`B^^B^B@B^^B`^BB^^B@B^B^^BB^`B^^#3%764/764/&"'&"2?2#!"&5463!2    s^B@B^^BB^ג     @B^^BB^^#'7"/"/&4?'&4?62762!!%#!"&5463!2     ^B@B^^BB^    `@B^^BB^^ ! $&6$ .2r`LlLf4LlL#.C&>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$  ( 4Z# # & # # & y"6&.JM@& "(XE* $+8 jT?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1 /Dx] VFIq-HD2NK '>*%R= f 07=. f D]\|yu,0>Seu#2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2 <  zzj k-L+ )[$8=".un/2 ^B@B^^BB^5cy    (ݔI(8?C (3> #"($=@B^^BB^^0K S&'.'&'./674&$#">&>?>'76'# "&#./.'7676767>76$w .~kuBR] T%z+",|ޟj<)(!( ~ˣzF8"{%%#5)}''xJF0"H[$%EJ#% .Gk29(B13"?@ S)5" #9dmW";L65RA0@T.$}i`:f3A%% BM<$q:)BD aa%`]A &c| Ms!  Z 2}i[ F&** < ʣsc"J<&NsF% 0@Wm6&'.6$.7>7 $76".4>2., &>6'"'&7>=GV:e #:$?+% q4g &3hT`ZtQмQQмpAP1LK!:< }҈`dlb,9'  %%($! a3)W)x  оQQоQQcQǡ-җe)Us2XD\ϼYd /?O_o#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(80pp00pp00pp00pp00pp0     @(88((88     /Q/&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'% %6 27 2G f!)p&4&p)!f G2 72  *6 " 47 2G f!)p&4&p)!f G2 72 " 6* !k 3 j&3 %,*&&ր*9% 3&j 3 k!./!>>$,*!k 3.j&3 %Ԝ9*&&ր*ǜ,% 3&j 3 k!*,$>>!/.&6.'&$ &76$76$PutۥiPuGxy Զ[xy -_v١eNuv١e =uʦ[t78X &6# #'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL &ZXblw.'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&>'.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-   $  6)j2%+QF)b3FSP 21DK2AW ") ")$? ? 8A& AE5lZm= gG2Sw*&>$5jD GHyX/4F r 1  1""!l=6> 6 ,5./'e    .*|Ed! u & &%& &5d ))66 @ C& 8B @qL?P^7 G-hI[q:"T6 ,6 &/`  L wQ'   A ^   "  $& _  y  * <Copyright Dave Gandy 2016. All rights reserved.Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFontAwesomeRegularRegularFONTLAB:OTFEXPORTFONTLAB:OTFEXPORTFontAwesomeFontAwesomeVersion 4.7.0 2016Version 4.7.0 2016FontAwesomeFontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeFort AwesomeDave GandyDave Gandyhttp://fontawesome.iohttp://fontawesome.iohttp://fontawesome.io/license/http://fontawesome.io/license/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~glassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE=O<01hprewikka-5.2.0/prewikka/htdocs/fonts/fontawesome-webfont.svg0000644000000000000000000154373313726165107024265 0ustar rootroot00000000000000 Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 By ,,, Copyright Dave Gandy 2016. All rights reserved. prewikka-5.2.0/prewikka/htdocs/fonts/fontawesome-webfont.ttf0000644000000000000000000050325413726165107024254 0ustar rootroot00000000000000 PFFTMkGGDEFp OS/22z@X`cmap : gasphglyfMLhead-6hhea $hmtxEy loca\ maxp,8 name㗋ghpostkuːxY_< 3232  '@i33spyrs@  pU]yn2@ zZ@55 zZZ@,_@s@ @(@@@- MM- MM@@@ -`b $ 648""""""@ D@ ,,@  m)@@   ' D9>dY* '    T     @ f %RE    $!k(D'  % %  0%/&p@0 !"""`>N^n~.>N^n~>N^n~ !"""`!@P`p 0@P`p!@P`p\XSB1ݬ        ,,,,,,,,,,,,,tLT$l x T ( dl,4dpH$d,t( !"0# $,$&D'()T**,,-.@./`/00123d4445 556 6\67H78 8`89L9:h:;<>?h?@H@A0ABXBCdCDLDEFG0GHIJ8KLMdN,NNOP`PQ4QR RlS,ST`U0WXZ[@[\<\]^(^_`pb,bddePefg`giLijDk klm@n,oLpqrsxttuD{`||}}~Hl@lH T H`@$\XDTXDP,8d\Hx tXpdxt@ Œ\ ļŸƔ0dʨˀ͔xϰЌ,ш҈ ӌ8,՜`lHش`Tڸ۔@lބ߬lp 4X$l( ` d      ,,8(Xx|T@| !"x##l$$'h(*L,T.L1t1230345t6T7$8 9H::;<<?X@ABCDEHFHGpHHIxJ JKLMN@P@QRSDT ULV`VWXX4XZZ[d[\|]^`aHabcXdetfhghi\jxnp@svwxyz{h|}}\lt4t88LT|| 4xLX(  @lt$xLL HĠT(  ʈˠϔldPՄxpڬTT ވL <H$l4 Pl ,xp,xt d 44,hP 4   4<,,408$8T |!h"$L%0&H'()*0*+,.$.012@234t5$69 ::; ;<(<=4?@ACDFH`HILLLLLLLLLLLLLLLLp7!!!@pp p]!2#!"&463!&54>3!2+@&&&&@+$(($F#+&4&&4&x+#+".4>32".4>32467632DhgZghDDhg-iWDhgZghDDhg-iW&@ (8 2N++NdN+';2N++NdN+'3 8!  #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%=M%+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3%    @ :"7..7":6]^B@B^^BB^ $΄+0110+$ (   t1%%1+`B^^B@B^^"'.54632>324 #LoP$$Po>Z$_dC+I@$$@I+"#"'%#"&547&547%62V??V8<8y   b% I))9I  + % %#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[   2 b% I))9I %#!"&54>3 72 &6 }XX}.GuLlLuG.>mmUmEEm> /?O_o54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B^^B@B^^/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2L44LL44LL44LL44LL44LL44LL44LL44L4LL44LL4LL44LL4LL44LL4LL44LL /?O_o#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88/?O_#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88(@(88((88((88(@(88(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88y"/&4?62 62,PP&PP,jPn#$"' "/&47 &4?62 62 PP&P&&P&P&P&&P&P#+D++"&=#"&=46;546;232  #"'#"$&6$   @    @  rK56$܏ooo|W@    @   rjK&V|oooܳ0#!"&=463!2  #"'#"$&6$   @ rK56$܏ooo|W@  @ rjK&V|oooܳ)5 $&54762>54&'.7>"&5462zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL/?O%+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2`r@@r@@n4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632Ԗ #H  ,/ 1)  ~'H  (C  ,/ 1)  $H ԖԖm 6%2X  % l2 k r6 [21 ..9Q $ k2 k w3 [20/;Cg+"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@@`0 o`^BB^`5FN(@(NF5 @@@L%%Ju  @LSyuS@%44%f5#!!!"&5465 7#"' '&/&6762546;2&&??>  LL >  X   &&&AJ A J Wh##!"&5463!2!&'&!"&5!(8((88((`x c`(8`((88(@(8(D 9 8( ,#!"&=46;46;2.  6 $$ @(r^aa@@`(_^aa2NC5.+";26#!26'.#!"3!"547>3!";26/.#!2W  .@   @.$S   S$@   9I   I6>  >%=$4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2&4&&4&&4&&48(@(88(ч::(8@6@*&&*4&&4&&4&&4& (88(@(8888)@)'&&@$0"'&76;46;232  >& $$ `  (r^aa` @`2(^aa$0++"&5#"&54762  >& $$ ^ ?  @(r^aa` ? (^aa #!.'!!!%#!"&547>3!2<<<_@`&& 5@5 @  &&>=(""='#"'&5476.  6 $$   ! (r^aaJ %%(_^aa3#!"'&?&#"3267672#"$&6$3276&@*hQQhwI mʬzzk)'@&('QнQh_   z8zoe$G!"$'"&5463!23267676;2#!"&4?&#"+"&=!2762@hk4&&&GaF * &@&ɆF * Ak4&nf&&&4BHrd@&&4rd  Moe&/?O_o+"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2 @  @  @  @  @  @  @    @    @    @   ^B@B^^BB^`@  @ @  @ @  @ @  @ @  @ @  @ 3@  MB^^B@B^^!54&"#!"&546;54 32@Ԗ@8(@(88( p (8jj(88(@(88@7+"&5&5462#".#"#"&5476763232>32@@ @ @KjKך=}\I&:k~&26]S &H&  &H5KKut,4, & x:;*4*&K#+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G< _bb_ 4.54632&4&&M4&UF &""""& F&M&&M&%/B/%G-Ik"'!"&5463!62#"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632&4&&M4&UF &""""& FU &'8JSSJ8'&  &'.${{$.'& &M&&M&%/B/%7;&'66'&;4[&$ [2[ $&[  #/37#5#5!#5!!!!!!!#5!#5!5##!35!!! #'+/37;?3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3???? ^>>~??????~??~??^??^^? ^??4&"2#"'.5463!2KjKKjv%'45%5&5L45&% jKKjK@5%%%%54L5&6'k54&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&% jKKjK@5%%%%54L5&6'45%%%54'&55&6' yTdt#!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM ,*$/ !'& JP$G] x6,& `   h `   "9Hv@WkNC<.  &k& ( "$p" . #u&#  %!' pJvwEF#  @   @  2#"' #"'.546763!''!0#GG$/!''! 8""8  X! 8" "8  <)!!#"&=!4&"27+#!"&=#"&546;463!232(8&4&&4 8(@(8 qO@8((`(@Oq8(&4&&4&@` (88( Oq (8(`(q!)2"&42#!"&546;7>3!2  Ijjjj3e55e3gr`Ijjjj1GG1rP2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03& K5!)V?@L' >R>e;&L::%P>vO 'h N_":- &+# : ' +a%3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$ $5.3bZF|\8!-T>5Fu\,,jn OrB,7676'5.'732>7"#"&#&#"OA zj=N!}:0e%  y + tD3~U#B4 # g  '2 %/!: T bRU,7}%2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6 ,,$$% *'  c2N  ($"LA23Yl !x!*%%%% pP,T NE Q7^oH!+( 3  *Ueeu  wga32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* <7@@7<  <7@@7<  pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh',686,'$##$',686,'$##$/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?O_o%+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2        @     @   @   @   s  s    s    s  s  /?O#"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2     @     @   @  @          s  s  s  /?O#"&54632 #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`      @     @   @  @     @   s  s  s  #"'#!"&5463!2632' mw@www '*wwww."&462!5 !"3!2654&#!"&5463!2pppp@  @ ^BB^^B@B^ppp@@  @    @B^^BB^^k%!7'34#"3276' !7632k[[v  6`%`$65&%[[k `5%&&'4&"2"&'&54 Ԗ!?H?!,,ԖԖmF!&&!Fm,%" $$ ^aa`@^aa-4'.'&"26% 547>7>2"KjKXQqYn 243nYqQ$!+!77!+!$5KK,ԑ ]""]ً 9>H7'3&7#!"&5463!2'&#!"3!26=4?6 !762xtt`  ^Qwww@?6 1B^^B@B^ @(` `\\\P`tt8`  ^Ͼww@w 1^BB^^B~ @` \ \P+Z#!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8 pB^^B@B^ 'sw- 9*##;Noj' #ww@w "^BB^^B  *  "g`81T`PSA:'*4/D#!"&5463!2#"'&#!"3!26=4?632"'&4?62 62www@?6 1 B^^B@B^ @ BRnBBn^ww@w 1 ^BB^^B @ BnnBC"&=!32"'&46;!"'&4762!#"&4762+!54624&&4&&44&&4&&44&&44&&4&&44&&6'&'+"&546;267: &&&& s @  Z&&&&Z +6'&''&'+"&546;267667: : &&&&  s @  :  Z&&&&Z  : z6'&''&47667S: : s @  : 4 : | &546h!!0a   $#!"&5463!2#!"&5463!2&&&&&&&&@&&&&&&&&#!"&5463!2&&&&@&&&&&54646&5- : s  :  :4:  +&5464646;2+"&5&5-  &&&& : s  :  : &&&& :  &54646;2+"&5- &&&& s  : &&&&  62#!"&!"&5463!24 @ &&&&-:&&&& "'&476244444Zf "/&47 &4?62S44444#/54&#!4&+"!"3!;265!26 $$ &&&&&&&&@^aa@&&&&&&&&+^aa54&#!"3!26 $$ &&&&@^aa@&&&&+^aa+74/7654/&#"'&#"32?32?6 $$ }ZZZZ^aaZZZZ^aa#4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa:F%54&+";264.#"32767632;265467>$ $$ oW  5!"40K(0?i+! ":^aaXRd D4!&.uC$=1/J=^aa.:%54&+4&#!";#"3!2654&+";26 $$ ```^aa^aa/_#"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%&&&l m&&m l&&l m&&m ,&%&&%&&%&&%&#/;"/"/&4?'&4?627626.  6 $$ I     ͒(r^aaɒ    (_^aa , "'&4?6262.  6 $$ Z4f44fz(r^aaZ&4ff4(_^aa "4'32>&#" $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz@5K #!#"'&547632!2A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K5K #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#5K@!#"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'5K"#"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K',"&5#"#"'.'547!34624&bqb>#  5&44& 6Uue7D#  "dž&/#!"&546262"/"/&47'&463!2 &@&&4L  r&4  r L&& 4&&&L rI@& r  L4&& s/"/"/&47'&463!2#!"&546262&4  r L&& &@&&4L  r@@& r  L4&& 4&&&L r##!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8#!"&=463!28(@(88((8 (88((88z5'%+"&5&/&67-.?>46;2%6.@g.L44L.g@. .@g. L44L .g@.g.n.4LL43.n.gg.n.34LL4͙.n.g -  $54&+";264'&+";26/a^    ^aa fm  @ J%55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MMN4&#"327>76$32#"'.#"#"&'.54>54&'&54>7>7>32&z&^&./+>+)>J> Wm7' '"''? &4&c&^|h_bml/J@L@#* #M6:D 35sҟw$ '% ' \t3#!"&=463!2'.54>54''  @ 1O``O1CZZ71O``O1BZZ7@  @ N]SHH[3`)TtbN]SHH[3^)Tt!1&' 547 $4&#"2654632 '&476 ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D# =CU%7.5474&#"2654632%#"'&547.'&476!27632#76$7&'7+NWb=嘧}(zVj\i1  z,X Y[6 $!%'FuJiys?_9ɍ?kyhun(}Vz YF  KA؉La  02-F"@Qsp@_!3%54&+";264'&+";26#!"&'&7>2    #%;"";%#`,@L 5 `   `  L`4LH` `   a 5 L@ #37;?Os!!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@ @ @  @  @  @  @ L44LL4^B@B^^B@B^4L  @@@@    @@   @@    M4LL44L`B^^B``B^^B`L7q.+"&=46;2#"&=".'673!54632#"&=!"+"&=46;2>767>3!546327>7&54>$32dFK1A  0) L.٫C58.H(Ye#3C $=463!22>=463!2#!"&5463!2#!"&5463!2H&&/7#"&463!2!2LhLLhLhLLh! &&&&& &4hLLhLLhLLhL%z< 0&4&& )17&4& &&#!"&5463!2!2\@\\@\\@\\\\ W*#!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\ @+32"'&46;#"&4762&&4&&44&&44&&4@"&=!"'&4762!54624&&44&&44&&4&& !!!3!!0@67&#".'&'#"'#"'32>54'6#!"&5463!28ADAE=\W{O[/5dI kDtpČe1?*w@www (M& B{Wta28r=Ku?RZ^GwT -@www$2+37#546375&#"#3!"&5463ww/Dz?swww@wS88 ww#'.>4&#"26546326"&462!5!&  !5!!=!!%#!"&5463!2B^8(Ԗ>@|K55KK55K^B(8ԖԖ€>v5KK55KKHG4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb '"+`N*(a;2̓c`." b PTY9ppP*)pppP*)b ".`(*Nͣ2ͣ`+"' b MRZB4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK "8w s%(  ")v  >  "8x s"+  ")v  <  3zLLz3 3>8L3)x3 3zLLz3 3>8L3)x3 ԖԖ4LL45KK54LL45KK #)0C wZ l/ Y N,& #)0C vZl. Y L0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq%O#"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2 $ |E~E<| $ 2$|ZV:(t}X(  &%(Hw쉉xH(%& (XZT\MKG<m$4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232&4&&4N2`@`%)7&,$)' %/0Ӄy#5 +1 &<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c>q4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2&4&&4+ 5#bW0/% ')$,&7)%`@``2Nh0##T3'"( 0;e$5KK5 tip<& 1&4&&4&#\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I@#"&547&547%6@?V8 b% I)94.""'." 67"'.54632>32+C`\hxeH>Hexh\`C+ED4 #LoP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+ (@%#!"&5463!2#!"3!:"&5!"&5463!462 ww@  B^^B  4&@&&&4 `  ww   ^B@B^ 24& && &%573#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www .4&"26#!+"'!"&5463"&463!2#2&S3 Ll&c4LL44LL4c@& &{LhLLhL'?#!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t  r &&`ww@w@^BB^^B@R&t r  4&&@"&5!"&5463!462 #!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw  @B^^B  @w4& && &3@w   ^BB^    I&5!%5!>732#!"&=4632654&'&'.=463!5463!2!2JJSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8 ',26'&'&76'6'&6&'&6'&4#"7&64 654'.'&'.63226767.547&7662>76#!"&5463!2  /[  . =XĚ4,+"  * +, 1JH'5G:: #L5+@=&#w@wwwP.1GE,ԧ4 4+ ; /5cFO:>JJ>:O9W5$@(b 4 @www'?$4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762&4&&4&&4&&48(@(88(c==c(8*&&*6&4&&4&&4&&4& (88(@(88HH88`(@&&('@1c4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632   N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ  ,-[% 061I()W,$-7,oIX()oζA;=N0 eTZ  (O#".'&'&'&'.54767>3232>32 e^\4?P bMO0# 382W# & 9C9 Lĉ" 82<*9FF(W283 #0OMb P?4\^e FF9*<28 "L 9C9 & #!"3!2654&#!"&5463!2`B^^B@B^^ީwww@w^BB^^B@B^ww@w#!72#"' #"'.546763YY !''!0#GG$/!''!&UUjZ 8""8  X! 8" "8 GW4.'.#"#".'.'.54>54.'.#"32676#!"&5463!2 1.- +$)  c8 )1)  05.D <90)$9w@wwwW  )1) 7c  )$+ -.1 9$)0< D.59@www,T1# '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}a u&,SXK &$f9s? _#"!#!#!54632V<%'ЭHH (ںT\dksz &54654'>54'6'&&"."&'./"?'&546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9' 0BA; + >HCU  #  $  2  AC: oM=a-6OUwW[q ( - q[WwUP6$C +) (  8&/ &eMa  & $      %+"&54&"32#!"&5463!54 &@&Ԗ`(88(@(88(r&&jj8((88(@(8#'+2#!"&5463"!54&#265!375!35!B^^BB^^B   `^B@B^^BB^  ` !="&462+"&'&'.=476;+"&'&$'.=476; pppp$!$qr % }#ߺppp!E$ rqܢ# % ֻ!)?"&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B @   2^B@B^\77\aB//B//B//B/@    ~B^^B@2^5BB52.42##%&'.67#"&=463! 25KK5L4_u:B&1/&.- zB^^B4LvyKjK4L[!^k'!A3;):2*547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\}I/#"/'&/'&?'&'&?'&76?'&7676767676` (5 )0 ) *) 0) 5(  (5 )0 )))) 0) 5( *) 0) 5(  )5 )0 )**) 0) 5)  )5 )0 )*5h$4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2&4&&4N2$YGB (HGEG HQ#5K4Li!<;5KK5 A# ("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K J7R>@#zD<5=q%3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2` #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"( #A  5K2*! Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>igR7J K5h4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326&4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K J7R>@#zD9eMZ4&&4&<#5K4LN2$YGB (HGEG HV;5KK5 A# ("/?&}vhi!<4<p4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*! Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J K55K;E@TƾH #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"( #A  5KK5;+54&#!764/&"2?64/!26 $$ & [6[[j6[&^aa@&4[[6[[6&+^aa+4/&"!"3!277$ $$ [6[ &&[6j[ ^aae6[j[6&&4[j[^aa+4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[ &&[^aa+4/&"4&+"'&"2? $$ [6&&4[j[6[j^aad6[&& [6[[j^aa   $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"      4   $!   #          .0"Y +  !       $     "  +       Α      ^aa                        P   ' -( # * $  "  !     * !   (         $      2 ~/$4&"2 #"/&547#"32>32&4&&4V%54'j&&'/덹:,{ &4&&4&V%%l$65&b'Cr! " k[G +;%!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2&&&&&&&&&&&&@&&&&&&&&&&&&{#"'&5&763!2{' **)*)'/!5!#!"&5!3!26=#!5!463!5463!2!2^B@B^&@&`^B`8(@(8`B^ B^^B&&B^(88(^G 76#!"'&? #!"&5476 #"'&5463!2 '&763!2#"'c)'&@**@&('c (&*cc*&' *@&('c'(&*cc*&('c'(&@*19AS[#"&532327#!"&54>322>32"&462 &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe= BPPB =eF6 ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖp!Ci4/&#"#".'32?64/&#"327.546326#"/&547'#"/&4?632632(* 8( !)(A(')* 8( !USxySSXXVzxTTUSxySSXXVzxT@(  (8 *(('( (8 SSUSx{VXXTTSSUSx{VXXT#!"5467&5432632t,Ԟ;F`j)6,>jK?s !%#!"&7#"&463!2+!'5#8EjjE8@&&&&@XYY&4&&4&qDS%q%N\jx2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&l NnbSVZ bRSD zz DSRb)+USbn \.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` ` &4&&4r$#@B10M5TNT{L5T II T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$: $/ @@Qq`@"%3<2#!"&5!"&5467>3!263! !!#!!46!#!(88(@(8(8(`((8D<++<8(`(8(`8(@(88( 8((`(8((<`(8(``(8||?%#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs] = OfjL?R@T?"& > f?rRX=Edudsq = _MjiL?T@R?E& f > =XRr?b!1E)!34&'.##!"&5#3463!24&+";26#!"&5463!2 08((88(@(8  8((88((`(1  `(88((88(@  `(88(@(8(`#!"&5463!2w@www`@www/%#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&&&&&@'7G$"&462"&462#!"&=463!2"&462#!"&=463!2#!"&=463!2ppppppp @   ppp @    @   Рpppppp  ppp    <L\l|#"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE @  k*Gj @   @   TP\BX-@8 C)5Xs J@$3T4+,:;39SG2S.7<  vcc)) %Ll}    5e2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo  T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ $&P{<8[;:XICC>.'5oe80#.0(  l0&%,"J&9%$<=DTIcs&/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260% <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$@@ /?O_o%54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2@@@@@@@@@^BB^^B@B^NB^^B@B^^#+3 '$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb@M$4&"2!#"4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh LhLLhL! 'ԖԖ@' !&  ?&&LhLLhL hLLhL jjjj &@6/" &&J#"'676732>54.#"7>76'&54632#"&7>54&#"&54$ ok; -j=yhwi[+PM 3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|aL2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U ,iXբW<"uW1AqSH1bdww'74'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www ]#/#"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC` cot*tq||.EXN#?? ,<!5##673#$".4>2"&5!#2!46#!"&5463!2rM* *M~~M**M~~M*jjj&&&&`P%挐|NN||NN|*jjjj@&&&&@ "'&463!2@4@&Z4@4&@ #!"&4762&&4Z4&&4@@ "'&4762&4@4&@&4&@ "&5462@@4&&44@&&@ 3!!%!!26#!"&5463!2`m` ^BB^^B@B^  `@B^^BB^^@ "'&463!2#!"&4762@4@&&&&44@4&Z4&&4@ "'&463!2@4@&4@4&@ #!"&4762&&4Z4&&4@:#!"&5;2>76%6+".'&$'.5463!2^B@B^,9j9Gv33vG9H9+bI\ A+=66=+A [">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^l+!+"&5462!4&#"!/!#>32]_gTRdgdQV?U I*Gg?!2IbbIJaaiwE3300 084#"$'&6?6332>4.#"#!"&54766$32z䜬m IwhQQhbF*@&('kz   _hQнQGB'(&*eoz(q!#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+~(  (h  &  \(  (  &  ~+54'k%5%l%%l$65+~  &  (  (\  &  h(  (~+%'!)19K4&"24&"26.676&$4&"24&"24&"2#!"'&46$ KjKKj KjKKje2.e<^P,bKjKKjKjKKj KjKKj##LlLKjKKjK jKKjK~-M7>7&54$ LhяW.{+9E=cQdFK1A  0) pJ2`[Q?l&٫C58.H(Y':d 6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK ~EVZ|$2 $ |: $ 2$|ZV:(t}hfR88T h̲X(  &%(Hw(%& (XZT\MKG{x|!#"'.7#"'&7>3!2%632u  j H{(e 9 1bU#!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!2328((88(``(88((88(``(88((88(`L4`(88(@(88(`4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48OY"&546226562#"'.#"#"'.'."#"'.'.#"#"&5476$32&"5462И&4&NdN!>! 1X:Dx+  +ww+  +xD:X1 -U !*,*&4&hh&&2NN2D &  ..J< $$ 767#"&'"&547&547&547.'&54>2l4  2cKEooED ) ) Dg-;</- ?.P^P.? -/<;-gYY  .2 L4H|O--O|HeO , , Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq4#!#"'&547632!2#"&=!"&=463!54632  @  `     ` ?`   @  @  !    54&+4&+"#"276#!"5467&5432632   `  _ v,Ԝ;G_j)``    _ ԟ7 ,>jL>54'&";;265326#!"5467&5432632    v,Ԝ;G_j) `   `7 ,>jL>X`$"&462#!"&54>72654&'547 7"2654'54622654'54&'46.' &6 &4&&4&yy %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% >4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~>M4&"27 $=.54632>32#"' 65#"&4632632 65.5462&4&&4G9& <#5KK5!!5KK5#< &ܤ9Gpp&4&&4&@>buោؐ&$KjKnjjKjK$&jjb>Ppp %!5!#"&5463!!35463!2+32@\\8(@(8\@@\\@\(88(\@ 34#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\@"4&+32!#!"&+#!"&5463!2pP@@Pjj@@\@\&0pj \\&-B+"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4&L44L &=d4LL4 d=&&`&&&&`&&&&4LL4  &#3CS#!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x c`(8@@@`((88(@(8(D 9 8(`@@@@@/?O_o-=%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @   `&&&& /?O_o%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ 8(@(8 @  @  @  @  @ &&&@8((8@&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @  (88(  @  ``   `` -&&& (88(&@<c$4&"2!#4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKjKjKKj&ԖԖ&&@&&KjKKjK jKKjK .&jjjj&4&@@&&#'1?I54&+54&+"#";;26=326!5!#"&5463!!35463!2+32 \\8(@(8\ \\@\(88(\: #32+53##'53535'575#5#5733#5;2+3@E&&`@@` `@@`&&E%@`@ @ @      @ 0 @!3!57#"&5'7!7!K5@   @5K@@@ #3%4&+"!4&+";265!;26#!"&5463!2&&&&&&&&w@www&&@&&&&@&&@www#354&#!4&+"!"3!;265!26#!"&5463!2&&&&&@&&@&w@www@&@&&&&&&@&:@www-M3)$"'&4762 "'&4762 s 2  .   2 w 2  .   2 w 2    2  ww  2    2  ww M3)"/&47 &4?62"/&47 &4?62S .  2 w 2   .  2 w 2  M . 2    2 .  . 2    2 .M3S)$"' "/&4762"' "/&47623 2  ww  2    2  ww  2    2 w 2   .v 2 w 2   .M3s)"'&4?62 62"'&4?62 623 .  . 2    2 .  . 2    2 .   2 w 2v .   2 w 2-Ms3 "'&4762s w 2  .   2 ww  2    2 MS3"/&47 &4?62S .  2 w 2  M . 2    2 .M 3S"' "/&47623 2  ww  2   m 2 w 2   .M-3s"'&4?62 623 .  . 2    2- .   2 w 2/4&#!"3!26#!#!"&54>5!"&5463!2  @ ^B && B^^B@B^ @  MB^%Q= &&& $$ (r^aa(^aa!C#!"&54>;2+";2#!"&54>;2+";2pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p!C+"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp@@ #+3;G$#"&5462"&462"&462#"&462"&462"&462"&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\  $$ ^aaQ^aa,#"&5465654.+"'&47623   #>bqb&44&ɢ5"  #D7euU6 &4&m 1X".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|x xXK--K|Mp<# )>dA{RXtfOT# RNftWQ,%4&#!"&=4&#!"3!26#!"&5463!2!28(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\ u'E4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\&8((88((8,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1. $4@"&'&676267>"&462"&462.  > $$ n%%/02 KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa$4@&'."'.7>2"&462"&462.  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y jKKjKKjKKjKffff@^aa +7#!"&463!2"&462"&462.  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa#+3C54&+54&+"#";;26=3264&"24&"2$#"'##"3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,, #/;GS_kw+"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2`````````````````````p`K55KK55Kp`````````````````````````5KK55KK@*V#"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK# ڗXF@Fp:f_ #WIpp&3z h[ 17q%q#::#5KKu't#!X: %#+=&>7p @ *2Fr56565'5&'. #"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ8 2.,#,fk*1x-!#@#KjK# ڗXF@Fp:f_ #WIpp&3z e`vo8t-  :5 [*#::#5KKu't#!X: %#+=&>7p  3$ "/&47 &4?62#!"&=463!2I.  2 w 2   -@). 2    2 . -@@-S$9%"'&4762  /.7> "/&47 &4?62i2  .   2 w E > u > .  2 w 2   2    2  ww !   h. 2    2 . ;#"'&476#"'&7'.'#"'&476' )'s "+5+@ա' )'F*4*Er4M:}}8 GO *4*~ (-/' #"'%#"&7&67%632B;>< V??V --C4 <B=cB5 !% %!b 7I))9I7 #"'.5!".67632y( #  ##@,( )8! !++"&=!"&5#"&=46;546;2!76232-SSS  SS``  K$4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*54&#"#"/.7!2<'G,')7N;2]=A+#H  0PRH6^;<T%-S#:/*@Z}   >h.%#!"&=46;#"&=463!232#!"&=463!2&&&@@&&&@&&&&&&&&&&&&f&&&&b#!"&=463!2#!"&'&63!2&&&&''%@% &&&&&&&&k%J%#/&'#!53#5!36?!#!'&54>54&#"'6763235 Ź}4NZN4;)3.i%Sin1KXL7觧*  #& *@jC?.>!&1' \%Awc8^;:+54&#"'6763235 Ź}4NZN4;)3.i%PlnEcdJ觧*  #& *-@jC?.>!&1' \%AwcBiC:D'P%! #!"&'&6763!2P &:&? &:&?5"K,)""K,)h#".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n  "h.=T#)#lQTv%.%P_ % %_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|'' 59%D-I)OY[R+P19-,##,-91P+R[YO)I-D%95%_P%.%v'3!2#!"&463!5&=462 =462 &546 &&&&&4&r&4&@&4&&4&G݀&&&&f s CK&=462 #"'32=462!2#!"&463!5&'"/&4762%4632e*&4&i76`al&4&&&&&}n  R   R zfOego&&5`3&&&4&&4& D R   R zv"!676"'.5463!2@@w^Cct~5  5~tcC&&@?JV|RIIR|V&&#G!!%4&+";26%4&+";26%#!"&546;546;2!546;232@@@@L44LL4^B@B^^B@B^4L  N4LL44L`B^^B``B^^B`LL4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632&4&&4  @ o&&}c ;pG=(  8Ai8^^.   &4&&4&` ` fs&& jo/;J!# 2 KAE*,B^^B! ` $ -4&"2#"/&7#"/&767%676$!28P88PQr @ U @ {`PTP88P8P`  @U @rQ!6'&+!!!!2Ѥ 8̙e;<*@8 !GGGQII %764' 64/&"2 $$ f3f4:4^aaf4334f:4:^aa %64'&" 2 $$ :4f3f4F^aa4f44f^aa 764'&"27 2 $$ f:4:f4334^aaf4:4f3^aa %64/&" &"2 $$ -f44f4^aa4f3f4:w^aa@7!!/#35%!'!%j/d jg2|855dc b @! !%!!7!FG)DH:&H dS)U4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f ]wq4qw] `dC&&:FԖF:&&Cd`4&&4& ]] `d[}&&"uFjjFu"&&y}[d#2#!"&546;4 +"&54&" (88(@(88( r&@&Ԗ8((88(@(8@&&jj'3"&462&    .  > $$ Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88((88((88((88((88/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((885E$4&"2%&'&;26%&.$'&;276#!"&5463!2KjKKj   f  \ w@wwwjKKjK"G   ܚ  f   @www   $64'&327/a^ ! ^aaJ@%% 65/ 64'&"2 "/64&"'&476227<ij6j6u%k%~8p8}%%%k%}8p8~%<@% %% !232"'&76;!"/&76  ($>( J &% $%64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www/#5#5'&76 764/&"%#!"&5463!248` # \P\w@www4`8  #@  `\P\`@www)4&#!"273276#!"&5463!2& *f4 'w@www`&')4f*@www%5 64'&"3276'7>332#!"&5463!2`'(wƒa8! ,j.( &w@www`4`*'?_`ze<  bw4/*@www-.  6 $$  (r^aaO(_^aa -"'&763!24&#!"3!26#!"&5463!2yB(( @   w@www]#@##   @ @www -#!"'&7624&#!"3!26#!"&5463!2y((@B@u @   w@www###@  @ @www -'&54764&#!"3!26#!"&5463!2@@####@w@wwwB((@@www`%#"'#"&=46;&7#"&=46;632/.#"!2#!!2#!32>?6#  !"'?_  BCbCaf\ + ~2   }0$  q 90r p r%D p u?#!"&=46;#"&=46;54632'.#"!2#!!546;2D a__ g *`-Uh1    ߫}   $^L  4b+"&=.'&?676032654.'.5467546;2'.#"ǟ B{PDg q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%_ ,-3  cVO2")#,)9;J) "!* #VD,'#/&>AX>++"''&=46;267!"&=463!&+"&=463!2+32Ԫ$   pU9ӑ @/*f o  VRfq f=SE!#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![       % )   "  Jg Uh BW&WX hU g 84&#!!2#!!2#!+"&=#"&=46;5#"&=46;463!2j@jo g|@~vv u n#467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ !mY Zga~bm] [o"U+, @h h@@X hh @83H\#5"'#"&+73273&#&+5275363534."#22>4.#2>ut 3NtRP*Ho2 Lo@!R(Ozh=,GID2F 8PuE>.'%&TeQ,jm{+>R{?jJrL6V @`7>wmR1q uWei/rr :Vr" $7V4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F +>R{8PuE>.'%&TeQ,jm{?jJrL6 @`rr :Vr3>wmR1q uWei@ \%4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2&%%&&&& &7.' :@$LBWM{#&$h1D!  .I/! Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r@ \#"&546324&#!"3!26%#!#"'.'.'&'.'.546767>;&%%&&&& &i7qN !/I.  !D1h$&#{MWBL$@: '.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L  +=\d%54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%! B? )#!CC $)  54f"@@ B+,A  A+&+A  ZK35N # J!1331CCC $)w@www2"33FYF~(-%"o4*)$(* (&;;&&9LA3  8334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www  +=[c}#"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY .06 62+YY-06 R[!.'CD''EH$VVX::Y X;:Y fyd/%jG&DC&&CD&O[52. [$C-D..D^^* ly1%=^I86i077S 3 $EWgO%33%OO%35 EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R 7>%3!+}{'+"&72'&76;2+"'66;2U &  ( P *'eJ."-dZ-n -'74'&+";27&+";276'56#!"&5463!2~} 7e  ۩w@www"  $Q #'!# @www I-22#!&$/.'.'.'=&7>?>369II ! ' $ !01$$%A' $ ! g  \7@)(7Y   \7@)(7Y @ '5557 ,VWQV.RW=?l%l`~0  !#!#%777 5! R!!XCCfff݀# `,{{{`Og4&"2 &6 $"&462$"&62>7>7>&46.'.'. '.'&7>76 Ԗ HR6L66LGHyU2L  L2UyHHyU2L  L2UyHn X6X  XX ԖԖH6L66L6 L2UyHHyU2L  L2UyHHyU2L n6X  XX  2#!"&54634&"2$4&"2ww@ww||||||w@www||||||| !3 37! $$ n6^55^h ^aaM1^aaP *Cg'.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7':Yi4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C ."!$28 h /" +p^&+3$ i0(w@www+.i6=Bn \C1XR:#"'jj 8Q.cAj57!? "0D$4" P[ & 2@wwwD"%.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45/%'#.5!5!#"37>#!"&5463!2p>,;$4 5eD+WcEw@wwwK()F ,VhV^9tjA0/@www@#"'&76;46;23   &  ++"&5#"&7632  ^  c  & @#!'&5476!2 &  ^  b '&=!"&=463!546  &    q&8#"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}} !"䒐""A$@C3^q|z=KK?6 lk)  %!%!VVuuu^-m5w}n~7M[264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67 \  U7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O $.( *.'  .x,  $CN      * 6   7%&&_f& ",VL,G$3@@$+ "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!e  R   "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?Ae  .(;1.D 4H&.Ct iY% *  7      J  <    W 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3  '.2>Vb%&#'32&'!>?>'&' &>"6&#">&'>26 $$ *b6~#= XP2{&%gx| .W)oOLOsEzG< CK}E $MFD<5+ z^aa$MWM 1>]|YY^D եA<KmE6<" @9I5*^aa>^4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV;267676&#!"&=463!267 #!"'&5463!26%8#! &&Z"M>2! ^I 7LRx_@>MN""`=&&*%I},  L7_jj9/%4&#!"3!264&#!"3!26#!"&5463!2  &&&&&&&&19#"'#++"&5#"&5475##"&54763!2"&4628(3- &B..B& -3(8IggI`(8+Ue&.BB.&+8(kk`%-"&5#"&5#"&5#"&5463!2"&4628P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ!%>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa,I4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛o ܴ   $ $ " $ $  ՛[[՛[[5` ^ ^ 2` `2 ^ ^ ` 1%#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn) 6<ׂf{z}))Ns3(@ +4&#!"3!2#!"&5463!2#!"&5463!2@&&&f&&&&@&&&&4&&4&@&&&&&&&& `BH+"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F Z4&w4) '' 5r&4&&4&&4}G#&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*&@P9A #sGq] #lh<* 46+(  < 5R5"*>%"/ +[>hy  K !/Ui%6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt -okQ//jo_  %&JՂYJA-.-- 9\DtT+X?*<UW3' 26$>>W0 {"F!"E    ^f`$"_]\<`F`FDh>CwlsJ@ ;=?s  :i_^{8+?` ) O`s2RDE58/Kr #"'>7&4$&5mī"#̵$5$"^^W=acE*czk./"&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtPt=  &ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1 +!"&=!!%!5463!2sQ9Qs***sQNQsBUw wUBFHCCTww%1#"&=!"&=463!54632.  6 $$     ` ?(r^aa    (_^aa%1#!#"'&47632!2.  6 $$   @  ` (r^aa  ?  @  (_^aa/#"'&476324&#!"3!26#!"&5463!2&@& @   w@www& @B@ &  @ @www"&462  >& $$ Ԗ*(r^aaԖԖ (^aa]6#"$54732>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ *>6߅r#! 3?^BEa߀#9#36'&632#"'&'&63232#!"&5463!2 Q,&U #+' ;il4L 92<D`w@www`9ܩ6ɽ ]`C477&@wwwD+"&5#"'&=4?5#"'&=4?546;2%6%66546;2  wwwwcB G]B Gty]ty #3C#!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w'/?P+5#"&547.467&546;532!764'!"+32#323!&ln@ :MM: @nY*Yz--zY*55QDDU9pY-`]]`.X /2I$ t@@/!!/@@3,$,3$p$00&*0&& !P@RV2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T7%>ww@ww!"5bBBb// * 8(@(87)(8=%/' #?w@www#~$EE y &L(88e):8(%O r    O?GQaq47&67>&&'&67>&"$32#"#"'654  $&6 $6&$ CoL.*K  Px.* iSƓ i 7J ?~pi{_Я;lLUZ=刈刈_t'<Z :!   @! j`Q7  $ky, Rfk*4LlL=Z=刈&$&546$7%7&'5>]5%w&P?zrSF!| &0 ##!"&5#5!3!3!3!32!546;2!5463) );));;))&&&@@&&&  6 $&727"'%+"'&7&54767%&4762֬>4P t+8?::  ::A W` `EvEEvE<."e$IE&O &EI&{h.`m"&#"&'327>73271[ >+)@ (]:2,C?*%Zx/658:@#N C= E(oE=W'c:#!#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%"N^ '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL#Qa"'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!2 55 **.>.-@-R.>.-@-<+*q6- -- 0OpoOxzRrqP6z~{{Prr^aa]054&"#"&5!2654632!#"&57265&'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![,7*  2(-#=  /~[(D?G  |,)"# +)O8,+'6 y{=@0mI#938OAE` -  )y_/FwaH8j7=7?%a % %!?)L J 9=5]~pj  %(1$",I  $@((  +!.S -L__$'-9L 5V+ 6 T+6.8- $ 0 + t |S 16]&#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@ "kb2)W+ ,5/1   #   Z -!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1  ! / ,   /--ST(::(ep4AM@=I>".)xΤlsY|qK@ %(YQ&N EHv~<Zx'#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A %%%h% %hJ%D,FZxULs TgxUJrVD %hJ%@/LefL.C %Jh%CV sNUxϠ@.FZyUHpVA %h&%% %Ji%CWpIUybJ/Uy^G,D %Jh%@U sMt UC %hJ%C-KfyEX[_gj&/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf' % :/d B 4@ }  &!0$?Jfdf-.=6(:!TO? !IG_U% . k*.=; 5gN_X "  ##  292Q41   *6nA;| BS N.  %1$ 6 $nk^ '7GWgw2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`( `(8^BB^^B@B^"vEj^B(8(`(8(/?O_o/?2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`' "&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広3CQ#".54>32#".546322#"&#"#"54>%".54>32%2#"&54> &X=L|<&X=M{2r_-$$-_rUU%&&5%ő'- "'.546762@FF$@B@$.&,&.]]|q#<<#(BB B%'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px p=`$>>$&@&@ @&p@ &.A!!"!&2673!"5432!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:%,AGK2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa| DH> I1q Fj?w@wwwsq*4p9O*¸Z^qh LE "(nz8B M'?"&4624&#"'.'324&#"3267##"&/632632.ʏhhMALR vGhг~~K „yO^   ʏʏВ*LM@!שwwȍde)qrOPqȦs:03=7'.?67'67%'>&%'7%7./6D\$>  "N,?a0#O 1G9'/P(1#00  ($=!F "9|]"RE<6 'o9%8J$\ :\HiTe<?}V#oj? d,6%N#" HlSVY]C =@C4&"2!.#!"4&"2+"&=!"&=#"&546;>3!232^^^Y ^^^`pppp`]ibbi]~^^^e^^^PppPPppP]^^]3;EM2+"&=!"&=#"&546;>;5463!232264&"!.#!"264&" ]`pppp`]ibbi^^^dY !^^^]@PppP@@PppP@]^^] ^^^e^^^ 3$#!#!"&5467!"&47#"&47#"&4762++&2 $$ 2&&&4&&Z4&&##&&4&4&44&m4&m+DP4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠) -g+^aaF s" +g (* 3#!| #/IK/%*%D= )[^aa !!!'!!77!,/,-a/G t%/;<HTbcq%7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632 #"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632632  *     X    ^  `    ^  b  c   fu U`59u  4J   l~ ~ F 2    m | O,           ru| u  " )9 $7 $&= $7 $&= $7 $&=  $&=46w`ww`ww`wb`VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv#^ct#!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x c`(8!3;:A0?ݫY   ^U 47D$    74U3I  |L38wtL0`((88(@(8(D 9 8(Q1&(!;  (g- Up~R2(/{E(Xz*Z%(i6CmVo8 #T#!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x c`(8iFFZcrcZ`((88(@(8(D 9 8(kk" kkJ  ! k#S#!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x c`(8-Kg kL#DCJg  jLD`((88(@(8(D 9 8(jj jjkk kk#8C#!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x c`(8 G]L*COJ?0R\wx48>`((88(@(8(D 9 8(jjRQxk !RY#*2#!"&5463!2!&'&!"&5!!57"&462(8((88((`x c`(8Pppp`((88(@(8(D 9 8(ppp  #*7JR5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"<(8((88((`x c`(8kޑcO"jKKjK`((88(@(8(D 9 8(SmmS?M&4&&4#9L^#!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x c`(8 6ddWW6&44`((88(@(8(D 9 8(. G5{{5]]$5995#3C#!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x c`(84LL44LL4l  `((88(@(8(D 9 8(L44LL44L  Z #7K[#!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x c`(8` 3  3  3  3 v  ?  `((88(@(8(D 9 8( & & - & &  ?   '6#'. '!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H( ' gQWZc[ -%7' %'-'% %"'&54762[3[MN 3",""3,3"ong$߆]gn$+) ")")" x#W#"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\ u_MK'̨|g? CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*'/7  $&6$ 6277&47' 7'"' 6& 6'lLRRZB|RR>dZZLlLZRR«Z&>«|R ! $&54$7 >54'5PffP牉@s-ff`-c6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92Z2&`9UW=N9:PO;:dhe\=R +)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X  #'#3#!"&5463!2) p*xeשw@www0,\8@www9I#"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4 &) @]v q#CO!~󿵂72765'./"#"&'&5 }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6.> !-I[4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R HMŰ9ou7ǖD䣣 R23('3_,--,R23('3_,--,NJ ?uWm%#"'%#"'.5 %&'&7632! ; `u%"(!]#c)(  #"'%#"'.5%&'&76 !  (%##fP_"(!)'+ʼn4I#"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2z䜬m IwhQQhbF*@&('k@z   _hQнQGB'(&*eozΘ@@`  >. $$ ffff^aafff^aa>"&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:! %]& %@2(/.+*)6! <.$..**"+8#  #Q3,,++#-:#"$$ /:yuxv)%$ /?CG%!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&&&& &&&&&&&&@&&&&&&&&&&&&%2 &547%#"&632%&546 #"'6\~~\h ~\h\ V V VV%5$4&#"'64'73264&"&#"3272#!"&5463!2}XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www/>LXds.327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,  *"T.D@Yooo@5D [  Z  Z  [ ``[ Z  2 ,l0 (T" .D5@oooY@D, Z  [  [  Z ``EZ  [ 5%!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYC L||L Y˄(E''E*( /?IYiy%+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P > P3&&rrr&&rrr he 4LKM:%%:MKL4WT&&%/9##!"&563!!#!"&5"&5!2!5463!2!5463!2&&&&&&  &&&i@&&@&7'#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%  :g"&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[ gq# /3qFr2/ $rg%4 HffHJ4d#!#7!!7!#5!VFNrmNNN N!Y+?Ne%&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76 '6# <;11x# *# G,T93%/#0vNZ;:8)M:( &C.J}2 %0  ^*  JF &7'X"2LDM" +6 M2+'BQfXV#+] #' L/(eB9  #,8!!!5!!5!5!5!5#26%!!26#!"&5!5&4& &pPPp@@&&@!&@PppP@*  9Q$"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK NN Ud: xx 8    ,, |2222 MXXM ic,>>,   ̺  '/7?KSck{4&"2$4&"24&"24&"24&"24&"24&"24&"24&"264&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj&&&&KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK&&&&jKKjK4LL44LL 'E!#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7' #$ &gpf5 O.PqZZdS -V"0kqzTxD!!8p8%'i_F?;kR(` !&)' (2!&6367! &63!2! `B 1LO(+#=)heCQg#s`f4#6q'X|0 -g >IY#6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24  : @7vH%hEP{0&<'VFJo1,1.F6A#L44LL44L"% 7x'6 O\JYFw~v^fH$ ! "xdjD"!6`J4LL44LL +3@GXcgqz -<JX{&#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/ !/  !! 00/e&'!"e$   '!!''   8''NgL44LL44LUQghQUk=("  ! =))=2( '! 'L#(>( & DC(>(zL#DzG)<)4LL44LL  BWbjq}+532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32 !264&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA !M77MM77M3! 4erJ]&3YM(, ,%7(#)  ,(@=)M%A20C&Mee(X0&ĖjjjV 8Z8J9N/4$ 8NN88NN  #&:O[ $?b3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM ') ~PSPRm٘M77Mo7q @)U 8"E(1++NM77Mx378D62W74;9<-A"EA0:A F@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?* $\amcrVlOO176Nn23266&+"&#"3267;24&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,,  _3$$2%%M>AL Vb5)LDHeE:< EM j,K'-R M ~M>AR  Vb5)LEHeE:< E J ABI*'! ($rL44LL44Lv%1 %3!x*k $2 %3!;5h n a !(lI;F   rp p8;5h t a !(lI;F ` #k 4LL44LL  2HW[lt#"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#7532764&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * / 8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L44LL44LyE%# Vb;A !p &'F:Aq)%)#orgT$ v2 8)2z948/{ 8AB..B/q?@r<7(g/4LL44LL ?#!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ;U g3 T 2RX='8P8|5 4Ljj U;Ig@   `  "*\(88(]k  &N4#"&54"3 .#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT T 2RX='8P8|5  U;IgXu?bl3@4Ljja`   `  "*\(88(]k/7[%4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@0 o`^BB^`5FN(@(NF5@@@u  @LSyuS@%44%,<H#"5432+"=4&#"326=46;2  >. $$ ~Isy9"SgR8vHD w ffff^aam2N+ )H-mF+10*F +fff^aab4&#"32>"#"'&'#"&54632?>;23>5!"3276#"$&6$3 k^?zb=ka`U4J{K_/4^W&  vx :XB0܂ff ) fzzXlz=lapzob35!2BX G@8  ' '=vN$\ff  1 SZz8zX#("/+'547'&4?6276 'D^h  i%5@%[i  h]@]h  i%@5%[i  h^@@)2#"&5476#".5327>OFi-ay~\~;'S{s:D8>)AJfh]F?X{[TC6LlG]v2'"%B];$-o%!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52-P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@@PpH85K"&ZH85K"&ZH85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :& !!3 ! @@@  #"$$3!!2"jaѻxlalxaaj!!3/"/'62'&63!2'y  `I  yMy `I y'W`#".'.#"32767!"&54>3232654.'&546#&'5&#" 4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8 oNU0 J1F@#) [%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn* -c1BWg4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$( 1$6]' !E3P|ad(2S;aF9'EOSej]m] <*rYshpt.#)$78L*khw@wwwB % $/$G6 sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www34."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhfffнQQнQQнQZZQffff#>3!2#!".2>4."fffнQQнQQffffQнQQн ,\!"&?&#"326'3&'!&#"#"'  5467'+#"327#"&463!!'#"&463!2632(#AHs9q ci<= #]$ KjKKjKKjKKjH#j#H&&&KjKKjKg V i jKKjKKjKKjK ..n(([5KK55KK5[poNv<+#"'#"&546;&546$32322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃ 2$#2UU1݃2 ,u54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%" *#͟ O%GR=O&^opC8pP*bY _#$N Pb@6)?+0L15 "4$.Es  5IQ"!@ h "Y7e|J>ziPeneHbIlF>^]@n*9 6[_3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>! =39? 6'_ >29? 5'17m-VU--,bW.뮠@Fyu0HC$뮠@Fyu0HC$L= ?? <=! A <`;+"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@Ipp>Sc+"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0` !!!! #!"&5463!2ړ7H7jv@vvv':@vvvMUahmrx#"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%# %'3/&=&' 5#?&547 6!p4q"""6" 'h*[ |*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M "! O dX$k !! ! b [TDOi @6bxBAݽ5  ɝ:J +3,p x1Fi (R 463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C} )&54$32&'%&&'67"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn+;"'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk[/?\%4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i qfN-*#Sjt2"'qCB8!'> !%)-159=AEIMQUY]agkosw{! %! 5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#"Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'32#".543232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU 7#"&463!2!2&&4&&&&4&KjKKjKjKKj &&&%&& &&4&&&&4&&&5jKKjKKjKKjK%z 0&4&&3D7&4& %&'S4&"4&"'&"27"&462"&462!2#!"&54>7#"&463!2!2&4&4&4&4KjKKjKjKKj &&&%&& &&4&%&&ے&4"jKKjKKjKKjK%z 0&4&&3D7&4& %& & !'! !%!!!!%"'.763!2o]FooZY@:@!!gf//I62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@4SS4ZSS6SS4SS4SS4SS4SS4S@ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:= :+: =RRZSSSSSSSSSSSSSCv!/&'&#""'&#" 32>;232>7>76#!"&54>7'3&547&547>763226323@``` VFaaFV      $. .$     yy .Q5ZE$ ,l*%>>%*>*98(QO!L\p'.'&67'#!##"327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"' Dg OOG`n%ELL{@&&Nc,sU&&!Fre&&ss#/,<= #]gL oGkP'r-n&4&2-ir&&?o  4 _5OW! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@&&@&K55K`?e==e?1O6# ,  #$  , #6OO&&&&5KK?!"'&'!2673267!'. ."!&54632>321 4q#F""8'go#- #,"tYg>oP$$Po> Zep#)R0+I@$$@I++332++"&=#"&=46;.7>76$  @ ᅪ*r@@r'/2+"&5".4>32!"&=463  &@~[՛[[u˜~gr&`u՛[[՛[~~@r=E32++"&=#"&=46;5&547&'&6;22676;2  >``@``ٱ?E,,=?rH@``@GݧH`jjrBJ463!2+"&=32++"&=#"&=46;5.7676%#"&5   &@~``@``  vXr&@``@+BF`rks463!2+"&=32++"&=#"&=46;5&547'/.?'+"&5463!2+7>6 %#"&5   &@~``@``~4e  0  io@& jV  0  Z9r&@``@Gɞ5o , sp &@k^ , c8~~`r8>KR_32++"&=!+"&=#"&=46;.767666'27&547&#"&'2#" @@ 'Ϋ'sggsww@sgg@@-ssʃl99OOr99FP^l463!2+"&=$'.7>76%#"&=463!2+"&=%#"&54'>%&547.#"254&' &@L?CuГP vY &@;"ޥ5݇ޥ5`&_ڿgwBF@&J_ s&&?%x%xJP\h463!2+"&='32++"&=#"&=46;5.7676632%#"&56'327&7&#"2#" &@L? ߺu``@``} ຒɞueeu9uee&_"|N@``@""|a~lo99r9@9;C2+"&5"/".4>327'&4?627!"&=463  &@Ռ .  N~[՛[[u˜N .  gr&`֌  . Ou՛[[՛[~N  . @r9A'.'&675#"&=46;5"/&4?62"/32+  '֪ \  . 4 .  \r|ݧ憛@\ .    . \@r~9A"/&4?!+"&=##"$7>763546;2!'&4?62  m  - @ݧ憛@& -  @rm4 -  ٮ*   - r+"&5&54>2  @[՛[rdGu՛[[r  ".4>2r[՛[[՛r5՛[[՛[[$2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88 2#V#2L4>32#"&''&5467&5463232>54&#"#"'.Kg&RvgD $ *2% +Z hP=DXZ@7^?1 ۰3O+lh4`M@8'+c+RI2 \ZAhSQ>B>?S2Vhui/,R0+ ZRkmz+>Q2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_ pdddxO"2xxê_lx2X  !+'5>-pkW[C I I@50Oddd˥Mhfxx^ә #'+/7!5!!5!4&"2!5!4&"24&"2!!! 8P88P 8P88P88P88PP88P8 P88P88P88P8 +N &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`     `  L4Dgy 6Fe=OOU4L>   ` `  4L2y5eud_C(====`L43V &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>     %%Sy 6Fe=J%>     %65%Sy5eud_C(zz.!6%$!2!!!46;24&"2!54&#!"&&&@ԖV@&&@&&ԖԖ@&3!!! !5!'!53!! #7IeeI7CzCl@@@#2#!"&?.54$3264&"!@մppp((ppp#+/2#!"&?.54$3264&"!264&"!@մ^^^@^^^@((^^^^^^v(#"'%.54632 "'% 632U/@k0G,zD# [k# /tg F Gz  #'#3!) p*xe0,\8T #/DM%2<GQ^lw &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7&"2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9 W"-J0(/r V"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V  # 5X N"& . ) D>q J:102(z/=f*4!> S5b!%  (!$p8~5..:5I  ~T 4~9p# ! ) & ?()5F 1   d%{v*: @e s|D1d {:*dAA|oYk'&<tuut&v HCXXTR;w 71™ Z*&' 1  9? . $Gv 5k65P.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F& OܽsDD!/+``aa``a154&'"&#!!26#!"&5463!2    iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L44LL44L44%2"4:I;p!q4bb3p (P`t`P(6EC.7BI64LL44LL  .>$4&'6#".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL44LL44L')꽽)J)]wL`ֺ۪e4LL44LL;4&#!"3!26#!"&5463!2#54&#!";#"&5463!2  @ ^BB^^B@B^  B^^B@B^`@  MB^^B@B^^>  ^B@B^^5=Um ! !!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762?(``(?b|b?B//B/]]FrdhLhdrF]]FrdhLhdrF@@@(?@@ ?(@9GG9@/B//BaItB!!BtI Ѷ!!ь ItB!!BtI Ѷ!!ь-M32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsFFsMMsFFsMojjo@@jj@@<!(!!(!-3?32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ`  DqLLqDojjo@@jj@@B>=C-3;32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ`UVU96gg6ojjo@@jj@@β**ɍ-G32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsFFsMkkojjo@@jj@@<!(!33!(!9I2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7Aj"#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>3265K @0.B @0.B#6'&& l @0.B 2' .B A2TA9B;h" d mpPTlLc _4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E`1X"#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE& ԖPjjdXUGJ7!.B P2.B %2@ 7K5(B@KjKj?+fU E,5K~!1.>F.F,Q5*H$b2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Mye t|]WSSgSY\x{ 70"1i92DU1&=  =&0@c >&/Btd4!*"8K4+"@H@/'= t?_K93-] UlgQQgsW ]#+ i>p&30&VZ&0B/ %3B. "to ){+C4I (  /D0&p0D3[_cg"'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k cJ/4qG^\hB2.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5KG#!+"&5!"&=463!2+"&' +"' +"'&5>;2>76;2Y    M .x - N     u  , u ?  LW   #  *:J4'&+326+"'#+"&5463!2  $6& $&6$ UbUI-uu,uuڎLlLAX!Jmf\$ 6uuu,KLlL-[k{276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&  $&6]h - %Lb`J%E 5 ,5R- h - %Lb`J%E 5 ,5R-'uu,uulL/hR    dMLc  NhR   dMLc  N1uuu,LlL@  ' 7 '7 ``H ``H !``H ```H` '%  7' 7'7 ' $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL $ %/9ES[#"&54632$"&4624&"26$4&#"2%#"&462$#"&4632#"32&! 24>  !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,> nP/R U P酛n >,m'77'&77N77N6^Orqqqqqqt棣棣(~|| on[usј^~33pc8{y%cq33dqpf L 54 "2654"'&'"/&477&'.67>326?>< x ,  (-'sI  VCV  Hr'-(  $0@!BHp9[%&!@0$u  ]\\]-$)!IHV D V HI!)$-#36>N"&462."&/.2?2?64/67>&  #!"&5463!2]]]3 $; &|v;$ (CS31 =rM= 4TC(G zw@www]]]($-;,540= sL =45,; @www(2#"$&546327654&#" &#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|! gL&5&'.#4&5!67&'&'5676&'6452>3.'5A5RV[t,G'Q4}-&r! G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K r#"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^ u_x^h ;J݃HJǭ qE Dm! M G?̯' %o8 9U(F(ߎLlL&!&!SEm|[n{[<ɪ "p C Di% (K HCέ  pC B m8 @Kނ  HF(LlL "*6%&6$ 7&$5%%6'$2"&4}x3nQH:dΏX e8z' li=! 7So?vM '&7>>7'7>''>76.'6'El:Fg r *t6K3U Z83P)3^I%=9 )<}Jk+C-Wd &U-TE+]Qr-< Q#0 C+M8 3':$ _Q =+If5[ˮ&&SGZoMkܬc#7&#"327#"'&$&546$;#"'654'632ե›fKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}+5?F!3267!#"'#"4767%!2$324&#"6327.'!.#"۔c28Ψ-\?@hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ34&#!"3!26#!!2#!"&=463!5!"&5463!2  @ ^B `` B^^B@B^   @ @B^@@^BB^^>3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="# U<-M93#D@U8vk_Y [hD00DD00Dce-JF1 BDN&)@ /1 dy%F#"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>* 432fba  $B? >B BB AA.-QPPR+ 42 %<ciђ:6& hHGhkG@n`IȌ5 !m(|.mzyPQ-.  je  q>@@?ppgVZE|fb6887a %RB? =B ABBAJvniQP\\PRh!cDS`gΒ 23geFGPHXcCI_ƍ5" n*T.\PQip [*81 / 9@:>t%6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676= >vwd" l "3 /!,+ j2.|%& (N &wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])  u1V(k1S) - 0 B2* %M ;W(0S[T]I) A 5%R7&&T,Xq&&1X,LΒw%%;#!"&5463!546;2!2!+"&52#!"/&4?63!5! (&&@&&(&&@&&( (  &&@&&@&&&&  #''%#"'&54676%6%% hh @` !   !    #52#"&5476!2#"&5476!2#"'&546        @  @  @    84&"2$4&"2$4&"2#"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4" %!KjKKjKKjKKjKKjKKjK.٫8  !%00C'Z'.W"&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A  0) LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee    Y'w(O'R@$#"&#"'>7676327676#" b,XHUmM.U_t,7A3ge z9@xSaQBLb( VU  !!!==w)AU!!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465! KkkK _5 5 #BH1`L I& v6S F!Sr99rS!`` /7K%s}H XV P V  e  Vd/9Q[ $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#";2 P 3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*  ))  +^X^|WX=>X:_.2//a:Ru?  Q%-W|XW>J( =u>XX|WX`  *((*  +2 2X>=XW|E03>$32!>7 '&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O  5!#!"&!5!!52!5463 ^B@B^`B^^B `B^^"^BB^0;%'#".54>327&$#"32$ !"$&6$3 ##320JUnLnʡ~~&q@tKL}'` - -oxnǑUyl}~~FڎLlLt`(88(   7!' !\W\ d;tZ`_O; }54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2````pp```  !,! -&M<FI(2 ```@PppPpppppp# #   ppppp j#"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546 %. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z & :k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k: !+32&#!332 $&6$ ~O88OLlL>pN  iLlL '':Ma4&'#"'.7654.#""'&#"3!267#!"&54676$32#"'.76'&>$#"'.7654'&676mD5)  z{6lP,@KijjOoɎȕ>>[ta) GG 4?a) ll >;_-/ 9GH{zyN@,KԕoN繁y! ?hh>$ D" >â? $ n"&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6# -SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc* &D~WL}]I0"  YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-" 7Zr^Na94Rji3.I+ &6W6>N%&60;96@7F6I3+4&#!"3!26%4&#!"3!26 $$ ^aa`@@^aa '7  $ >. %"&546;2#!"&546;2#/a^(^aa(N@@4&#!"3!26 $$ @@^aa`@^aa '  $ >. 7"&5463!2#/a^(n@^aa(N@ %=%#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$KjKKjK$&4&Ԗ&4&>9G!5KK55KK5!&&jj&&#/;Im2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH..Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze] E-&&-EKjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8!O##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7 8Q NQ N 8G@ 8GQ NQ N7   8 8  H H  k%  ".>2I20]@]@oo@@oo㔕a22]]p^|11|99|11|(%7'7' ' 7T dltl)qnluul)1$4&"24&"2 &6 +"&5476;2 &6 LhLLhLLhLLhL>  &   &`>hLLhLLhLLhL>&&>G  .7)1!62 1!62he220e22> v +4 [d+ d 135#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa  (+.>#5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'    jjV>(>VV>>Vq  ( ^(>VV>>VV=&'&'&'&76'&'&.' #.h8"$Y ''>eX5, ,PtsK25MRLqS;:.K'5R ChhRt(+e^TTu B"$:2~<2HpwTT V/7GWg. %&32?673327>/.'676$4&"2 $&6$   $6& $&6$ d -- m  ,6*6,  mKjKKjoooKzz8zzȎLlLU4>>4-. YG0 )xx) 0GYޞ .jKKjKqoooolzzz80LlLD/7H#"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$ +s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm>NZ+"&=46;2+"&=4>7>54&#"#"/.7632  >. $$ p=+& 35,W48'3  l zffff^aaP2P: D#;$# $*;? R Cfff^aa'Y >O`"&5462&'.'.76.5632.'#&'.'&6?65\\[( | r [A@[[@A#2#  7* <Y$  +}"(  q87] F  _1 )    #1Ke34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7  , L; =+3&98&+)>>+3&98&+)>=+3&88&+)> Wj|r >Q$~d $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgYJ\m4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$ $^"  %%  "^$ $W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm ^x -  - x^ = /U7C kkz'[$ =&5%54'4&KK4r7>54 "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4SZ&4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$  !D4%  ,\44&&4&4&&4&-Z4&&4&;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0 u40 )4#g&'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$ "0%>s$ "0%>;;>%5KVL#>H30 \($$(\( єyO2F/{(?0(TK.5sg$ єy#-F/{$70(TK.5sg$L#>H30 \($$(\#(@5"'K58!'"58!'"55"'K#dS$K K$Sdx#@1 w d>N;ET0((? - 2K|1 wd#N;ET0$(? - 2K$#dS$K K$SdxDN\2654& 265462"2654 #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4[ " @ GB[ "&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛ "  " Gi[ Xh#"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b )   :4FDN  [1,^JK-*E#9gWRY vm0O w@wwwC22 c@X&!9{MA_"S4b// DR"XljPY < @www%e4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32 ''il$E/  @P@ ^`'W6&!.. ! -P5+ E{n46vLeVz:,SN/ M5M[  ]$[^5iC'2H&!(?]v`* l b$9> =R2 #"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676 &676&6766/&672? =1( H/ '96&@)9<')29% &06##$ J 0 7j)5@"*3%"!M %#K"%Ne 8)'8_(9./=*%8!Q #P"\Q#N&a)<9bR]mp%"'.'&54>76%&54763263 #"/7#"'#"&/%$%322654&#"%'OV9  nt  |\d ϓ[nt  |@D:) ;98'+| j," 41CH^nVz(~R 9\'  r  @L@  @w46HI(+C ,55, f[op@\j;(zV~i/5O#"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM $bKd ү[E";Kx%^6;%T,U:im=Mk).DT4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-54&#"#"'654'.#"#"&#"3263232>3232>76 $$ Cf'/'% ( $UL ( #'/'@ 3#@,G)+H+@#3 ^aaX@ _O#NW#O_ .* ##(^aaq[632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9 B6?K? %O4T% >6>Z64Y=6>%S4N$ ?L?4B @{:y/$ ,'R! F! 8% #)(()#%: !F Q'+%0z:zO_4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2Cf'.'% ( $VM  ) #'.'@ 3 #A,G)+H+A# 4 w@wwwXA  ?4N$NW&M&L  /* ## + @www O$>?>762'&#"./454327327>7> EpB5 3FAP/h\/NGSL  RP* m95F84f&3Ga4B|wB.\FI*/.?&,5~K % & Y."7n< "-I.M`{ARwJ!FX^dj''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$   *'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM $'&&NJBg=.%w؝\\w Ioo<<-NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@)6!!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC" !-9[nx"&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<) Tد{ՐRhx=8 78 n 81 pH_6Soc F@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB; W#;WS9 &(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@9 1P%14'!3#"&46327&#"326%35#5##33 $$  }Pcc]321IUΠ?LL?cc4MX &04;0XpD[[DpD,)&&Q 9V\26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P P  92#.}SP9::%L \B )spN/9oJ5  !+D`]BgY9+,9% Pk 4P P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@ J"@*4^`ED B o/8927 *@OLC!T!323X$BJ@@@&AS 0C 59" 'D/&&D4 88 $5A&%O#!"&547>7>2$7>/.".'&'&2>^B@B^ >FFzn_0P:P2\nzFF> R & p^1P:P1^ & R P2NMJMQ0Rr.B^^B 7:5]yPH!%%"FPy]5:7 = 4 QH!%%!Ht 4 =<"-/ ?1Pp+".'.'.?>;2>7$76&'&%.+"3!26#!"&54767>;2' +~'*OJ%%JN,&x' % ^M,EE,M7 ZE[P*FF*P:5  ^B@B^){$.MK%%KM.$+X)o3 "a 22!] 4  I>"">,&S8JB##B12 ` `B^^B8&ra#11#$R&  "&.2v%/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J" 0<=_gNU?DfuYGb7=^H^` =v~yT3GDPO 4Fѭqi_w\ހ!1uS%V_-d 1=U{J8n~r'U4.#".'"3!264&"26+#!"&5463!232+32+32 0P373/./373P0 T=@=T֙֙|`^B@B^^BB^`````*9deG-! !-Ged9IaallkOB^^BB^^B +Yi"&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO -Q52-)&)-2 ``  ``  `^B@B^^BB^`  @   |kkl"=IYL)CggC0[jM4      B^^BB^^B @  @ !1AQu4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2)P90,***,09P)J66S"@8@^B@@B^^BB^Ukc9 9ckU?@@88 @@N@B^````^BB^^!1AQu#!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2J66J)P90,***,09P)"@8@ @  `@@` ^B@B^^BB^ՀUUkc9 9c`@@88@@2  @ ````@B^^BB^^(%.'"&' $&  #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL$,  $&6654&$ 3 72&&  lLmzzBl>KlLGzzG>'7#!"&54>7&54>2  62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff#=#!"&4>3272"&462!3!26#!"&5463!;26=!2J66J)Q8PP8Q)  ^B@B^^B``B^VVVld9KK9d` @B^^BB^``^+;K[eu4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@@^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^+;K[eu#!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@  ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@` @B^^BB^^A#"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu +I\Gw\B!al݇yǙV/]:=B>9+32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632  ?c'p& ?b1w{2V ?#&#9&CY' &.&#+B : &65&*2w1GF1)2<)<'  ( BH=ӊ:NT :O )4:i   F~b` e!}U3i?fRUX|'&'&Ic&Q  *2U.L6* / L:90%>..>%b>+ +z7ymlw45)0 33J@0!! TFL P]=GS -kwm  !*(%6&692? $&6$  '   al@lLlL,& EC h$LlL /37;%"&546734&'4&" 67 54746 #5#5#5ppF::FDFNV^fnv~"/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4  R ,H8JfjQhjG^R,  !4&&4&Z4&&4&4&&4&4&&4&&4&&44&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&  R  ,[cGjhQRJ'A, &4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4%-5=EM}+"&=#!"'+"&=&="&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2"&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?AA? @ @R...R@`jlL.h) * * $ %35K.....uvnu....@@jN  * * .t2#K5..R..R. @Hq '&'&54 &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k] :Buq CA _kނXVobZZbnW|V 0  Q2- l}O  / :1z q%zG 4( 6Roa ą\< )4 J}%!!#!"&5463!2^B@B^^BB^`@B^^BB^^%#!"&=463!2^B@B^^BB^B^^BB^^ &))!32#!#!"&5463!463!2`B^^B^B@B^^B`^BB^^B@B^B^^BB^`B^^#3%764/764/&"'&"2?2#!"&5463!2    s^B@B^^BB^ג     @B^^BB^^#'7"/"/&4?'&4?62762!!%#!"&5463!2     ^B@B^^BB^    `@B^^BB^^ ! $&6$ .2r`LlLf4LlL#.C&>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$  ( 4Z# # & # # & y"6&.JM@& "(XE* $+8 jT?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1 /Dx] VFIq-HD2NK '>*%R= f 07=. f D]\|yu,0>Seu#2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2 <  zzj k-L+ )[$8=".un/2 ^B@B^^BB^5cy    (ݔI(8?C (3> #"($=@B^^BB^^0K S&'.'&'./674&$#">&>?>'76'# "&#./.'7676767>76$w .~kuBR] T%z+",|ޟj<)(!( ~ˣzF8"{%%#5)}''xJF0"H[$%EJ#% .Gk29(B13"?@ S)5" #9dmW";L65RA0@T.$}i`:f3A%% BM<$q:)BD aa%`]A &c| Ms!  Z 2}i[ F&** < ʣsc"J<&NsF% 0@Wm6&'.6$.7>7 $76".4>2., &>6'"'&7>=GV:e #:$?+% q4g &3hT`ZtQмQQмpAP1LK!:< }҈`dlb,9'  %%($! a3)W)x  оQQоQQcQǡ-җe)Us2XD\ϼYd /?O_o#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(80pp00pp00pp00pp00pp0     @(88((88     /Q/&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'% %6 27 2G f!)p&4&p)!f G2 72  *6 " 47 2G f!)p&4&p)!f G2 72 " 6* !k 3 j&3 %,*&&ր*9% 3&j 3 k!./!>>$,*!k 3.j&3 %Ԝ9*&&ր*ǜ,% 3&j 3 k!*,$>>!/.&6.'&$ &76$76$PutۥiPuGxy Զ[xy -_v١eNuv١e =uʦ[t78X &6# #'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL &ZXblw.'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&>'.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-   $  6)j2%+QF)b3FSP 21DK2AW ") ")$? ? 8A& AE5lZm= gG2Sw*&>$5jD GHyX/4F r 1  1""!l=6> 6 ,5./'e    .*|Ed! u & &%& &5d ))66 @ C& 8B @qL?P^7 G-hI[q:"T6 ,6 &/`  L wQ'   A ^   "  $& _  y  * <Copyright Dave Gandy 2016. All rights reserved.Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFontAwesomeRegularRegularFONTLAB:OTFEXPORTFONTLAB:OTFEXPORTFontAwesomeFontAwesomeVersion 4.7.0 2016Version 4.7.0 2016FontAwesomeFontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeFort AwesomeDave GandyDave Gandyhttp://fontawesome.iohttp://fontawesome.iohttp://fontawesome.io/license/http://fontawesome.io/license/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~glassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE=O<01hprewikka-5.2.0/prewikka/htdocs/fonts/fontawesome-webfont.woff0000644000000000000000000027735013726165107024425 0ustar rootroot00000000000000wOFF~ FFTM0kGGDEFL OS/2l>`2z@cmapi :gaspglyf _yLMheadb36-hheab$ hmtxb Eylocae \maxpl ,namemD㗋posto`u=O<01hxc`d``b `b`d`d:$Y< xc`fdbʢb l |6F0#Fnx͒Jqgje>"D>{EO >,"u^[[[jos_M%:0g80B.Lszðפ 1YlKWvest)Mk^Zֵ֪m׉Θbk̳26>'YҖjukZۺgm2 (4-iEkЖv}XB Y``c9ZJV5eY߆6G ΂`3| 6[uIpn-[pL0Lp;׸%8o>F8 G8`Wί"E^_=(K,FK+ybx TՕ0o}{uuuwUWիnnjmz-nvEEAAJ!*(hD2c%FʦEbb6$&7߹UUW7 tw{98m8bI ڃ݌7 SEG!3j㔐=w;P^IA;RRnkLS.)o8G([)9O,,AtS h yujZupPGxN on{ho2AD-r]u5e^dMX8=r5ͻ^Q\~2V0 o0kC qA跍 G< 9v`|NXWI:"'aW޺O=}k#"7e %Vs~-y$ŵXw&'q.n.EK#JDڝn봽7=|wL:Ӎ2vmrRv:=0P@DۓVZ7eOd7HMSY|[of'BL}ƷҗV^+{W=uҤ֦='j,| ;vAo=0q8"I³8yZ6Ǵo9q< i3k1%& uk {H}@΁W—^qԷ4;gg7Ny/ qPOЌL4q,ԇ"Sv=jL /UjC-woȍnj̮{j\ vEk z>pn=^=ajID(෠quF;э5֮s7 ;QC7U[׈yZIۘػ*!$ dⵄŖ-ˇ?{mf6po~mԽwoG6Moza--m#]?]?Vkzܥܵ.>)9NH%&T/ _IAxOB]8(.v)G=HPSUP>fFE-GGs|'?~zI*R|[` -V'ݙGP3b'\RI̞#n;W ٟDTѹb80^s6,rȥ ism15kk,}qWȝ;tseYqqC/0q|> 3W/ըsF"sIoAHI 8C„ w~@ _(]h=r9p! ;H-[Ifw;%=d꯵bmH)k=o\hEi 7i:-!mn:`[G]GE,;syH62ƈs՗:I@^\wOVõ<g?]Y{?qKgH[X&tdn[,Z!H6#=nݳ;OWUG4]]6ٰp7[aM5PB]?4P呂7o\!׺ߜؤ 2>8/p2h@k~ھB~a[r=Pr8SescF ӗ S#P|0z'zS)8aFBFE VrJ(EfDpU\'h4P jd3}CvfM}Zlf,.pj1tYj2lƗ,U<:zt[%Y!1vMfrc:_n"7zwvm zuidtO.3Ku =.#Cjn(,THu_Z 6qhhP4#JH%jt3M)#zzdt1Dn~9/ȋB@NV?p'r f: ;bBQHb$h3CG|#v2ydm)esvw~٬fp~DG r 0^XzˣՇcl& \`\8HHa IC?6:5H;lވ4C&\FjԬ,|MCݔ/f8ܮ2 .ҍl _/AkTVΝg ~T΂<`2Q&;XAW@@gj{j, suuE ֟:A 8,&ռ }|b0lFQ$px=4ddm7nru"N:O u^x@񝂍CG*%F>Tm?2.opˮ1r\T١K+L؜cn:8qyN\Dvj[ܦDy/*=H [0l8=`Dd&76tOd٧,崅v2+׷ TU[NHN8W|fG{ܘlT_Z1 8j `Ar㼌` h *b #ռBj0s$n^7w $Gɡ;N .A>3;My?zpͥΙ4aqp҃GFw|]֯!ؾbvq8e+)h.,U~4]h.P4s)+kqD2uϸuE3 V⭯ҟfS8/D]5ޖ*xWGj}l&klnçiPv'6#(%)>qEo6U+6ŋ8ۢlޏ> `Mn''zB-t/ꬱ3ik3 55Z 1ao|+ őm 0$YəOa1ag9up9Gת+b=H߀Q1hT]ҒQ^?s9ػ lB|4TNYBL, g#5A㉐=!7~=/X]WuwZW避[ꞞWd==Bm®ҏ΋v?$ E# L!7ط!TRRI4)H#l*:#H.)pӇ źRMB=ƅ(ǂ͵˥>A,_2%5pyn6/Mbt,L֮l+9QGb]*D; {PZ!*U1|s{"3\gGχyG:-nQg7`ԏ3xAx%ÏUXMZ&HX9>osGa '!lü|EW-ebbxsY06E>)VH ߰}V=G~Ykh/;ۇ0{4.c\h`5 FA5Tg[4#So3yuy=<'j{ hNk6 @1c/5 -T:`YX]g~ilp!e>1x06?eoAsb̪fyb3@B߂Yq?;m)h4skP UfW62c>8F(t*GC ym srp? ICY:ϻ&͜99TY-k%)@|FFh9*(RtKǻTXM-IP.%C"?,+ˆ= >tUgQWw#Υ7 ݋[P ޮ'j7 7̗9ZI SO4YkDE͂B~`Ig;mu֢zSg)rE܉=mK9ZD]4~7߉R6Hۂ(ji!BldpӜ^zz拾gF:qꢝkWl/СuX2rTsBנͫڂt}}ƶ_5 k4 A;oHLϹ)z.quAzyxjk5F-@lҙcڗҗ\6= O]9/5ڔ볝\tOCT3f(i ]w PiQwγ=JߌvGޮy[[,Et&QocÂyb66kMK|֋$Yz%P(^87DrK`%5.: Ďx=mnًm]Ю&2G(-@Q7xu3%@p~нt S]=)AG AVg; *=$mz -|_EZˢk<5U5fFIj`=H})0~F,"N6k"}ṒkT"$mZPc',ϛtzՅ];+j +NG>K#h-zp6\;yb~9.m \=qrqü=fS 6u(؍3#0  :Nz{SM]"`R .Cr`-U{낍znq tx ic+Ԛ:3Y㳙N*aVP `1Qb@fc^X9̼ܶjtҜY ӂhھ3 ijs+\8Tvi|Q< v߹c81-t\16GInJ:̇hX Gr+4Hjv4l!,cC54{ٱ4dR~p*;9nC%d}dA 4Q8iOi TgdulUSAq$.j6U;MǶۏێۏj9JDvAFbmLOI=`jf:>IǁJ! 6Txưqn̓S9ĀM|!ґ8X)hͅͳ(,ӌ2+lD3Qɕp$`Pt[ DV2opo%xZ)n:p4N)F ՆtT7Mu`8P*r >(O^tXi(M4! t(>hcU<@ܦç$M'(J׳Q܃<8Vjj7P?Ͼ;_!Q.h|:B)Ӓxܘs_d9aN=.WO.\|_O&tk.".Dp53͓ 6`8IuKjk/wiUSusUlr ̥;ѠMe`TB&n¦\ g2pd[0Ovz I'm%41}@€:įZ/r @1m8_.WRlv(F5Aս~]*@Qؿ VgM܊:MʞQZ㖵. HfJwKIA\f7zl}5VzG Ɛ u̻vߋaɰZ(S6W z7ek[j #6[6iSڣn@d`[}i]<{bN&kG[Q`Ek$|'GOR4: yX1dhz3TʷL-3DG%Z b锥3I陌R^cy,3P!@ieNq좀FS'}@4шÏ~*T(PY+=!?}>Ю+w*3Usƽ i[9a\uWeY5 +,iK\ʚe<zKC&Hdbktݩ7!;BTR@J vKU8bUH^Q;Okb%[QHO 9谉0r0}U>ʔV5^ܵ}ecFmۈrqLEl "I5ڦfU2cW+O, MJ񝁧6y?*0&Nݚxq?)>e( @qTVx>sjAi2W@WU{LГK^ A'96&E[ h8J*X>wyW+Vc*YP!3 ^ %"`ɒRcD@2ܵG5gL6}*Xl틵\"*p9B4MzA65L.2k,0^>G@@Hty Z4iepWtAh,8<{9ȽǷƶwZOYE< Z)t#/崐\F7ʔB>(&6ldit/=n>?&s]@Ν0Z.3Ĥ9MG6XIJHXa:C}3 6~>D3UO>[vZ_}סqN!ʃ -W S Ha)Y'lg8=`z(bwvi:2E!`;x,Y ߩ =Іj^ǻQ^_Yy`Q[&aYQ us0{&m胑*j)TC$ YQ>*P}H˥_7!n?Vا(sOGRBXbG/*󨴉bE("lrʔ$ΫdJwGp6 P/#j mtCR0}Bj̣RXvI>(j=:ECtV:O[h[5"uE3W. f[eܫ8P)e 0Rԁd.ُ:~}t<)/Q cOBGGp<"-G-b΢y3b#5RPCk{d˚ ح6d]LdLu鋶 LCzӮIYs;A@*nyڢKˏɩEWeMâx[*u -zҗrizH> 2$ =_j7{!h7Ύ|pfs%9LAQ,2WH(EEug&/ $̃cm$0^(K_ C]Di+/TRhOJ?Nޛ j; 쁳#ISm0Q4WՏ5_fd "0ԏ ~D}R'k GK1(_/TFȤ8>Q8m.mstÁ-`wZaxx";ͯ2o2:h*4X-hW3snP,ɞ "ޗ`7Nw8ɐD\ (,f鄝 IM|؟նkÿl5nv xL/LM}ݻ/Еum.umd>Nh&kԵ-h# +qs}v.L8c|P=/2,T,\fxP!:*}uLvyj{C [ ^܋lV͛CZk9~_+2_ʗ7%\~NVw|:$^fH-œl6[DniD>=}4b=U{xCu:6ݨ18=Z%ܓ&?i*V߻"z,K=,5keb PÒ}aM)dŐ".Aǝ2AnK% %7; QΤx9: J's9:(w̿sltWN~+lAڏm[w77n\W<9-N߹ti?";iw[;LvP2zrgkcl;#E*b8*<~h!:Q@qӼek/#@wꪫ' r*2_2mppm"Oގ:wFgRۜ{zh?U_3m3ؾ)[_./d jG̨.+{7g|6w6؟>d5;{O"-<+jaW22pWagy6&BhI2%1S*[ϤF۷%nwT QĶ!=00!dP$Oj!%l6bd[6,6`^Hfɖ3V ߶[8|\MQ lƜYxj?KO3ٲ%))JrGƼQ̼)2c"^–;@Y5u!'hVGTi M9#(ן<4s{@efQ`Gy 8L"KB3+fOx_c`= C@d-TOj+Jw]f1򉠦J -L[,Əvu&}z)AԫyzX߶"MWwP-蒺Mrk 44LZvɎiZcKU/Nja,a !"Y<]K-{S &,- l5V(DSJZU+6UԤ)jȀMXju5xkOxkCf>v;oĂu)O[H%rJrZNCQn?|x_B*kgYn3:B4WͤuQ.RMF2>8G3J<ZŠrVŗY~P9w;< +iչ+5DDhp,;ʹjfƼ=䵫9 3Ƒ,@('h:Ƌ&mTkPq8󨴱!ä.#Q{== 4V#mx _)IfC#yFN uQRPQyQ u:]g*OU֧c'PfՅԭںo>x,uP^"yXdci+Y_'z6~(+q$U;{S<^xGn}ouvXt%&3`.:gA'%O0j@Ew:мjdqge4c&ūY3]*tI* r6% &AR^3$p,a2GÇ}O>W476Ոn7[YNqOecu/=cm:&4Co<}iAO6ăNYm:̲f3J"MK:Ek:e-O7 6;kh}x?1/\g^y}7|4q'7o^ o.Uξ&d5v 3_P MpĹVjlU  a^vqǹ܈\?虽쪰:Oob2AL29zXvQ VUq^k%@$Ǡ#o}TscFW}$yF$y^2:l4/maԽ&oL3ѤNIq!#ĺ~N>0=ٞbDAw Oh CTѡ ֩FI.M#Œ3ze{EvceR] ecsERn`{ahZ]'3W0vIxV[mQ8f64Sc%WrF.aR6aLv0n=,L ZBU\]aJXL7e銛 ljQƀcHj\}MGޛ [X@"WdNS<+#(;<"w~omyL'DpEbY?~{{,o,RD(JbC>ܶ_dՇwffsܦk3ގ&~L =$&Cyd"le؄ tQRʉ@*΋7JՄpC#5-Vgo !Gi 4&NpOo޴խ9k'y=JS4/;٬vY3MiB< (Yuv<9_m@|zU _<';^;#b})Kywno%6,i7-+v(k6ic"Ym=t#WRTmR[nafʭklW޼(IdrUU5=^Dfj}-:$rp( %\x+>wW؄ Ou gq/,W:˺/Ɏ+ y+&Lo) @[@exbiu;:Ykw[50x:rsS&_Xxf[bT:7ak}Yx<5r'(>q-proɴ2HU&I-Kmhɠ\YFY`|fM0]63Bw5%#'iH(8[*k.Etc&aNmVJQKTMbX4?#4c왓Q,<v5?J [Js'ڛiӒӇC>䶵hMz__m27b2HC' j ,JN؋ LuqMZW7'./^L^DL%S n4:OW^of߷Rпlq{\PȖ叙y4*xBav kx@͗qY’.3HQF|:rƔ9`P_SRL 6b|jAn~<DN"u0Q\ Wuާfn6oH玤N N'S;)̓vGvejOXJUPsps<׷4}am}SjTYCheubm20~t'r3:_H7M笜YrN:1!-z\MaP}l&pq6*_UYIG~O_KU8FT{t( av"CBf_F;QnqӳB$MU*rg,^GD,IH:7FD Jlk6c']u;& FbFiB"&͙MykUP\M]J~qZ JP$5K?1/,# K:I)DoY:Mg!'S$M }ÊN~$Ū3wm6]r׊sO^ ll 6H{RvBoLg(iZhVd˂]w!r<3H/7CyYN9Y@LceY֖Y $rz2dk`8v1gI1"0k~,c$ tyh2 ^/sv骩m{ TUM~{WÏɿmkUٹ?΅s4a:ZDg;@Vם4`gلw]x/goLvw'vڟڔyK<+Ǟ~NF=ΐ7.'hٖ}t)vSK4Yԉs]kWN-ЯK`~kR-^"9BF%`%5S'$^\o;NKM#_5yr֖ jKgMdn7Y n NlݮmGYN̂09E&WKbK|ĸJﱵWr{ݷkQcZ\2R؛Oۡ_h]Ըy&܈V;~M/׭n߮>_[./m2A qJ{ >L M8Af]'vHTUOμŃ̚u\eAb~u:ynwݥIٸ$j[QV*b 聇nEC*ZɭEo?҃&k=t#=KTrfWQjJN^yٔQW/Oo^rrj;NM4I`0wϚ _ߜ !Iouz#3tzi kjmfL'k ^9uDћVnǼ^߲rn_CSC "6Gi1#W0=p']@8z}Q/ F"̒ &=lFwdF3v1FuDFYV'F`.bNu䡁 Vl|I׀ɷ*~)Z*!+uQvCM/vԂ.qcYs, wDiN6 YrLU߲[crcq5)V!c031;B0ތeG͝UaVNUe (;;|d;_TA"?/}Mi ;]wt7WY㰛nNgh7EB7_RE=SxV5P sm`ržYazRat k_F= dVٿgCj߇%T}[n.Z$Uq:ۛ*<ggnGh (U?.b=Ђ z3ek 4 v^QVJRT+N1Ey D;YC+dNA݇n$9MAyhpJ=^蹭%[ҫ{\r8L^Rڠg8ޥ~ad8U=gP'1.#l =ΑѬzR6np~[EfnG+y|:fE˻~E׶Mʟ]f}jE3qMOϚ{d?]uU?#/;s~򹃫ؚǀK-6B'闘̵Lgcg&=G' }S唩VCIsyRCM)rd7&UC͝w4Nsca7fl]tTwݵFè4ou֍2B>#o7(J~jE(EM-P3/rQQ@Wヌ(QUm)!sG7ꜜZ4 …U lڟpd:Cce's2E;u*'$]" c4} vzyDzɨn4bTF.b4R#P*~6tjtŋdۥy1 W!ןD}glْW_A4R/u|]P Ǯ~:t[94{-.ǀyA0 x6-NMvM$c50ghQ61BnW_us;BEg}\"\aQ=#ͧվv1ŊSY(R.i[9 JdQӜ< 0@BNya)j0Vh2쬄sOeP5>I~1!-A8agjNq^76e/쾇ݳRuԢZ&UEJlpYo<2"_:979f阎.! hI4 RkCjGBu +btQPu/ А1TZ5V:+zp8jy\ST!zru8Y۸$ՅFuFY Tj +[kj`GŦ+yl֦Y닍4R,+h")=U>yV˕!V]Z8G_ jW pH ֬Q6P8=wQ9]W809{z$5p+҃D%ꔒ-R`5CbJihEI@xQ@-Jhnא!7#םY ѣX2MnƔi&#ix2nB~#}2n)Ͱ.woB( Yk"5nG PTF;NQ@(奣$%l7Q?lRPfB!wҤJƝaîGٍJ vKgWOӬL_$ta[!i&M>JLBfR% ۣ6!o "$,J{l2"Qo#BQ'!"# H:. o <9*a$ <1ʔ/- ᪠(J&$ f^o ћ}6,+7 g2.;H\Ұf,-JǒEw\Bwjǎ>fM..klDj.Xv}mW\:5֔jKضV3BS$l&ijDYdIO~q!rW)\3 H.iT2R ˔D'i>-(*Qoc$`g#Aꆘ0ߨn7.>x;w,yc?Ơ36I61q ($,Njwܴtr(yh2l{s\p@ 5H?]JHʽgIhhh{ ef zUs|+DWxst -}"<;p> #?X;$}upȖow/&ν'dޒM-3g֛떤$yIEuR ;5ItБfb{g-:6ާ>k0ڹQs.A,1xBU\tBBA= )~3.{ҍPa~OBP:sQS=:Ufs1KɗM @PsygQ')_@\l`|N16fpp3,Y,wZ1~טOnoy'ǗlfCW?Ot=Kz (UQCdPn.<=y]Sd2KZu{d^&P^ qhEAakFQ7><~̈^=QbyAsX Gr9Aժ` ΕMʆ돱, ,)4KݑYZ?0Jd\;|h~ki?ev宰Kv2)i9Jcj~Uivo V޴ʍX~eCkˆƆKڰZn߹ZXkon퀭:h7ΤG+Ș}I]Sfn"u!`*ئ(E3 M N4jnRXMGs/MtbRS{i+-v aJu3Z/WS9ZK]>Ɵյ68N^~i>v$$&x;ό/nTu _pdR7#ƌ]Kqk^:J1)Ǥ5$2 ;ʗ$X[Z(ޜhJ7*%2E叙#zg{hLK,M#ǤOkdւ nnVZĦپ[ȷkV%ʂ:@S>Զ}S~.vm[kl&żVLsHuvM[2/z9ն.S<#y\6 nGfmȬ@xʃEӻeiwXDv [#:bL_hkm[-NٌEZ~emM%Y뛮%Zbth%:9}6xn.^%,uXF>.1^xoUQO7}\1B,53V̒ׄ'Ōzw67Oi6o_rUqp,1qOi#*n;6F(Ny'+ܣcTq333~xh4[ A=,Oc⋢rx{+=.zfGA=SMϒk߉kѥ1|ug\==j=$rR3, xٰU`B!"LQ Jc@({˯F/43ibM6A >A 0Z( zcdI Q&Z+8LTW& aQ<a"*FS)1^T}uМ5`-q'6nh־ ڻO׬%3<h%rܿe :b VY zlN]6p/oyiOc5xrM{>_ؾv5>9Xruʓ3r0rdet|¶Ld_*5hct,g}Wi\<csp=iv6l۽N8E߹ٿ}aq̈́s+Wߚ DٶD^؉>[DPjq\j3th d[)7rhUW]jiK97 X|/>g],pK4YW_ځ/&-.S0+0:AH4bc7o|~۶FyWub^yV{1 o8S8#(緥~w޹jҢ6ĉ"h0PT u) $`]+E:Eq؎W7jD-7(3uŲ{Ql`Y$OCoɊ= ;h>E3g^tPeNB*ʘ!x % ֙Y}IK %epH ZR ́H+!)ʵ * 1B1ˬB`> &)ç & ),~)|H}ؚ"odA[aO:)禓GwLr(yļCgQ#[UN84~c!yzݰҔZ3;zss.FMؾ1 FSI`A 4QByE軼a"OiPSbnByḰXKG`SVЍC/|WM߫ʪkjv! :|uQ(UϜe׷]N#h<;vU{}fjH%X&? Vu~V~j6A'MYvM!GP۹re紳 Dk/s)kq8vI8#x G,c?;_?!syٯ3ηw>w`||tuP~IhhnE/&jy+ٸuTS6ooOoh-Np8ޗU2$u]v$0$ c ߂ST6hBڭw.ci[ҙ-: g*Khq{FA lW?}'MR~<3.([v 'Tgx4JA]ԧ?21:yAc4Qd8`b4Dlu*l.]&' NY ?_EJOG#yn ^TA/UB {dȎU}xX1r_i}~8b*=^]W*s->KdfgQU(s,ZeM\]2)1 $l!?OnG'o~P]h꙾V'E6Fo/q+Zj z*S`OƁ| MUa{o03g}(骪5J8+5OOWU$# +Z J,2Yin>ŖXp 'E!4l񺻜i S(߁TR_ʠ̈́$^ŊMOwޯ,cӊф惞\I`T)&IX3W Sv$Fݸ{e1fHțaw(Q \9u\Ox7NЍ%hۑ\WTT۪˻UmʂjrS-kU-nE*+g]4u,}뮻mfmsMX9UuuUNGQ>+UUG7O(YA!9ې#I%y\gf6)+{?DC<Ukmb~c|T`ᾮ& >E7"B1;/ ʤA$vBfYtجG_))P@ p7:z3hfa2 :v(^&m胍ɛ7Mi(&+;vv&1S {\ر%W[7mnYm}5qoqQˊc^nBq]dZCG6\i9I/`b}ޥ75!parHٰ) |\n@s؇Ӂfs޿jZV+m#~xd Iq|Y;$`kG^i[يFTX *QlN+xDՑ -ML[J ϧ},i.F,2"BGщ0~IeOÖ[咛o}Ta>ľ/oz>E}ʋ `vz%5QlҥH++l6gSÔ|Bh8ڱt}C_Ꮐ֣*=d[™M{WJfw.a44D o*VVA8sP-Ҟ}A" @"Ȥt0+||E4N Łݓ1 9)*YѶQoP@ J2::b?2Hϴ3Y_nx[b¼Y1-Mҧi.#?\!Бck3Fʷ׌8'חed($lٷYS hC:Sli,ɯ䝂Fi$柌tn_=PpT ;(3V{ID{iEZLI sҢc"3[*8#^NG#c`4cCf4q&E:r@B$=DMRI'04 'yP^?RxS^3Ԡj"!psmhg8G41$G>LxNy8.'RԇG@"LC8S1I.uߣBG?> sj6خ0FƆ{17qDXSJRʳR%FL!sM(~l^0av$.XV]Υt:Jt1"GЏeC7aR.#*fE|[rX\pM[\c3`Z*؇qfPW3f!u61SJrmoXQN[1c_.ʁ 6a<K#QGRs7gc7P߀sޝtos02zr {V{n͕{6>]yTЊX(|'׵h%" ׫{i`./Md!]Ђ[x C9w<XcpKCabP#lmПur8/^W`Mfs (=TA{r \X݃f?8:4gdYc O*EuDmO[, fs 6W X6 b%֢Bۇߕ"l?YkZ&|l !\I8 |`&11P/ IK)){@'ZYhv&g @6` wE&yIIJ9DI=Ab̚|/HuD@& 찇NQz^~y @^,, Q `qq__X(.l{^//T8 c#*bi&OaS l"y$&̲Ds7Pu =j\.Qܑ?҆|rz4ʻ}ǃ ufůsfBQBEv^M94$?8<"<.L3jL(L5FVw߽wpf.p©Mnc^8(Uν>n.Key@{SF׆{`| 737KݒpȕHdQ"p(@dY T cTYK KJ+VOwdC$ZѧtHοn w? &iG, 蛙|шD>yA-@K#Lҗ|sĩi@3@gM/<X6t\_ey̺q*+j/2+&Z=9s{] FlƎp7@Ŭ7G/Ð"^9M4%?}e %Ci*fFii&8{L?pG[mXګ`dl'k&cb5ncd`A0g -X RY< zŽU-̞w' v8 jBXV>גk5`Y TTj,OƧ. fء6;*;ZdNywM" 0ԈKՒ4D=#eLpEH6_-8(uwʫ%S$#0zޓd%NQoc[:@~ƹOqS>P 䬕}Ǐ{"f+wm3;a8Zx 9a>n  f|}XϓѸ?Gc"[yggYQ@z䛒K="aU5v:t op I+' /NAO٠#HzK/ ]^z 1Q80)]h" +_TaU8icm<ǥe}d@ųAc`h9NQS&ݫMXKX~ JЃ͠X)=PԯuM7:u&eVb{u+9denWjdSX 6>A8ozt+$5Fv_iN&,>V2 7>#_f 0ZҬ`>&$+H кeH!oڇևhN+?]¿0Ck~\,?0evgφ cuH`s$%C_V@DbQRUͫYA$|E{Z|uaޡU_CSnn "k ǥESʇ8A 2}桫j >M_dd2/?(Jt5XOwNn r>-|<+> z?=y W~><W䯀\0gj[yc~޷CՀCC<9OE2VnK+gj2*j~y\'oޱL+0+1{iuW7*voܨUjFc=|LƦ~߮e˴P9i̫ˉ~d 9yr }uf**?8?'a"U[/͑zyU@ʙpy=K.۳H+9ې3۽RNgQ l]}g+Dd3E d٠C|="猖D$1K/%cio&5OpFrrre+9Sn*YLID##@ fq 패a#'b}=I\̮' Zh|,=:=(T")F`EEVj,Q|FQ_/a| 2rKbIxX^bI&$Jt2(i]NEWؗ,ޥxVcmpF&+a) z؇d=>>1F_9=!~S`;{L|cpn|U^;-.߄m";aX(Ȑ1|YYz_-^U{3u!C+Hn9d>)Ȯ˵UIͧ@E$*}*~ V9_XAW6Я5DT@BlEM+Քd0X v mRfFu%Tc^*-q)tS9岠G)AojYJ}A8I}JJer(Z`Y~IrXimf)~U(0$(@z)p_\zvOw^9;]WU 5c(? z?ܶg'hNrG]ua!z"!`4yp A72E{\ G9 T2 ftBIQ WsxnRP> #G\(:4QSR 7~F9r@ :bQ&eP3RNZD%&J ~2{@1HrX/SV18cYϷw5m4y /T4"9 |O"u(M(֍nb.e1"r% ӆڠgt }*ݶ7DHBlg]rt9m72Z.T 6kuuN^=ŒBaF_lcY@2n6J Ea (z6id0[\IoھfЅ<jW}qG9aM\WWr!(^k=sF-멜 jH NQkpè],/?nMb=Zdy׻pQ/{B5T)~ +0cы[pkM[J%~uD.7Jwuw:l{ٻp=[amEeĉuB=\,UX簙ŀb\CӴq 倢#ҤZa͍ta[;OgxlLl {]WlwGO܏z a5xsbV3wgug=N~%8wo%q1c>(G3J&iJtX2E4} {ѯDVV"oN`4~[b1BM%CvL|"0-m}Fq$Y";(:jш-P=4]W im+wԀvZ9Zی|d涋]v8Uzxc]NnSz묝-'<ShC5j<Ҕ {=.t(F~>WZYfu3 i7QKT h2 SF}R&U*0, 61*ap2Հ::A/J\``AI _/qZΤoޒWz]aГ2KV@o/,hZ[8FCwЗ<O~pz7Q3;{aN jiZC1jvWqӰ^@ub w+#!δƮ2_Y~t$ّI)s";gZA IeߔZ=FaV;vkuvfe[ϳ}{XOV `^B5 5յvvNNyJ>)M`h3ͮsw׈sR7mKWlXu8wNYok׬?޲<;Y(6.x&U8ǹՓ9G̯/!?C#Fl ndB]]yu? y;x m/1HB D_A//Q!;tB!Ll 1q]ee%]/+ 8{k:|KVUY3i$ambAl]Vjoinݮr.xIA->9XhJf3UVa1s8ٗ7RmDC1/Th&Dc5[O`LoFE &_ugKy%:jz%!W`׌Ot\hԆMKMgZ" H{<ܲh䂥3BNOsimM6W˂͢oab x+@] &m 6bZؑʩ;G_^W"Z-FE/.[XGe#^eY3,1h@$NE `u:i4jAy : ~% |8@0mLtJ<,a ZZQ x7YfK'_6=iV;h vo8?i;ZWdu.;9 _H@X~w+*&V݄0ƳG3y&|fsGjlO8vN_Z?dy1BK:87+UZf{R[$Ґ&w(T5!=.MdnEk2M =2Mt,uEFq7-_ h᢯!ZESQ=w"6xoגyyQ;aZ@dԋc?ڭ% <%]C^%=Dhtw 2}Og+a9g5ԸA~ij]iXcǴXmŕc- kU¢HQ .aQiӍ.nz ~LC}SPaa#Tf-V5K-=?QUqxl#_X ,U{/~|ijQ?iځuo'?<]~dlp@`KysMI8pj 22 A8_;ͪKpAu|Q__nNg)!(NiU~[^T VmCg-V祯̌$eEz h΁v@bap([Ӣ~^՘)8oy#km>-<n~"5 > `,g0}`O1k(O1FN/2+lESs_*3 - D[H |$>h^zN R % xN!+ސ_SRCAp4Xetf+XO\7뮋/FähZ, :oEJRb[ hX`l @6)?llGz0=,El#;BcY[7?6s>9=1, ?䟃"zs`<h\Ȥ?,/gyLIhkh6ҋ;^ ׮}|GioH'anCҧvѻKNuu9/ mBrhSڱtb9y97e4O1 ĺb.yp vY&k[j_8ӟ籺\$%i2NC;q*O<$~J>oIzwm"8#e"L :R4pE\t#)_/9^\-}\_r9*GBpH~}>jƊOf/aAl}ع03wWrKDoSB﹄E;N#iQ"H܅ :33#^bZ=.* t7 /lN3/]#ԊYod/2'a-ra|ƙpg+}C2ٌ,KKK<]`mfkẔ&ˆ-NZhn;]-_TDךNjڢnNO]eOȽP4]}iCS]I_%VuY[ 4doD:9a*XP} 3FU. !nS`9^ik3XWG sJAyx4͢}}4WNIk{+B6c[z=kKLw|c\k)[#^ '?'xP:̚wkyݺ^tZ&gX^Z<4\kr|UrH`4͇ >pklw*iBU ~u㪗K:_m-\bl@jGC1`Y*IbQԟ X=G,=i[:[Y3 fȏgY\.۸EC铞|; FS[Z|QЁ> Y`-tSkESI]Sq ` k:/mդ7);psk~&*.(O^ްoPTQ1j}l~e6w댂NèZU@NfIbb0SB4TVq5H `9;Xed$i8p3!3@7f%St3w(7f*ojB(%&4H x*LTB<qJ7;xĒB1u9hԏ0P7@š!Ov)c?pY"h#^ކV!ю@JI+h Xjȏ3n AVpZC/LU:4qaEaa. `M18@ a)p#`DIqhފո>IP!`6N$Or[FY-aMz-JRƤsjh642@ =?4 yioO.6&@ƪ8 g/"*,vh_.@ku-X+v& N8,s{YkUCӂv#tᬘVf(:fi 46/9-ehtGS&T#h*zDlB J@]BZGzղ2Q\g9Fc6i, 2FV;䝎+ ( S@VL)ݛ%NV :aE(B?M'8iѪp|GA5A{z```]wxBaU&$nunw/E!ltg6tF^`r ΀vMs²=j_/ʷNS\ֶBrgUX49m_C{3 SjҚ=&@ h(6UCZEJ`pj&=`ZJBsŌ aL fɤee2[4_6{A\qڊ % k ^qTUJjZlpUHݖymĠWOY\jY`B xqz0 `4 ?1FQKnEF6Ȏz2zKg,zBy|Dk`t鳲T9 vCh hnBӺi~l/tkck6x֮r(rXc7L)D ElP{W(@*M1G3Q_\UܶeIsP( p[Ym\zipG>6o|vݫȃxHwxIJQ$*c|ZBSʳr_ tB[Q́F&FDǦ ݵ>FF^n4ĻHdZg03LE-6tmYQy[n[uZ]k]O-\JXwP4Qg8vi"3bN ~S QK.B.S(Wb d'~LYR4@lm$/kmȕX_51 isQ u Pf`>yIt/&NK4GK at=K2A≫ l6QK'? ݛR:!+ t³BGw$Iz508;6 ob-b!B6 uٳϢ) )egKY@\͍4VB}f$9zx+C#…{ i<AǜJ=żTgյ4kB(gjt7Lp:d<ÈSo^,齺S v5ku&sQ9QcsFlǜ- EЈ`s5DrYuo{wigamj `Ihf܄vSWzM?6YNB&Cm @SY:hk]һ 0b_c␾_]|Ik:dMZ#kv:##^55ZO]ƬNgcD#5XJxb[ZBPCcHTT 9FXe*:~gbmQ(-D6n]]}o #˧QA?W&Md8qWаcۼIS@.js1 /1 Ņ9l\>$6eb/_SfŲ'{n,8>;lO00-q`@6m5 zԡwգ2ӝX㬞VKuycRT9|b $OmkǤ%̣bgDܣ/</_ʷ_}~PDx5(߿|omC٫gߤ俾 F~VYCN$mk/4U9'(h, 6qpiĢU,i8hxk#9dwz-]|VٲY>rI@ڒ\0׷˷D]}JNJ9 W.h,cи H%,g5Px j̭fvU\hH[m\h5՘;;9i6_Q}֢c&;ڢ19-}>WAb .c)In%UD>,/h021:AJ1{+[{q`)~jocGj1iL b*idS!2}5ca2Zldiˊ9KqsTɴ; ;afTU>%+kbGYjQ,VCj)[eP G<\x՞[]jt=~'} 6*#A8ϭT 2 XbKpDZ(׷e!?x2K-_ȥ 5‚Ap ~Uj,{??Z/go~ڒ[ "m'N:La: hx>,jQ 8;Ѡ;_+BU۴}KPkj6uO{{iI= ?s~^X@,h**#Q԰Q3aXHp)Brk$,1J=$_ߥ9$t0us0(LL>(U3')˲X|bk{.$#{b*M 3R*V.+r?Q~{3FO]j\x _b}*JpPh=->"WT>#БZ: a^a"/9$3yɘHy❕;/)aPp-YVtEzk;KKCm?9 iN_u"iS"bPɦ˿ w:W(x 7(cغDdb Q"!24: nH%Ux;R<4~:wCr\32;^q]9;ʉ4q6{;-g*{tGwGUe{{7f'3Nzhw ahb(Qv,(YZPς sLt??0}s9eqr>rtA/;wS@ʇ*]Nr J=RҵԞguH(-]RR$l^ }{n"<̩'T] Gh=:6'cğ0J1HC1TOk0q)}F?H}wÊہ 4i؟qOm'ێj%#=k3:)%ї¾袺sql&{dܑxMJfW8O  %ET O'%_IhN$tϚ"58>sdO2~$3џ~烌VJLLLdRJjˡ\䰼N1=f21]8GЋARyã[f jSGZ3GZ ] &D g`6Ko$XL ZU}xRy$fsw,J6ؐR( K |FKdUX:4ri8Je~YhO!y΢R>zVtUGVw<0v&7TG8VlƢ!;^8OW/&H#LD90((ѓ? a)Am!L<| ئ%\ÌL4⏕`n?`VWkhb+iŚb%8ti5@/th$pK套sGXh%bɻb/u5K:`Ěcbֈ^:Mžrݹ׶gY5e\pA:K#xs"Nt;f dBC 3vDk/U1ղ9GsX-BC<27ǽ M.EguL͋\yY6{ZbuyE5%.wAP3}Snc ez52QYͫx`բ*'/ΗCi~E'`ciE*&9ҞKA# \:+/c)q!r^={pn7\ݱdq;zkڗ,\Ր9N.N[EZ4w^/<4z29愘+GU=0R= 9#}^)trgrt:".^Q~;3ʪrmNEE@~}Pf\tzMբI`/81iSNMPVv<_aO6)hNv9dyXOJA1`SNF 0d 7`z$ 8g0: aї Z\f0< \oqg~1?8`|l"[nb1 MysB'F~ZbvGN u_f͉kE/˚>6D٘HN T1P>GO6g\=WNeqot#uz:JO')%A]4QWCMR& $%j¢ 7Hl%GmPPF @9sBM\+,u`4cNZ#,U̥.aLQ<4I&ũ1@aWN]P9h^^=T0}\$y'ѾY!aED*nĈ\nE*eS4OpD1Kr2B}qj1Ʀ/T 78KYY&駵lWSJ9=4OG:ٝf+\*Z8Nʢ g^@$|%-ϦWHM VLR:/QJh{8s*dXJ5`j[pk&UYbd`l&LSTr@ tڞ){iEڲZw:0Th &!̀\V`);^L1C|]ߢr.-8eu J|W>RNr 8xA#b+<SfLM6e- !d#_ԚQ&qqPBkA(#ZqƗ!Jpl"1ײkIZVp@?-=6Ss,e:3eZ5R9+7N9InۇםXgCSٮ嫳lmu ,3m9zOPEǰB^rF&B^mc r4sͅj\g1H9T1rFBCZ0JPhwan]bյP5ނGnWgkuʥC?■ͮ |@-^%;x>@5eyAU954mƄWbp\!,GhD" 3! 鄛HT\6H8`9LE5tV\){`{ ꔻ@`N{9瞞ݷv5ٛ:WnYu?={%14*v e\{z?gme&b+hP9B{ OQ,mճU[`l\5zHṽu=`zrX ~UӚ gv^5y#Q(2'}CWKs륊O67Րo6kCD&PS㯳XNoQ5\8<On}թNh f ft+x2mS48vו2 )ѻ$:(Z1FbpB2kYcÐQ+Ꮏn#4wݩ/+kOT=#ʶN= ;33Q @&.֯ɗ/oD{ L=aMM=I;eχ,'d(E5^BK1gՀbAtp7oC/Ҳj8QQޢ>”YnPj.$Qlw[Dž@>|rFR=v?$ksH Lk꿿 N \|D gC ]ݭ~wS$cwT<б|"QDRMcjId*Y N5~wQHպAk3`$0 t1B(_%ZUh*\TzR׋PyRя9h`AsdӬb ဟRX| NjhZ; 'h0{*AZ+ehȦ`<r^PHm˄V}TWkO' #gmkOW.QZQ {p=4A6 Ҙ‹B3?#9Db%>OCxu'@<>W8-{j>9أW9.Yz&omC}s1e5\Z|犩] C-`.* 45K}_.]|[NIwzd 6?rp%K끼5kqAgZ 3g!BE RǕ>Cl)I]{km;sZ=-Cs[֯{l|~󪧭[OVƀ#@Ik<I{wKk[V?ZE?oxtϥA E?PR> Tk lR"7(/CmUe@$8} , a[ҳxq^Q:ZRPjVu t%n2f9ر]7~,Un6c6:gѫ +-.?M&fv߱s#zVwq:꙱m۫۷c$_g)O&&\@bd34n'BX̡1R;q"LN,`/mO䔰m8F0V\6&yhM&t3J0`g@5zzX—#Ն1oԠRڮT}V*yp-"D$ן2pԓ1 8G07Oy#xh(> MswLiw:&mH)yi*F)I$qKwN^~2I6JU`>u0P5mh9vyռ%M|Vεz0cQ[} Уcvg-3 盲^Y)Vؿ娢VԳVBa\Α.ї-&<_60¡0z̈B@} 0gI=FS]+(]` \x\J KRqbN38ʔʗ5 f jA3]֚@ZOjM$%RN Y[wzterZlJYV9q* N&[5L[2<2?Kl*}*g?je܏Id?r `^1}/U߃wyE|k4~ NT~WrZ@ څ _(Z VT%ZZ#X>u㲻^Eo2˽T'v <Ր*`cN-FK+P WAv4?JScF'c73 SRӀ\Q>j2;ⱳIܯ3s:,([.edW=s ~=; !FKl*`DǯP 1I𿐁I Ș,a8pc3X)WW`:5KQy7j$uE|pM5* `lh $J6R/#4*8BݺؖWX.m)R3fa-v4+JP%Fvځ'C78-6F @6aY9_,GoЧͳ%{#QkA6>ohͻ㥌d͟_G蓌/tk `RӍ) |:2r ⯿s<ʖ5E躉]]Zm/xƜO XR\roytX Q]$^Ӎiܠ*nR gf5/C7A5 (1Gu@|,J$4 DIIDmx8=9="zcq2wНvȅ GZ55!_u*ZmߴN3^#7$QLZu%!^A I1)91C|GDM߰A7Y݌:֨n;VBNRSq%yo|&5زgt1cL0o1Cٍe^w>½!6jf4K Gzi dߴL]/y rEF~ӛUQ@߉`1qUwb\L(bY%) ZRlҿ˪0-WiUФIS+_!y]+r=`'tv7{}1{\ǃ$ cϜZ; ;usg,kv۸U߻|ozrPQwGb "]lɵ\{h7{‡{8ֻo=`#vN_2}N$sSz̙Z 6t6@fn:6i!T$" W8=(}mZx}}5hKż{8P޾7yƾ7^:8,B7l{8O<Ĥlt jC`)7a9Jl6C/?4gZ+q+IaɅq&g w.yEZEW~q7 K&*/: ;,woܳeCk57nug͵&շ7ڱf}?uP;o>r;N}ztPu]C<֘јsUۧ. o bo?7gW ,I$Z* !N|˲f<s&|헪m:?^KgzQtc+kx>7n鸧H1L"bN65|#.hd `/0뉚]R>[K R;tHdNkVrh*<;?Gj3 d4 ьi1;^Cg&cP SV9y8xqcn蒳ѡϷ]j^ 閪8w<:ml튵ݳGVt*魏7Ϛq0Jg!=B_Sb>7LS*J&o#'q&]+F.O s!qLCDktK||4cLzbU[)3K!wY޶oXq¾é [?b(\5La乖/{s atq/RˀƓ/=V!疕 rR|BDPxt|߳eg)VA"#^A qF$ڻ"db&B%+ձa6U{nm0YoM}4Ғ|y|*I{6b =} 6d1yݰ=s/}qU|gFOS1 j~;q/^u 5eZXnKDkc`LSUxM֔v)#(&:!P UԤ:ˮ>eKqGe6(ABO3cC~QgTh&*F&ak[:V#UJ5.Ugp+* ¢*f=c(ךW1^4٠.QK wƐetC<(a,zB0V<[M>CwUc:y'܃i9}^< C08C\OPE^1sZR5Hvn}}n6mpb1, P ؊ A1eWv5wǽ# h#/_]ps3:u8ifٟ>0[v۶DY4ag "DR 9KvHR]SPŷzJƛ3в ?X§)VF 1Io0O%eœhyw xA;2ބI>gvz _ap^i5ҕp}ϛwJ9ˉlԔV4W5qH >.{C[|_B>N=^[r9^5bUΙvJڂk|߰8NgNJhJ,JA9*rDx0s{P6_WFjpm8Ϛl#)ku?!ḰГ V{=ӓi3a3 `F`vin`n7< 2n7unhC"$T/^BdG#yYl޼rU 5) 嘭C/YZ,[, rͱZhXqE~Djŗ=kqW[Y$9.v1rqj3܈m7%q\br2:.G!D8<%rըרi^`:X+r:]<cr6 yi䜂?DE;x6@KIhu϶aںqV-6 uU;V3 VZG>E ;B41zb_h {b#g¼ p9t(J8!RY'%saX{D_!"8dr50.&ʷӾ6ې9p:X qw3Ϡhu8eD07D{ s&Byfth sȤ'7VT lL./!”.75^FV= .H*^WR֮,_0.iW]ee+ܸ&wo]MP{(aW80=p\qZkք΁w3V]"Kf EJne*kT7*>q{-ȕ*LnwWXr. ҫ.z=b69bX`-Q @w?qmEp_|#KWW%eB3µ{ҷe(K@ږ ˃K{[@ Ǹys0df Q9)8{!p笯k.U }>}kk׳v@՗.q٥W&oE3C^?C?G[۷={b<}aA uip(uiW2JM_+X  ^]"~ǡ@)<MN=BóM-L!mL!]}c@ж\%:%Ko`**|3*]I˰@uXK {(|I|~_ hq% A_&A%D̠ڍޠ-hCxB>Y3=8:Y7bzS8?%,S/ҋ^$(3HݝH $#BL*f@pO UFٳ \@ݟ e EHquAo=SgDQ.b&.{f׋w Z%0.7s??~u?sȊ 'D;FFEl188:UgFͯ_6m 0cYV7wU֜'706L6rh+FZ|T~8155ipMVOKZ۲s6žbD K읁;!f I5k%fpoZNK$p܉7&x8"~}3c@qL4GK2m L5 TNy#4I <1BD,5X ay$yRcTPYLєP ZWfjzA3*SUs(go.KZ!Jڊ&A 0%Έ-B:)NゝKg u\6߸~-o_wSg+ggC.f$]Hx Ghc n@dV`2]zuܸVJ hsUW+w,WD}nOӤ тf}́Rj5NͧyO8<lH.6N;@{ È^x]8!Dh"=eN 23x,> I$,>扵pB]41+RKH)'!G,~%!z}< A &d!t2B &Jd41Q4yAI@6d=c2/c~{V̢4 WwvÑ@|']_41zJqKOtT)j$4+ӎ0KQ1sm|~2k5oZDnHg 1,:/X9c^k4yUzKqjNo6yu4vg(tN')&]tjJC!SF4!H!C3Ą'$O={bj6iA9CN@qz|jP8uMn˦{n2z$aF/K17~;D1cA2=|ɪx\T>m:Vb̗o}Yn[7}_Yj/c 7N\vu؆-5\ƭI~ĩ /,H]>|xq"vJϠ | .(D߼*+੧R\N?hp;$OUUӁzY&7uj^c`+)4U3ұsX&:tq{,8qd>IML]Z EM1V C9eV H꙾rJ XEE ֣o_rUxv|0'5#GTO|x\.PިDK8ćGKgd,Xo3.A 5 $@k37_ c%ByN;IpMhZUTM6 ;$==<RIR5cX6IQ!3;*j n^JCCYzAHElEz@.Y!ᩡlI%Y@Գ2+^D*ԿV" h2-0e򽻴2.tKUr]Uт@@]bҿk5ԥ-:TB nz҈܄ n"(E.VX䫋\I^X+PM2q2$ E)2(O\"DO}Q :Z B"g[?kDQ3[]Ь,eR*7j w킗ƤwFFP^A}AA=pQdrעļڲ33)wgys&p߷W7z0 D{satD ]3jA%S VW-80{WtNBD[|D`- BU0?1DɠXTFvKR8|dO2iMA9 6ز4OIwI~y~4=:"`h0* 64` F)br#!f"G#jS1s2_F8tr}]Fsu9bW&Se!n%~g!a?FD[&NתM8! !P+:lbmVֶ̯sYD󂼊%tH@`u* za-N2T_⾗+ZR>Y-{=MA<ɭ;S;xށ>\23 ['4'͝y6dF[Ha,rTH*OQW/JUZ<֋puBL!LHQXPu%!]Dkաm[")\0$R.w`бsZ"ebEVŸ]ӭ(8&t{+s^7{lyENK5c5*.J`sZϙmW'|/w;.Ѯx`mi3._#,9bnVw~6(b#0֟dD0Tپ0)H -^L*KlD?t0̹Ep|e ,uO =kv g8b#+6B'G|bLzpӓ ʜ%?ϔO31d~rQ|ϻ~!*LGZ<C-%< 2ɴxXnW<{;dmKQU&!h9W!sDߣ7#w_@ '|Ļ_oPF>K *5D"ђb2x8@ Yx ">!~S&JZ4O>ˑ!ټ;֗ eMkd#+MO#@ *)T=/9NW 1ńA)_$7">sZ̔JSrmXē`;o]5'\G] O3`TD.ķҕ'130#nCXoa.& aH% & )!i-{`D6 P fӌxI;RRw%cÆŒN^^n[^Y օ+p [0-XE=J0#,!1@Q8T #~!?؄~<!vCq_&`f} 󆂭t~5d&{ZpNMWd]iV\WBQFID$#N$5L ]qPXTMjVDIh>d]2tx9>>]rհ"0|fڜ ; ۬n-{w*EXP*sǎpj9V8jhJG;H[K·%';VW9hJ wTOoϢ1Ҿvire/g}}?\cS[ڲڧѭ5^sZ18x3N]3L5i'O݅$ #럍 8\|Տ,t' z"`Հ4,{K};?}͍^ge5r[<4LLuB Н/8ԭkGV$ʗ͒<pX֢c \?SP{zmZhH Zx*RkjJZ;oR%UYOVV*__?M̺vvqRc =80jY3}B-Ӎa{- VTD8h{} e9$![N;#gV[eɲ$WȒle٘blf馛N$@BO@R)0KB A84\KliJl}̛7oDNOŦt^'`HT.MҀF -' =I$ݨPWشY0V3V"ར4h=sF1\U l?|U'EX^*ՓbhV |(S16mZy|^v'`K€ ,,,/_>_G_?)egΌ1(; xϯMϯ}Bh* !(0zOެGvJJ<{cy K1qA| ^t@K9 #72e|:?\}c` G0%S вO?\0=C}%76 OuL:{gp1`]LKXcr,w'cAL /?d${mX3x9OC&~ϜbϞ/N W {C{m߾7[5ƼsO?ӧ,\x]!.gRښY:*doarrs3[{VEy>v[ˡoXM@Z! +VxV4Fxanwud<,>8d7[1j:pBZ~f3B5S~VrnV n# ~0,/x聞?^ԙ3e /]wuow$3gbj4ר7!*FyjgQ;9 ?2~~hўtO:)t='݃==CuY4$[:, tBoEԘLoHMe@-5 ,Bo;{q^̍,f4&vphȻv)"< '*|0Nز0[JnEE.W :LD.D8ߵ?ODPI1Wes烏8bavzigk6~[~΍qD >MfU^OM8Ru6.x~jTAkMgzև:j崉aU3iPRtLUxY`(@|R* EDzgcg@ 'uA`2+,vЋć/ DtUwmKbI"et'&d{bDrRINf$U`>[2ThӌNՅk-z*FO<(:sXv7b2uTt\k.7ǻt(?GC߱7N95Ct%igC̉gS`/@χU0>`;lc(|0v0:Җi#!5a *:0,O <R|MYJ)llj*SnE뇀`ODokͨCb +z%089fx1ÆiaPp_?=/!Uz2,lOZt9@`~mnCNNPf.l/IMlLX\ܗKj)Eu%u*bN c 7kg1(  ;p{1-g1@\2t 7D P4-oo')%z29L5)2<:B&):O¤T]EݶK~M [uN9\[F_)6TVpHtKu4ӬV6_WʧU;(+4%ɤfei^oH$S;C!; 竭>N5)D{ʎ! K} rљyVЌw1Hde;N \DFChWvπw;ty9rӹp \;>#~`)ahZbizYjq;~\lЛS +rjBkoPl )^NA]'ޮh}f"c.!ok岭o<PB{?L'Eԗ D =]*.gJŶ}Bot&& e\E^׭{/NK޽DX9#^4xC_ jK"wCjM{.(,ր+MsQD QcTP^/4y5@^+/'w4} Zsũ"`W% yGIpC0:E?kݺYɎ+ U"5U@SxW.0pKaX}:]zInN6C̦߾uQ'|䘔UVєN=?v7 9l&mONb{#pG^]/ SJVN\*T-@vfVO!h4RhtLaH\d,Ӏ"F'aKDPo(z p=cwd7b]Z8p`"2X:"ŋ׃'H-2s֯{/Ǿh{ThrĐ!CT0b/b  Ԝ[9>(^0atvav؀ńQ1So4Vx E Nln=˜zxϒŒ;ؼѤ$. )_$1(}5$ӊEP۔&~F̩8ޫ`(1E(ѻ&G"T¹|b,i((18W0w#BSGXK{_gS.ф6g?{i֛뷛⥶v=vlTRa dځӖȔ \v힁UU7V͋ *5}$2uC0w҇AåήCvELSY>{4&~MjF %ۇt_O\',}%l)h z%ۺZyIF]݂Շ_'7~U) <2N(;h-Pq]aV%?yyNM َy[{[h1r#}B+:>̮ׅ N " ܖ7Aq0t#I$O*}~TwDE 7^ ٝ#D(%M*6X>$@p^ ") zAG% b>>T^}; OǘQ;c-/ ^#7wVt s&G'*-#צQ%^M'pc"-W+*m9zLԎp힒{ɑ]}}(b0};ax]t[)Q@]gД vÉ7g㮆'fToJfȬ"Rۚ˫DŽ* S?u=95jU!9F9j.4p|P{wΔ"Nz(mW`yخ`ŰKf?~Fm(ȑX0sr6D#P2 ='HBL"-0j0dNG̏rF=/tu?"Ju*/^]2Q.Uԩ\|OYw/^p9ߡ%Ԟv%( -FʋkBeNk=vuP37g, }QįK L Z>:MN⏆/"[I}II}{R…wu R_KnxRFmX`HS]}Gŝ-g(KqAM"qpn 8o|5Rg1:?M N 1a%O0<;,A[w* X '!(=i}&?#^$ ^2)m4sDE|gPb2Dq>n.*?W̸x(Ļ8sDSD<\"53PsA907@R Fq 1xodYХ&]bnʁdbzya(rj~}@8  >>4J.]RRŨ 2*F A6r]eH}KK۔JҡObƆL G hN'%+Sx̒jU,V/}2D5NwY8G,JeAh*c幔‚wޡ.0{DxSfѢ2w$F-:WY\D,oIyךnNI ,i)m#YǪjU-3Y$v%%3ZpV򒲗.#cNf.5 d$C},KSצIX$fX͊DM^uVJ0Rs0=t@kToRZ$bX*eVEWϕ5T0Tnkޑ 7&$2iyThF7ubqey#lR*[)IMk\a#u[N^3VqאnL(v\fTGQI7p=3?קw(snYISMg''gaFmL*1JJ2U,O}}]&k9-Di-%}jS*0XXWb%cRLR)$MNK,NcإUdfI$DĢ*$R fLMMuLձK7)lJehZ%V1՛ ڒS.u4elJ=RSj>rlڮb4%ǎ-Y ]#,EJ ؈]?Sgz-K=:b+ 4A|hFCR("F'ch)= EjjR7﫧W*JoJL2lXBa ar:ZcůM?'-V xn ]mPQY 5eS0 Ư_?^:w.rMP ToܞL"ʛ_b^GS7eZUd lX>ͧAGM1 0Bǖc(B0lEguK Ppl G»vh[!A9v qo9b\#}v@04> B4ZQ)?ݘ:>uX vn(zHE~Jńs(7Pz Xx@?n;E)҃4EJACuJyc>,FuUiZ: ^{P?cYոOBk3Xt5PTErׁn*~)pD M0;bMA폨p[인ւ 4]Lvky4a.YB\UE/5lbK2#M%PJvWθnpk'`@ɴ`iʌPW8Ġl%t %ʌSQ~Vpj*$w^#G1i6}"vw"bzrMZښ]].?+;z##Jz~:vvۻ$31~eݹ+tJG;I mWyؤqk*dƜ^VX_<:7''wtq}aYa#TH 3:#CyVZWjU֕?;AY|.d7R]&ODh<*z@ i݉AwNA%L @vI0c*T.39R[VJЩ,՜bM1WR ߫>EƉN, `õ>U8z/{23Yh확b^āpQ{/RX_߲d8Ȭ6e;зk }B rfq HˠfŬD ζ%,Ĭm ?sx\j\WWUqCS~mlY3M>qs3`ػoSL4.\剶jlu[I77쵥S4m323ȧꑳlg@ ͢؏1W%`T;ω ExCt#8*g30Gx{!w>滢xi$plɣ` ;f7kAfyh3>>GU4VO-HM֌oK<')m? %{[2p;>κK>e}}ڸ0D2`TIHnP(A!6Ƣ2hk}U3Yެșt#d}s|'s|\P_ξGփ$į8;BhQ",Ƙ{ 5k'ZUָߚ8~)A^R--.fGWԋZGE*.FzӘP.$-J}&\VTTnv?a/'n-{4yʐ`ʡ5e9<4eU斕dT U6?AX&튨Řf5?MA6eb$d`t%Qp3`sb3NnMSpU5G [6CnqҀ 0y"U(tK\SR*1S$AW~gSvtQR[ %ZԛgXo3c(|:c(sVl` nHz*_~uzP5X"ݫ~P]#jDy%Kj $-v!F~32ܪQ5`.|ap>nw/y#?X##Jw5( Nx4슩qV^=~R'Ҫe,ҧXM}jJ-)T:אw3rT'x}scFy7k V0\SM(2@u:-YzǮS8W[4;0qƷr6SBIXqLt&t&#M G#&t ڠ470݆IpX2M LuwDo2` %\7߳g ^mlmW)sX7ao`BfbnQ1J)?FT7ѣ;C6XV}EBq:ٗzhW*S/'W I~F,앀 Ud A:ɫ+z:b4'Ŵ؉szkܮ.08q/8kYHE>QvŋgO~aժ bx.쨽'TY&7(w^;[Ս$\0w/6p'">@'w.XHZɋ(jXyc\X{'Dy>z-zxy>xm˔ۜS^O]Ђ{E&``w)+ySL>cua=$+h)V,7RH֯a=U<35@fF9Ni@6݅LDQs-cr졂 z W^׏~чS25$Z}݊#q~d{VF^ުԚYl&'Jk~O V{W|šG&$d]8/vDj&7xҤU떦ʐ3 {W(1O-T}2k@NH:e i|},Nj$}^\X,_+Vr{-sv7d/zkuxC499/%Vϕ4] j3=/#TQcϱͫHBw _Ee^f[џ3 76N3w\"R1v/}}"O{?1 E>9|.mV 40 lK҇k|2A?g`f.}WF\[XQ:J1D~NN*(|C^&@Gj1:;kN\ 0ƅfӨp?$0oGG߽0Cは/zF4X~dIE[.9љwI` 샧'ab$~+/m`.- Qb'͛"+6XJ̓n+fA0H+l_sʴ!-TdؿOdɜiLjNqJɘeO;;%G'o;"),=K ][ g|Mo<< 4/c遷xj~ܱja>txkla^3qniiЗ1MɎH͌و KQj1$ag2g#K|!yeDQLxX{i4{{VNl Ѩr|_IG$iu,N?TW߂bt*xAutAՏ7Ѐ \84dه&I~Xsul0eZ~rsUJkG )2S~mVyn#~chVA+c%YY Z!W1tA1y51+AE8ICo.V3[ '1;Sv2Q:pؽ{/fb/vܽ1l^:fy%6?a2Gy8rmngô0.ׂ~XnjcpD1N70%p{ UWܥ҄oS(آ  v-6=C=s"n"^D͐8'ݿ ڊEBTPAEU!DwUIOep$FZo|놪'܈s!}q"TPd(le+ VW^DlYs:ahI`XkUq&HIR& 5 R r#F-M>/?}DLeJ{L':y!=lgwKsC83jwV˩}. 'v cU Q)I{W-Ly}0W_훰S%  YIV١gD7;;ZX4vhH;n}5>J13U!P3xd}?1mډwER`*A 36?M~hIxY= 28Lq,6h=΅Pt{k0f7?rFR8`vG<ؔk TzgL+VaLwp # &ɼS,Y~>o~3b!wcE. k,)O>e 1z<gT%5" V*1'_nFBQX !I'P!q`3QltStb‚ /<;ɖ?&%yD,eOp8jb> @Tᄊcη歿Zyw~?zEgZsq snݴŖ'2;͹Gz,>#QQ?_bNɆӍivnjj~w`GS^`=O3cM#!ȧtxۄ~.k:D!,茮?:At$6p9*> bi([nϠA#鰺Ih*~[Dqt珓j`my. 7e5/6u_T BXa ?-t :Ufr4RJJoE--j#髳,*v>&$Q?㰗.;Q ]'׬=f͚S' 3rxW˯f8{)VLo0床|`;& ޱ~Riqì^OMNTuG:I.AR(_Mo=pNtMj7#~s&#K( =q0:]pN8DG^>HY4׻]F# ÷,FhLuO'zܴ%*cvvd Elg:1hr35kgFatu~ˆm>џz9qLI)U<gx _ifmљ `.l8 sdg鶍yXWx6ݴ e}ư_("/[0:ӻއ6: l6%P,4 P8u,:N/6Ƿ7.Aߎgd 6{r0x؋LF"\b6(%D"`Fvpg!b` _ J*eK83|q(ԦJ>WR!&)A|r*2H8%ݠJe[|MojP?C[8ra93{cbqo5&0 4%eٳw<<` [S7߇?CӞ̶{"yPn)hAcWzZ*yb.urܚ[%XqᏣ605n'Ny'ND~ ^%s%藂]ML cBuJDO_D~_8;U\W#'soMgC=P9NWǐu0-ת׶Nnk9tz9MF̍("QIS?E@!&O">H@!}Z%? ? qx6rD.L0"*r 8"GO5E7 9?Е)Aֆu)~Q}@l Lrz\'I,\zӷyMڞ0`V+έxFGO_C?ҭm 2h0~|lClq槇L?dnOuD`mptGDVf롷G3H >F`h㖋mpM6\.f/ђE8 :|12ؑ92^ ԍ5k F?pA Иwd< w=6J@l^}SCGmr f%[ϧgi\ [x,ރ u *Ժ0: |WlrJi6}w ,i2ִi& ׈y|[I0C^ymr򑯎i&"Hm$ۖOvyxt)^F( buroQ i7c#RsMav))fDjL(sb&[sdTb1s_7牀:U_UX /ϭXqX@ Й[FAQJq#?)ߺ|V}+-H6aGtSxYq~ㅰVjhW#r#1!w48Q{n/i=( U-zFnU5˖gRqw`c4gej+6C9 ein33Ѭ1[wc⭽ҿˏ^.L\xK1ms\rGU5^4Z!Oѷzh3Φwyeƹ;R=}&z(6It} |ZieݲNˇdKۊ8'slj 9I!R jp%p%HZ޶(hʎҾ~ߗX;;<<4kA`6KTV2^4"?K/AnyܵE!JbG*/JZX?3ҹO;OCBp`D8or[Lf5~V;>QqJD>C\K7]A-aoy@] " ;vsHH'&!zXX5gԞNpCMN14^4xF~Fe21)^p?#fJZRԙ1]顕j3R%i5!̐?B{WJ-sva{> Zi9O?W'+ӼQ J0]zLBVQ= > J}FS*)ƉFZ5˨Vj p4]!n sDs43Q:pӞ# 'N%;g_= .2I_Y-,VH>{LBg6ep;kJW"u.#| ]H(PڰFtoQ,VXSTfAápuN\[;olBMEhZة>g 6 %ؑY$h0ggyX$^TDVÅ b$RrIh;,J>`i9 P*NJ}׌.GBei:㳙CB01Z[-OL|9uG̘1G\~;]kLCSYbz ɪ:QRnNH_X>҇BB),l}U1ƙ[ jV]Ҥ]/?ϝ8i ~%I7モl4Ub5˨5Q7Sߣ;{ȅ0N|v4-]$eq2\Ni%bd.3]@8m@n|7\9+إ29e9?G-n@@RHTlI[RV w=bCA9MVꐗ#bPƝ &bf.A@c5Iؚ =>,/eM|ဌb7dI~ЌӦ^@5p|n`LZAŦ*C}d.y<5PU=kR,5D«2 +g/ G32 S}r .qnƬ(^*pٍ9=\<,Q?"|p)+Fkrxo>.|4߅Ad )S:ƦI|*Έ qGs6;^O~+r.uD 뻐%WCAQTیuրW3egչ+HD))0:&p L Nt~NmyFyOs[ `\ky;h_e0@.ӿx9? f`/Z^}WBHRo7z`@Q4ΆбLwl_7^=t=SUZ7HGqgEGJ}9RcjB=)Ĝl #=v~xqvwoDk(k. @@ºk!}!HZ;wg_8}Vܯpt>׵>x4G;r>p<8"d4\:~FB/PGbfUޓJi8ۆݹuM5|35.axnoX0f1K4?szRG|{GgjCB*:m6H}Wu{ˁ6֒B-yC=Jۼ;&[8ի4|rq^9pH/U`mP<=cxOAX^kC]MIh'P?LqAC`S6ħR_h fA tL2jXBZ`͘piDlJALxfˮѺԘUА1 3CO9Ka|{۾Tz%E"˫T*7Cxvi2Vd9'a=zˣVIxF:x- i !p;m/Yp|x(~B%W~FA)1S~?E4=KR0j*^FR0*9GHg PR ArX㲁xk ҽ쯎[q-E%C!P L4"zڲ\̛_L#e"քDWTSҁP)ǥ `Uo~گ9,O`g ^O&WK50<0Ħ]oGp + *HEL b5pdL_RӥJ`wDcCl  n%-u'w8_iJqXl0kD>%K>gg^Қ(a 󬬔H΂l#*~)e,3L],.p`v:W62|]ţ^J+qXrJŰ/ab `ݰZ|tyֵB׭Tupm_%mzcNE(OD}˹ 8%ٛ /VaMr8NJ ,3R,w_V^Xk a'VZ,CL{TpU"2vh{^scS*1b#OQCmxf.{@(*Fz孷A6/Vfp'wG`)gI %[ ?hN}Do.ۇ̡cܴm}J'cy *2u=/6uX8hk lleTŏP7h:xXhxQƯKh :a׈~RF% 6.x0Fsu.VltOa.`Epv:VvqdE&;HpYs`Pk3$7LXʎ&x9ݾJR35\zMphg>0[Ġ[JNMyFYԏO fNȼ믨Zwb!;;kԜ9_]Բ?RpD,V]Zn 6yA;SkWi` @]!teKm&N̈ tpT ڄ?D!~mR+u& Z9"O "FBM&A J&PDzP_N"ce`:PK'  `. c YDDg:1JjrQU yH"6_zH7c aO2is+szDm^uK~ I\J lذSG8ӧQW}{Jޠ9Q-ry!pF}FKA P}%#2mW2cMK~??X͈gf63F{/CxU~hx_D0 D/(g[~=jGօFtZ.;NX8)˞93DkkpHα6A #}w{{Nޚ@gDvYv,[a%ģ5 ;nPs;sZ(xpѐ+ uG4߇s>=%s8Vo~Q:Ot?5'f=tgt%_4-9 \GpOϒE7s0HuLcW@BT]nyKfm-1V|u+fÏ'76g#wv7 /F)ˇ/Nw'gH\Ǩ^_9]>3OPh4\JnxIA4]:2p97i4TzYSFMa,qXKAJ9%+dDFرDBFt(LF_2du"ၝE9*D\5A5ЌoaZwmۛF^wLꛆScX6K+5gffgUߛvKsn1Qδƚ*L'S]+ ~)WOK%W '-3 YP- VhU<įV-"aO_*}3nȽ]\g=tr ?|[s*Z9 7ݶwͥp|xbhd}-P*vsӋ+I4dʢ|ciS;<|ʊ}帤F9}4d^v dy֨A2 -d8ߒS80DeDo[Ā=9io4gpìi5߾L^d)LX&s7tsX5KIՃ<7seajEo9'F^1# L9>kGYܝf^LMR_gSduvmySgOOgr[SFL8JFQx u6ʆez>z7Ʊ1ɰ]5CքяҡLؤMf)7&\ Cʓ'kyD=X!.MXuutpsر^oS*qT8l{%zT TOmػj:D.[>*VRnBU~Q{ڞy&W(Z ɮvk: (R,P( 5\T:%E5 k2U::fgR޳!Гd8m/St=Z `I;BVUafte 0)/p!cUJƧ7ŀ=d!]3iu+*4ƀ3s$\(Rg EmpX7yLCZQgin^Rvzi{U{|*͖::+wiEHaWq9UuOQQ=>mLi\@WicUu`̶V^eL?UITch|58rTVRmSTQ+Ř~cՎ%p"覫!VS`D/\d߄[ Vy!UEd…[[Fص¨ACV<4m,i)C;wf\Nr+K\ ֊lmN}W͠޸0Ӯra#2uSǼT!z؊?n+ks~WV_Ww>ҁɅRSI?;|Tɢqj5"#k U++A14rFty+INy0MYcXpdW>q++Zbmbilˊ]m`A Z^Lޒ|Xb"ku~pt8Bfx>[&cf0{ ]3 ̟y~&H3P|m][`7TGYrfn,kfx/oK_ *{t@2#g=/{Lg5S?(lK?òc!_03 γ%  ɰRO׎- Sm r;< ɪ)1Xɫl ̊%"a  ΘG՞v'bXZȝ܉l fm"&}GPX9{ΰ&ߐRasfW1^|q4t؍Dӻ'w'wTREdji}GU7c..}!.zsEmj1ݐ=0Z,SqK+J,q&ʹV )A{07Ы.B,=1ydq޼΅mIƣ*? 2|*0VB'G!$hBVa{(HeRzq#.Ob{o2E+RGqaaalZRJ-[~[ٗV-Tl"C",zw0gѬJƩ7+fg<Džo*pRGoҟ&%c^~[$[⑩.wػ<Gwąu  aDZ.n&EuFC~L_3ϐv5䙾/\! ̫zBkhy8! GJR^ό*_4>Sk6 A \6nLz#UCر-Wwa HII? 2Pj&%v sh1[M ћr%݈$wHd~A7ś? WaºG~*|M^nYRo^zzj=#[ۀC^WbHRo0 sdy46~ZC7{Ɨsݳǟn 8d]IU֝{6NJgnys]7,m9F7 |s湟3i/峹7fe 6ʏz&1>+aK;i c*kپm۞Ρѕs0HzBτ =gWVOR>#9~Vs#y nIUMR<}H$ո6K.^P}M̓XO__ ,!0rI]^H@Ld\LӤ)5mbIV-ZP+B35p%oNਟqoD 6q+uVhYᔅёBVӊ*b Kh.8̲6_^ddyԠԘ]B"ђ),i37ܿM:_i~X@,-Ѭ,}pa<2 8<|{ޝʰ~Ő;,j^-@d.=4cj u V%]8})Ϸ$'*K X1l8HH̛J41E!gy,U=U=M5账zGV!=G?l^3B_nevMIYdkۖg5:ñlfpl\C l;>mJ_$\?7wj=zŊq }Lx {oFQ.j.ZM]ImnvQ{eW`el|cΑJJbLsIR0)- ;UM*C*.T]< z]ʗu@VޗSޕ53J'Grd ),ꁪaWwiְ] "Fs-aאbJ:Dr1I'.J ]-[|:j6"yFvju/cYx|P/Aޡ\(.]VH!O6qrqGvX?$K q3̘&丣߹|d:dnI&.BZzb@ &[1㹞~_OG>բh^Q|w4]`]w`増s^toǿLψu)VBlNux$V 6}yqc<$^GVM)$Ue_y[ń$`xK)J_Sn@6zD霘1-=F]` P{7>0!Mzm)?7?yi XyUUêVl9U5Qy,4(/5\}?o&,{w)3]:~@}.m@k&^I'%ŏqi%O(5LA١zjq ~q U@JX g[_REJrbrֿ|v e4LECލf ?_^r9-R7~'rfna@S4S`@4z9 Me`(x$ [vrQ p AW_v.L1@!Cd/;)̡X?x{;T?Vvavՠ8mrqFߦt>_A?P5(~N{'\:o_\zʬc<% }[J5<< _yR6$kj~FLtɦqNDrÄ{ x!E:0r D8ҡhWaY[pq.pQrFv: :&!=QΊPXǠ&e":آ}0hԺA oU{6:+D޷32-my,ͿH[>`PPtQZ8f :gA QV*)Bȃ&1^o)* kVy,Z/XV˸EJ?mN+gjGlч| }kC_s&`4l-B!W;ZmH5ƿ+qJ(l9@ gQY9O2]:jXڠUPRbTyq[T|,1%g2WZBbhuaI,{bA1٪DP놜z|$X>tBwʞNjaNn6~, KڠuXh}y=HЂh$ATgwLa엪͏1axr Jt<&5Q)`6/4M%gooj, Z cMZpLh֩gGdWa75Ł"֨VFm :jYhڴi6͛q4eMݰn1Bt\T1Ux;$1HkhbĄЏH 1S[.s Kګd:IJ, ~~=8pӬٻddx &%b(Ns ZFsE=Xx-9FTx ʡ6usJnԬ xO*(^Ffа4JH۷}wI@-mR硢',(1&^D +1/J_i^F"5P0c#ۜzw/]=s@+ܳ<4-#Hw4fEEixk!+T- m5_Vq&[A)fӆ5,(>,_mW` Ђv9t͛ Eos84*O{lӧo LjF/x^ý^&SP8>A&::ف V7C3!D6d!X|y:E_%7gk]&TmcVO#P_3k*"_/o>| 1r'X>ҧ/%Hyӳ>Zj4һT@hnu/~LyCaaU4Wi@~dyGZqi$ݥ9pC@&sr<>K1ѿK;JD,~t&@84 -9Z.n}:Εz#dh! ǥkO[:!]Y) tdOrrvP2+2*TEڄUjPBwKΘ =|Ǥ<3n魠*ڿfMhsX>WgON'$u7tAұAqh͌̇D0'*&40< BXFFV}oq|߻Gg^äkשGNrJws`ϏUL:J^ ck@ }ߓM$?t^"YSN[yļ+]p}LFY>HCAqpyM?x MzA >Dm7r)y蒾V͍l1ύ"wm_\s ɬ?=OMfR5UC ԫ{GeHa[y =sD RUW%Rd1'=uR(/_ 9ַܺI "%;0ݎb+MG`p\ {?sX΁RKV7M3y> sh)wdc yt\̌m7x5~ngl4mp‰Ѩ!k ԣIdBG4CBs5COYbjo۰8=vMa./lnMqfJ,ias2`0:{Y),fs~vAt T12?+E1VhcO=B@U Xy$c9h hׂU ׇL_CAkHq> yJ--?I'<TJ#2v$d1h0 Y!}=nbJ0dN݊Tl_9V9Jkm{\n.ӡ>AB0fsfX |,c:k;u>CvFގsZLWT xc`d```a<=|EdՓg_(ETu=O'{?Law]+tw^nD.}kzՇ 쯍U}ɩo9:΋;FШO;XSB[xe#2UoاC??✼ 9Xz{w> O3E*De[=픖wE:seI5oÞR݇G=SBPs|W+Ⱥ }[0l]1V~ٴFoMr;'O^gLyhol7/ӌrq3}=vCCHF=ǡv @ilr.r4CүVldV¬L[eN0WԿoϓiosWwz:zQYY3RyK >?+#B|Jzj6]@UD-Pv>n໌u;WOMeFYг\l@*!u?'m '18 >wCÚ\fMc}~5lmo,.}Yr[Kf\yBGyoC[ |EE@ \}d<z/ |x{TgN.iBdb!3iMe$׹4M='4ri!e}Nҿ1H6dHAT8T* HGJ%K^ 2 RYHYRyr*УBTq"(*ѯTDSTuT-Iz jpE/N:R]ɕW gKnl7wSGG{oxDJ=é =Ż7,5w0@N386C&9^5;J-H~i >j^+zOPu//wR+=q v@GSLLgr _:KຈLzK[w˘Yu:sGXK˟Qt8;*3 s3=6(T~G77L4YCٜ9񜋮z]%q  ϖ1TeWe}(=drwsoWse \迎$H} nEc2pϘoKS }woZ{/o?9w*z % އaa/G|wywᘋɀu}є<m󐼇O~p)>kyg{ü,Ǜuβ(MxjAƿݤMk`RADݴ7?MhbW6;I&avk_@+@Uo'cBMH7g<dE ,p?-QvZ^SJr /gp}oyw/xGY:wLƜle>[.1[.bq- uyזK輵mwfyx~bbЇ1BL IvQ K^Ik&LŽD0fb`0(JfRMdDI/DK1Z`*tMƬ d.do<UڨUڴMr;gzpXmk'F}FUF]=j;௲Ki"bD.xB$dy&_jQ>º\ՒO-9"ZmWj\DI滎SidIΩ+Щ})dG»2']ZJZrl$;2VznM"L4R+_ ek=~^^8D9yWy1E& ϋx}WtȲuUb'X̔ؖ,O`ݶ5- 0̏1}̰Ls~N$ݾ}oW))L?nJ].ucԭRn4d 90 X ư l l [ְ `{v`gv`w`o1P `8`8VL ¡pGp p'p pgp Pzj4Fj-hClX ]p}p5C!D0· B.KR .+J kZF n[V n;N {^AxGQx 'Ix gYxEx ^WUx3 o;.x7 !0 $| > "_/W5:| ߂ow=>~?O39~ _o~?Ÿ+ ¿/0bp XaQ\qčpc7psĭpk߄v=;N3n;{^7c XAMN~?Ax0p qgP< #H< cX<D<):xgxX:6 [ڸ`袇kCpqq-x^x^Wx^x^7xތxގwxލxޏ>>O>>/f| ߆ow;]n|߇Ca| ?ŏI~? E|_ƯWku~w{}?ƟOgso ?/W?_JQ2i TaQZFihcڄ6hsڂhkچDv=@;N3Bn;A{^7CST!LM~?@At0BhifP:#H:cX:D:NST:N3L:Φs\ydQ$E-jSlZM]rG}rɣ5S@!E4G@Χ B.KR.+JkZFn[Vn;N{^AzGQz'IzgYzEz^WcAv#(ot?StZ~Ayb: nN/vj DUϝS۫|\QHn vr3ot<ϦjCҾk5| lIuw9ba G10竖N^O踍nXouܾ sTSM!ˮnSV\ShKѳn~mX=[ڡ؍bZGNXv3Y_sT+N _L:>WGAhӲo{ NwG[VCɩrs#_e=oNgy5YVS&ufLD T^n5iY|^~Hˡgs;'MI#I3>+7A:p}=[|y-N*y.orJqQYX;(Ck8>koqDWpd5E=qunk 6t$z"cÎ|١(S cJ)0.Geɔq:-# $ Y=f f-YVtyXKhQ]ԗH e_`~(5TAFֱQijhr&|`DC {nA9YH61G&Ύm/% iźAJcO wtCŗ^l4b&ψ8WV/g|%%Y]%Ԯ{M>ɏ63Y 8Tcx7V.M\7r8G 6CpWlЋcS\Ha /r6z#^`ޑ5,Q!^ߴ]&h#*ZL>K,GҧK\w>5]-2䖠qRs#?Xb9Vq-ˎJK! <= "4sύ=qWv/TKkXedI$9GM7\@&SJ5H⁚+C%)RVU)&E}Uc|8L h,]M hR@dVui(KQIf)EU )4>&<и+RRb\kӵJ+ $J+ $0, ʂ( gu!в1tmZ&akEX+V4tV !6dZC@ 2dȐ0a zhL@fϻ?PUTTPUT*4US^nHKhĄ EE|Q_TEE|QĤ &!L bnb܊BLa)$EYU)&)K2!0XKb C,a IIHJ3bC` 1!f0 3bC` _FYeA!0ʂ" DzC7DzC7DzC7*0!!!!!!! LA)S,z.sK"!UAT!"!"!"!"!"!"!"!"1)DC"JU۴41kƙ")қ:& ]2XbB 3Kooooooooof)Uzu]uYzRWzB׃VzJӺlROi);y4ҼSwJNi);y4ҼSWҴּӚwZNki;y5ּӚwZNkiͫckIҌѼ3WGؒ;yg4Ѽ3wFhY;yg5ռwVΊS&5&դtVj prewikka-5.2.0/prewikka/htdocs/fonts/fontawesome-webfont.woff20000644000000000000000000022655013726165107024503 0ustar rootroot00000000000000wOF2-h -?FFTM `r (X6$p  u[R rGa* '=:&=r* ]tEn1F@|fm`$ؑ@d[BQ$([U<+(@P5`>P;(1lhԨ)YyJi|%ہ^G3nڕ ͐Dp\Yr LPt)6R^"S L~YRCXR 4Fy\[7n|s໌qM%K.ۺ, Lt'M,c+bׇOs^$z.mŠ h&gbv'6:smb1بm0"ǂ*Vc$,0ATPT1< ;`'H?sΩ:NDI$T[b4,μ」bl6 ILi}ی&4m,'#ץRwbu,K vm_-\HHH?m 9P)9J$ƽ8~;rn=$Nddn!';8'N!-Jʶ.X= ,"`: {K!'-FH #$~Z_N5VU8Fȯ%Pݫ Cp$Qrʽkk3ٷ:R%2{ީh%)8 ILK6v#,;Ц6N2hv OOt#xTBfq^#?{5bI%-WZbA ^1n5צNQY'S!t" `b3%35fv;lά9:jgf?grpx | $ eZ($w(ZrSv+ZqMݙm?&s[tSSj9?| >G,bDշ^^:l3NA`5 26LpS Aߧ/U ֘'9\Նt!l PMR9n `(@ Hy)MdM 5ԤH'ґmSuo9 1 tØuc@]KRbNv("y뽻{ cscz&p5,jn kN!.n^Uu@|?v>rUaHR ՑI DˋQ~p ܍;;nL$t : hFCYTOFNN~}1"`a(?H \u0LԵ'͔PbnmOJl?s0,8xBBF_RiZ~e#jwhOc*&F6 Yq{}?>u.4h%g`& )R5H}ˤkܩ'JOI_qOb'HǟBYEM6v5NJ ONF Nx(1:\߫Ckcb8Q d[L(el+2u-a֘d5;N$"HSFo2i"\h7IfN8qx#v 6um `NM-J\FrDZ0#'ꥈnGjLچXʌAgYs*Y^ٵ;"$hb=ϛ0vH-.D܎Yd +^{Cm,@N<.VMS+\D+R|6 'q\T9DX<$p"酦$ҷ ,psTbNkI_` FWV%w~DԐ*xiy[rZ[S%Gs`F<ㅣ V+!+؍9ykfb82s}l;[)e$Tk)v9{uut޳@E>|C<\4%Rv @׺C8\~)#k|.ao00Gq0%hp L"+>% ^MˊNsq=䦆K4r-*%h#%;pP馔hC= &)baKL@t!~2S]rYlZ63ўJoOV;h&gO5RT/}{AZ&St ͯPC0D,pbpзz) ]I>Q\Bl"^3R>r*C>xPUz}Y=̕}ж 6-`/"H o&DI0E2Xa-{5< ,}``6jiim'w5RF,ч%SYWh6L_i샣=i13YI7NCpIĔ(r0{jrKТo)l3naT1\IE(m߃Dle$ÅwXU(@Ma"n,*vG̨x>G Sg̉"Qvb0*zPEyɉ?7$ %GpdY&f!a6|);u7#34mJij oOpȁv8jx(K/ZdxŃm7V_\fL7 pXzH7-,(1KHbe,r-pL3=T2t2ټXk:Z5spSsT:.]D"@-Ȇ!A2ɶ-F}˒2BǃQ)tç|#4|\㨀`fc,#g1:-ty ]2Z~.)nj%RK(y`8C֍zK-N `^+n3ϴT3tQأ4<>:J0È%ݑZab`vͬaT/ZaޝГIi W1_>)H"p |7mF^Z~f0J^I3V!{<+OeB#BcjL\-Zh[I<qv~k]GTD?S/-%ݒ7 wi|CIqwcWx /7xHO/o]G]y߃#7b$tR$ ]a7FѮ,n!rI|28x6gSh R^^D.xMMS?漞'G#~+v4d!FyT9-fVa7hB4,2Ɖ&vTHMqp4?R\Xa<4@MiHD_ EgRyMlTؠJݮ yc"HJ, 6u/ڴyVnJn۟H\PRBd|4_$k.w™IpS$|}j9m|1ߘn9395qS|xW9BVZ!mK/Ln;iu$*t3Ͷ@}B{Yԑz2Ju@a\MR7odze7/$4]^2kh$=%1IB؃ H|N.[M\ Lb1Mg:NV._0,+,ht7l8s~IV^ N˼Mؑjك- oܮůQo[mj=rm>~z4$M}z sh""u7V{RûݦO-D9V٥gIʎKLg۶BTP'K̦ qW֒3ep&ےLhpNaS w &;e(,-7vx-w$WnXUt8Y?KMctY؃p*Շ-БfL|[nL }4{5頠3᧌ n$$,+DNԄ-HV>HOs\-;W6NM8Fi;7k26%֒a],:!ʲڽE,{U nawNg.I9r:jFbKΨf)*cG5-kb6UЩpZMO`$WDyA߻[4aJ?fD?=d(KD䴱:D/[#$A #KH.:x?%Vr@[B$}coS6`LPfM&ɔA<:vÚ Q~Pw[+`+j V+R*ul!|+'KY66_ud}_[yuۘjo$Y=yjRi)bԋLaD(XUwIڻZ$7ڻ9&4Z'DF[N]~dD?VQWͲ}vS>Nm+SqHaU!ΒWb_+UO]^l59 @1'A^mo:9ףs-N:tD-zkSja4rczFۻ ޿xv7[äC8#7p5+ ~*bJJYzֳw+-p/LL[cgnlcaPHF$}9`\ 83Ym1b>~ƽJ؂ϏyBs="f(zKM"H`wcEd:b86(9<clݘ/kg G^ESE)5G_^k߇ v̚}T3;6 WvTCP_k._eєNJL{T!6j>h0 #[㗚Kz,!32:6d>himE\=H Z+{6@Wʯ&lC',rX !8(\̭2-P8h@C4 <~Z7j%) eeFpZ'15 ^6B3nco#~²qR@!ա z^Ks]T@TNT ,S*@7CīɅLiQN, #:RѪj91-YPN¿\&yL8ӹ&0cvƉ\JA;Q;]IM8 sMf?԰Irr!K9я8p}Q콍g-*sm~XP0dM^?DdIm8eCN}cà٭$s7ۼ#յR{b4vMql)vOճjְr1f4cs_%v%lKZNi+V3'~NMG@HBb+vVFq@ݱuKZhp@E0uaSXdUK}ԯ8GXKiI% uR)EI-ږ8|1GΞf6Ȁ=!KF6Qf[X~_j\^͋^k`DsG]~㤛yo};+i%N}Q0ԥUu)M[Z`"7 ?/[C{l)$Mr|^ a:"֊a l>hya{2>CPL j?ntg]S{UӇ('b'fg0ӃLPAMtd)2úY!v&`o2P[ aޔ5 S|#+7J #ȸ_dU6#VDB"K|)otkl,lU)ݹe5OyUAt2_ n53e*1v(K_HvVʉ3},ACUƍ؂Cuti-]`7]R !zsNt&̉̄k)SL̹y7$ϥDJNd"9 31 IZ(^( lw6 /@YB^}OT~9cc]{)}D8${yc,ʤ{tAW3zHImD4ܤUT3dID) I۬.d~[ -K^2Zc 8u,Y^\_ԁ_+cJ$\2:ZW bBw=[1'NYVz4;(fzNUf(p֙!x#L=#ŋThnba˳",T\o!@@sN%| tXj j Qo5oeF)o 9˷:h*'cJ孏[{ȄNfnz]8F/|1v g@J:YնNu:dhHo tM`R̍Ri:|N_P"B@ m`a:M  c2Ũ<ؓUOS\%a\Ap ꄯe\A.̰{wǿ~6 ;s2ŋ`W`TyPgee0 00}/ǔ;h[tGD5^E#hȍ:f? u3z0ڎ$T^TAhz x I{5'rK zo l֢,b89-:G|W)bA5G<*ٕ:ğ!]gj~O&UN뢹8 g ]-WW(WNI3Ngr3|m m'=[n힬M,?$HDD-O?5uX]˓37>*wg?*!JyT@ UgzI_7&\tH.YZ(4Y'd T Fs-qya7 [67K&J/$c/x[ᶏ;Īz1Fv]G'ڏQBSOІ$y(TS-;hűzT%Dts"=gwUuD?b$Zr9G<&Ña^2_Be;b~փ)Ό2j r8]'7 bChTd )+ mD).51-|Yy*oڤL 4A她= T@|X$in.KI|R@P@P*ak@ ۟=I =l[ג"hX0QҜf˒펖c<#9`|cO}$o>eX<`,o_K3 p{YAn[9M T(!"?Z]iEm Ğ>'{Gt *~y`'A?٘#)o($ȉەLvYO1o_& .mv!*)$zmrt(:GGbeVwi$CO1 cZZ0G 7z@Jy~p)g,gYL.$, -<k{yc*02/q1gKM&R<7xCy[Mʛ #ͺDya3\wfwrFĸM] \NsWݍd<ӡW064tȴvȻ0>ԯ ; )f#* 2<h ~'Bw mH/wqMog C)̵67#BS>_-[L|RRlQ}\TH) 9Fa"^bA:ݳQ4' =sO '@.Y&8z ,i73y;U}p/I  xVxilFZfhXc.b B*|&|ge/kuv\_Hb dpG/A}㬬'xȜՋ;E !Wj{ZI$z{Op;x=׺q{5l23O =@jj# GYTn>&ެ#CBϩzLuylSaa0LTv3,2 sdTrU}El1z`Xa*h{qiuU\"Lд@TXRUFg]sE5V0X/ukzB'كJx Iz7YΕ1tyΚ_}|xm[xJ}zlDVrcsdsqv[&`oUl?<jC! OeqB=J\`Lr孈d1MhowѹKiģd*;^ҋ$xHUU`]GkCꆂOQSCwo g~yG8P{{H.$6!}d4,q>`llUMBRPe2A1RHqlBQ$W%bhBÚV@(?FAQ}dl+bNIMdT"+ƌo0`89\|5 ޣئ(y jqm(<\G 2dTP0$n@ Ē!X 㺕Nkճxikiݝͨћ"0?^2XF,{sr_e@Vyg N_iwq;XED\b1G(RsT<\ډQ2tT ; `[,AkKbDl#b8,]i\|kCxLq~r Ά>|žBab?aag30( j"FA*{ߣd]ř+XHzs ZSLu:˅)ҲnJEBnS>Ħ mh,RT~}9, /.H~!`ExOۖ mwIl꧴ёUzzk**|m* .?~ chp?eY]*H|̛1e?V; ا 2PQVlW6m5O3'^x,ҹa)TeUs10ft9T{!L@OLtǽ!^L!ti ^:CR K ?2TYx۩Fq#0 <hѭ)kesaTl x9d%+b8XZ ;gv8 n7ϻa&^ob{w OO7jϯزΞ,~WYػqÎzVoλg'5("ե AӃ[:P|Ӓ+>#2?$MndueSJ%e؞~Uq ޳҈zRnп,7˱>` /uFgOg)PJ\)Xk VF"\tr#wE]s:Y#n8 Lm"6D VġH`Q ௢үQkG ]<2N?U &|a_G܏}di!:`Ⱦ[\,Y]JϹߐì~OA%> ]2Pl5pOѐ[ʀ4O@¡,Ҭ-,4X7-#?3{M·C18aY)M"ka_=4JqM?nh6kɜP  2;3 g4ՍZЦөGZk(m pv riZF}i:/czPuVQ9E&'/ v<2ۊYQ)j.HN11sʗ؋{ '|klT%1ꪋCgQUJ['Uֶ̝ؔ{81 rnҹ} :,й6X7fe' NM2p|4p6Vn듁p&S=[- ߞ~NjIY/c`YAq6-Y30#V~hsEPT;ub6WD#N1o>)ΘCx4$/jl1 y./,Rr[YE*GЕKm/|7 SISƗqF㍹6:cVs @w+k1caíw0 :Y5Q" +g"%*2t`Gݴ f:hN33^~yө)o)l*H-;+|+[-ZGXf~Meb75[ Ho}pi8;`$7~Yw4RypJs}!*Yf~W]TKV0Fyl$"\AE?W ,[b0q.|xZ/ˁ]P*4$*(R7L&`goTܑ.$V̇hULHnei_"o߁e*mbD2u{ݹш ߶\ؿZDܚ vz1UlRl-wk2VxՑ;؀400=ԑx~޽ګ o2RmԔ=_rZ&ן/߸([C{%b[f.\l$}VچU*B3lRPf d'GLc[dN %C9X5h _ cҠW?+`ރχ#CBW'B~cb 5~}`AE((r{2me5 t>`vd, p*=ϕƼ' o$ݥ;f`̢tɟJ$HZKԊk+LmR21,qF p̹-J%b=gV^y~׼0~-Pת{ƛB2XZ?oG!xn.}%}Oo _?bJNv$bl;z`&Kx^]"d+g eI2 B#(ijNN>SwF W |b WoW^\q?1>BL/=iR,cykWZ)BUkjy4XK, 3 F9pKuշ q@OAvyG4.,m#D"^ѣ8lQZ1C\4oJܨ힊dD6h[|L]V~.:0z*HX,Ͽ7zUQNe.7$:.0֣Mj9g {2ڬCO墸N٘@.W1Dz[[M%V5r!4&Ur s7%yNJ(?nYm"TCMmr.ݴ{bSNT]*}v`1^HvNoUۆAS6WOىe [(B͝to1bϫZH{~N}Vˋٹo<>#oTFD"%73.(?f]`!1%UqL:蜧ϸ|@8'+VWu۠0 } +T/Qnl~c{pa=V:#vm~1t 0SPH]/jg/!{/c jh[=U@ʍqIg6Mmq%Y8dc`"Xt>"{riPO?0=/9FnV}OY[՜"I {GEz `)ӇrOoKY꺧S4;L'>cN@8 ʋ{삕zb8_xV(X"]ΔěM6w,fgf+͜)TJUt> -]z}o*mGŶ1S<۵&:QzHjljL F,aY"'LˬɴbJp{6իh]m E= ~fFvE`EWinux8!GVY??7K^+[2%_mwsZMZ?vl9fO {,'9/} T}6VzôvU[dT,_uVE+B:xaY.L4rP1"nj[)Xs54 4sS6 {(,kW :Dm3/ T*z'1o'3ow|Ћ=Y< aDm?F_Y3f^Lff'@&M7F0{GTB/fzqc].L.In^Wk(hc!Ȝ|%?%\6Qn*0''Whĩ=ŝLCgR񛙌9V玫؛AӚTQyč&i٣hQJ,#|d驺z|yYH{FI%ORD&k' (kͷ_uXT4JotǠ`X l/-ԩ TBIjԛ/ Jn0,ħXBUHhFe% 6% /:&zLldKT ^Gv͊SA4:DIʯ< !.1?nTzhԓ尵 ZBCnI~+sm8T=f!c(KHSH7!LS.D4$~]ٴaGsiK7"dϸ}|{ܰQ7r-ŷzRaV]v4t2-讨YDیS@%_B(FHke%&5='jF,GoW9;(ڤX3z`fM<~1bR6t0luFIj˯JoIqĴ(cǘU@Ѣ#e&Vy( {̧KuWKeZ ^>(wDI߹}x ƺ5gYG22& sσ!q\ CP%U fbS'HLbi,sF67߼D g̣oGa)jS-&>7yCCΖi]MR A0 KfF=z ggtf7Kx [ L^.[ԭ>Zc736c͗qw*CCV<])E9)ϛ0lSM.$bASHib%zqݓV޷ʀ7+8{ \HAZ#[80* r[-swnxP+HElY./k6wKb?88GI. ur޼l9Eiޜ`"ƃȇ˺&vIբu*J\[^enQ%j ?{nW+1 ZC $3!6/SG @4ΌE!Rd8hg?J~u? ZiD4K{j%)'xMaYvkEt,lc:wXk||2$.Ey=x*-LM_xC{t4.<Pr͙s1/N8uu.ӿS_rj]\av^sQ ZŜ-DuSg6{${r25>, hcbJ֊?${ouo>ͨvCl(N9ߖQ]}3( z^)(Үe}E1\pB(yf̷HY/HI;,q«=d&T<)3SfV1ړ'vhD n$4n'r}b0DxoV UJgIN}4/|ߥ\$My"j}jib!NӽSBvC9wp7}5q2ѪҴUÍ,鼁I};Y͜ȝDJm[Osޥ$FlX~=/_SLJ&^( qwv# ꒎.P:bBfV2qgnٙ l8VӅb0aG-OTlO=AfWO׭OJ{̑Ͳg k:I3*zA$̊kP `nFGx)GRPE%5\}3۵RuuW-2G%voMk xBuFN7ׂkV)12dB!4 . N8O,f2TiV udLzyug’;Ks'^y+7UUOBж+$%O9elե*c@Fc6ggMU_~1fvV5 -V 0 )_D{Գb1#Q|k9=?Pocs$&}BoWT"M =Dy$,IN,چ wIxE6xnCC-,ϕ̲Y :y~ʝ،=Yc,TxeqUk*OTq\E*/ؒ/NSUf:b?īHt$ٶUfudH"$2kQ /WiXNx r6_y{?2ڽC~{u8|܁Sf+{30`wbcCQ+zƪ\T-{]ξ6Ѯc?8Z~|&eD9qW2R,Y+y<`OwAbz6|]:qZOVgM̥ickJ0=,4,am"RC#,c fZ6RcGŢ:)e eIr6.Z;P+O)$\wIV(h`z{%fpxl }onr 7%ӧ{ xm1oВiq JO'V!"=$ ї4KS+&Zۙ'憥Y^e~},x'"so߮d߽}{.kTJY;ffjKVB+jqMWL"e/׶߻YfxwI:kIq.DzdLWim]ɗ] f)B{lֻ`j~ކ;ā;~7-zAX'tbWO.$GS0Ra#QPO|P[ %`C)c"ͽdD1xp_s*5ac]܎*t]8Ju׷uO աH>hLkq7gR2,ʪZ]|$CZm qX LrSKb홞%H/w>G9(|vvNnNvX N Ѐ`p+{(u\ sQp ݨ3q\͟$ﵧ;QSřz[jl 6n 8DT}㔨PE %BWحYw.!/^mdSZ~j=*Qgd⨎0t]q-.PJBp1 ثatl/ypq{~TOH6 uNwY| AVrwDh4Kk+ /@ @OJZB1[?l{JՊq9PvoY6CJ$H`7Ei)*eK؂Y8{V)b pNv/A%;uh(w̃l}*4y|uV:&*P;LQg*}OW;xT!F[ o l*KKUvܼƌ٫NY4$Gd+3$KVZF&FuRj.GNۖ5ƴrevvvȬ2MC[)|eGyb{)ڻ.I{l1CesZthɻRæGp7?(dW^=  &fV͞iϟ\G6$$uP=ou87[%>`<.$MtӗB)GjSQUd`S"3ɽ}MױT th?7]iEHzş|-tdۑ,:Dj7lD6٧-+}ZU4^xOݼfQH U;"I{)1Z.@2󄖩b+qzV s^>V[ŵ-5v]蚮c""f\߬<ۋcy#Qj6dr#ȑJ4lO(yN}$m [-|Ԉ*S\ќ臉@ @ ie'm'q$s'B੻Ad).* _y#z_Ы_{_a_=+䊒ӌϞ'Pܺw GJl.rqZvD(DCG&Cر!=ǣz4v($;{2 @iǘupcE  hh s> L^fڻw TWޟR /_IĦM'B.,P-Hj)%PDp2^^w`K֫KPa>ξ﫥jϨg)KSټdGFYG$X` 7%ҀcKQO"BաB'^.`";GleԒO^l:Q>45e=[7$z iF\*B'ǝA koMFc3|Ӭ%v>!]€'! }:xi/xcR^WICz_`~cVFvf]5OnC?ҷ79']/g}փiUIȃOt̒?k:[>TSiE<7E-N ؐw;mDu[z+9g_PO$UYN[#jI&3\e4n)Rvcx/VC?Kg{GX"b(6 ʛ| RrI&-Nձ*?2BpEYP [.r?gOh/%lROE f N=d&u_qb? X°f:J/ }?(u6P"L~iV-g1YBg  }HK24鵖r)ۡ#|ti@@JR[k xcE^I2߸dVoqPkZa2H/=(c[lW%icXchPq6cM? }iShRm]6;?'B}gMmǞCj,vԱ>G+zYl?Gܦ*{.m7AT^1D";RUr"bhlqw$/gyRmZp%0Bϝ#4b\q0n N]M J},QrQ*ͯA\')yz'KdخDWdi@gzu'1\}^qI<>e^h)Q*lzBl? gGZ0`~9/ie+UrWWs6 g*D}zyn+ህwUӋ։fG%!L[#"h2fmh|Fqb}*H#znV˴]xA 1mk ׂV|=@=OBzPd5Vrl$ZՄ88^Ϗqp(:A6J5PY2 èV'Gpe᝭\hjp1awʓSA$|HE#7ч|p* `D]ZB-\6iWẍGGG׮~YJT7Mq^#0õqb0KVot[ Ֆm^k k-dpݟ^ Jd3ݕFFTϺۗ9o\S8qk"σxL_:PLh0!iˌ{8:zE  Oy/Иl ,)GqQR`\ J>[ip&Հ@ $:Q8Bt:@`{>'aޝu99'LcиđHhd͞YGf/ N=Sf0T;WJ& I 231kÉr`}A̶d@ \q-9(B,vѣALXqH[!f-t|nPΤR^bGOf=+hWD;Kfx1^ U]3@jK8{V. "k5hG¾pC鹒*6iS+пu4495dj+ KkNqBM++?{2MNJVu90$#dV/,) Ak0Ƃ^Fߛn<%Jvq$d @ww?Rs D1F-_E1}zcƝZh[$&DWx&fe% ~) ~XLt˛҅JK//(F[ KY=;ؕb~$Vd]8|bJ):v 3RRQ}˺O kUP}SV xsQro3z2F'֯nN?{"]1B+յ ;* eO]-N~2̜u%l(Zb9Mh]Z3')9#>*%)V`leY.5*D~- d5JZ!QӦ^fP/fj TXX&(f!Ý^g/j< /륃S'J֓5V^ ߟ^m{2; 0i7$&⩵ӵXEOSx5DZيt"hv_CS~A$<@ f\;Sa)6C_Ί g0(4i-k< #5t\CCh> ;!` 3-6htD]SeN }}"#Qn`F:>79$lVe~̈Ja%q~ܣ˴^lC f+/ eBa<' \*FC;|c ڀNf!L2i~<[ p&ѕAknnr틧n&fvnjn-25(!rC~D"`\T'j P`0iO͚Fkrfuəکj\'3!BIElQ?m12pQe>RwتD.ۋ XN#'Njjо4!tK_fR!@棼CJ-jaH* Np@wV[; ➄sqHlڜA?y "j!<U?hk1oa޻e8S1Н䋄!9hI B 9Ko_([f0o! 31C;XIh$ɀ禹@@0Wl ]&)s64wY3c.Mg ^1Oqs#Ms3ZNLMi} 9U~x~{$6FɬQEi2WvYF AVl VDXer(ZeͰ3)\t5\^"rШs wP5f7NK$f^q{"L]z`@DQh6f~hG5uU7G~ .#3P TV!nژPf6Չ>l6 9@Җ5Ϛ62t@7 L2  t'ԯbHԼwWfɊ7=.=bx %d? a 9epHҩ K\ۏ$C%0 ntv:M`᳑Basp& )"-qc @Ibk3ePF8ZmUL((qP05n'CVijɿX?qg^:ӛ[[PV8 6=Iɉ(cG@Lb!ll8߬MvvVbq~/%Ii҂ϡ֣T=!BPS:muvPsϥ;Z|s,G:pHgVuZR>f@e⋮@F<6Ͳ.L /)X 3"LN>^m w'>\C]9b Jn)snt__xEKD B $gYAV>g$%L0L#{&ΝFtd\P=a4 8"<ܝsL^^NEcvH-_>֋;|+c! 8O/.规Jn8&,%st]6( kH6 Fq#(ۉ[y{0(^ ֿbףŬ &fzCqI<Μ$((h\EDCc_x/E.:i^+Ο1צ҂Ji4@`lxNL$搘6T.?4] X1h|}g8<1Ȥ< @K// 5pלotpa jtbE Ey&Ц4`د$L"Jvi ljZ%=')8e`8T*M8.w~\(Htv r"jDoGG ilHe%ia&9dd>-i lMܰTA$VHG| $ :1R s\Z $Pjۇ]ًg8`簆 zߒVXݕxrtX/Ap2^[1~R{뚬ɇ:kCU'5n%'CXP06Gۮl[<NscOFeQ-gi$RNo7Wz _t"?z6y/H}ё{qL$ -a[st nSn2ğ@ѷxHNp2& 3 fx) WP'h7f> s!;p&QcN>OgdHE1u {^گV}2@JHS>!~L^d r5/GyNW-`ɚLJ=(RV2ȏM;:-A0<Ȥ L1L~.ܤkgLinNdu'f]BsLA5ShKvvn-_e9eV"mB:GΫxcZX oyHKgT~cN¸OZK:bA%9C ]oʗw1)(t^?uƦ-A99NلL#A2Yu5/_=fqljއˡ?uArZ]AX _vM1V&P\6X2m7䥱[lҏ'AQ6R S Q}딭SeS\D-wLrTC]ӎorly݂XJ^fo - ˰(X3R>\# 9VP饘QՐۑ,aeX#*gVTnqGL(Z)oMi!#ZH.$ɀW\p*ȶ /.gy 9L2p(#Z-)ijjԭ=0b`n0a]k2I)XE8fnDη%8CS.oěNg'dp-J=aYɹبNkY Ե=fNH^f<(|E(SL\>u4vdN~HN[nDeh/ڈ(21he_ʔQnV=CHEgi~%B15czŕ v >aY%e&c!pIB 8г]~A-l641/[\\Z I T4Waa8'lxRYNej3:-:G6vad$$`M,ܔCz3!q1]Ӌn#xBl]K^t_@YugSk]OƤ&v:NaLewɋ-hY}:xi O x|+^ñCq%]{[[q" x@LupՔj -[=ئ\ ejq[%^W'Hjyc%J8Imx=C/].&w4D,Ƙ3"z`U |M:3Qc!_ǣW(WjqS#f(G4GޗI>nڄE٩^˗nHG[M'C&Ǹ'orUmNݾwJ?6\AbGNzŽ2qXDIa'HVT으Et|G3( oOtrJls<;3)YQ`gw8"o&7>cѭ^@& tT}g$}0hh)GTsy4r o MH; Φw~| !( ad" -sQg#,1M|/uhR-.k$GK,݅1a=aYPA,q%! ONzvN6^>ƬAvJFӽ) /ުl̒B3GM'[,n\\kѣ m1hmo>!jM0C <埵ߎ\`K|_xN`ǀpWJ jHLM<_=CM@Wޅ%ꉷdžf%Mnp Z3@>'Md Y,BTuJ:o>b^չȑދGx_W`H "=ϟz&=@%ӌHqixDHXxjꄯK |@QTP+:uc}ОT B5ڨ81hȩaFuXLc[nNרxtNDX*N8s7|2 R{>}78.GyՂOg#Qq'g fKY`9h2„6$} (T?}A`78LHFRG EFJXw!SKr@EKa2'ʌ%v[؟[7SFjj[5hMt,^i#Coq§ZeteWip_t^*>VlhZQjXB㨪9q7@'[=eH+^їa/G6z<6)yжDHwFv2nF)%d.)ەP6^÷r {hj)ϰy"T㝼jMUd΂Mݱ[Dg4{+ݝ:<9qAw L}A=£6۠evAu+U_Q3f?R\0R R^ ,VwW2`A vG<9 4nX;? ?*uV0{[4"΂,qӼ? p}_gKB_ %_g=Ih|.ݥąV^1䓺0 "{7ms9ꛦBNIpi{ ]J :My%uGVց kkpyjp:G]Z$0 _N+M7Y2l @x6q 459OТ}Trf52k t߲}pU\ursVlתa޲ }Vm~3gm,\7m}-*,EHq$Yx=E_V'CRiND9/ Cbx@8`2I̪,!f݄nE8b+Q2쪘CZ^?GVf砱(BIe+9: A  v4RBH zѳy|x֣W?EtFOܔc=1E$V(T} rY!HhQ!.F/ dիG0;j86t 8y QG/Za3= O_ؤJPגIRsZ=|ڼA##su曻;..tש:KIT'6m7":sbqyL@Z,Y bg,n{O;]ɪ!_"=cӺdij2GBX$|i!*nT%;*^3/cEs4CwLj})<(YpHwW^HL- vpđ@wПp̹UK>1뷀L˾f0pΎ=_! 9q[ƭt-c\ @q]CAJpPao|ylN{F*3FxLTv0ԛV,jHA(\xxtP R^Sh"HJn#_p.$s2iB{TuZK t\LI%* P={b"UQ"VR} >Z ŊNVݮ-Jh σ ^ ;FQ,*+""00):;:VP8*e(7Jl0oHe^Ɗy%`4Y[eX}6KJ˩^#<ɝI_/23-@l4`P=K&=.)՜XvLfo BG]ޮ+؂PyInV`k-~SddcU.gƗ' 1N0P!ίH]Hf[Zx\. +\_4bOv#v!l,x<DxIN-Fe,/\mdPyIrǐ&$GKKև1qzG!A38̍97U;ȴVeg ݌LΐotpR# AD䶅)m"ǛX!-ΜaR_});;6П(o:֔qC^Ǖ۵A=zOb d~hzn/J~ǪŤzS,JJ#2ŭi Z~_{c]obR:v:?e? tZ]ָՠgժMk&zzq%UCW\Yڻes7ivZdTVQC$mČki wƿ#;̋ %yG8@5:yq)|⌬N=Bց^\S8]]?{rW[-+Wq)^2-KK0g4LҼ&OSPdŞ-m>nxQyY崎byCQA)BD`<`7%f"Y>ШG]T}_T,a^&xԠ,v4EpW¶SANⅭgj)&d 5 4($sDBݦxOhXQLw`qnPsTs'@Tz,2J*njވ4_}3יjҫ-%i POF?kjS#G'p1Jmba[2?kKq!@-^Y97*o0iMl=ߺ(7g_ǙWأ.. pk #c]@qos]vKi]C+K6 -/'S{VF#pƦuO&gzutxeL.vsMfџ@/)uA)0!۽)/Y_$mU?S^ GqVċj.vUH0mǕ*3bt3($F#PhzZo\d沠pmL~L jbmmK qsN"Q_Qh9 -㳟CUџO=ކy5 YkN.eui#uڒࠠp *!C_߻3Qpazmg- -k 8Z莧YPdM`TGhѤ]:dVNvcW:w|kҁ.:ӫOڑsw pT %z΁ه*0) A&3PPQ_i.-Z!%Ttf3k״+f6 6mPяH4ׇ2 umMCͥpm*Y˭9_J[.9&,rHi߃8Ʌa[Nnx J#u:nY}lzӮ^Y;zӉ1`7zv/_眓{='T `Jټ]ȇU)K{v[՝y`-0-?^[mSƐ=O#_DqqmR0) ibJ}I克WTm Aj/bYFNGuc\:i%fU,pIp ^yBcx2 Vb6Nd ٍәTlW{tĈT{S/QYK7#pQcGogQG?e<tJ83YިF^:̊|ʚ8`r}QhF4뢺j":k2;k.,&zTIFTy=K;pr$Ѳ8f_TIV[[ź`.N0U8IY D57o- !mv9\/KR!6 b\+'Ie/aFzͷ{P|w4ej-t۠^\SK+'JRSf4Ԗ+e"Ӄj\ʌE.>p!\B}vچN!"fR0rG߻* /J6Mn~}}<olϸpf%n~WXUlA!ˍ!ӫ8iD*z3@EYoJNC8f,R ƏmwE(iwLe7xЬ2Lz B,'\n@Oޤl os4PcXY }tp- yC&z Z`7)T)0jJׯ$7 ۷oUckwY;8>+g6w&$>ނu> VZJg˿=>Oi]@QYOƽ AIN%F(Y99JC4Q@J9u3p=0A1 ,^>(HRBxLԇj-ap37ubNV4|u砋ale zJ@5yCQ@RRqO¼p1Bj*O|O ,0߰ʹн,u Hs5IJR(+FL?Fh#~J1 p)O"-Jq Ƀ7u6(ۄ!P@>Á1 &'s3هX,9Y|sACEvp|̺%37_*xC8 <"'"G!£V볩s&<6D-mttzq5"mJ}_(^m'Vs۴F>}*sVӇ"m9oq{o! <]w@a#aYY}i|#r\I _ߙW+"푎Nܞ0|98ֽ .yfnsˡb~p*5E#s vN9>cQG!Ú8Њy6& -2~Q[aṖо)5_[z_itb(߭O=C/ P4? 9T,1լ9"fP]SԜ(0v4sJsbnQ{} #@ɏU^R+/6' Kh-Fs5XޖXyXQ3 WKb"&â{[mpZֶ/ʲZ[Z-l$NeWHWM_ Vӧxs䀱X )oC&6lktIp].@?wShs-$9nP[pYӲG:Etb&< E_p0JtzX B.R .EĎu-0OSBþm Ǣ]vd`ÝXP[ VC4O0&zu4&Eʙ'tAB%+DˎG~AxCPKZnRgx+i|oʜ8oqJ`G~ ɕo P 8yuq뢵𐠵Ռ=ƶT·n2paA/F[ ]+p^F(?ɬ3ggQ)ĊDLm4G;?81[ѫT> =Q8)ʒ5ck+gdRA|vakBcz[C8^'դOS0* )5r|Ȥ^?z}[SWUT}?LU^}L 6h8 bǎEڰn/MA66Mkr0.'})X "9O ~.7@3_~I*`֣q^ Q(Tߠ1``w2uՓأ0F(zcgsSolP8C4>@e1bς zF]5Qƃ/Y vAfGWJ;=yw@Rq\kK0{2tv0="w 0Nr DnJ`37%/-*R.U+[lQ7H0x/{džq8>6F'0*G\Qa$;hfEBC-`0)y[hʑV H2pCxQP¥9>&zgိ*+kɼ'W_~IPg_CO{b̖aշN ~A'/I팟o" ܬ*0wKOLxi1M*ˀzܗ{ meJ!,O'Z2Nm:ܢ*G`x]sҶ#fD\FIHw]I ?7#ȂU.5w5ɮR?70:3np&9&VupAFsUc;I}!\Uv}bz:9y! Rξ N@)0ߗDd;(AXr[BNa+{?X/Jڽ՜vݶ6lҤgO%P (/V j>MTc74bɤ^~^()yIЄe7a'xU$u8/NΨ'nh贑51;^n48ߖSqF; Jx]]Y MG-WM_ KVgGg>W&i& əۣκ5XnF>gla⧲0x){8}>;|9 i 7?kNW APEjpYrҊJp7~V8o? 3#JF ;Sl6QAiCfT0YwI+~[kB41L[*;/jLAM0X}>.tغutjiZ6)udn? |n4oZ8H/h!}I>d _Y3rDwc6ZKجA;T GXKb4p:I9m{#?{X%CKM;E({vT6 LaY}jOѭTв`u Jۃ2f1D/MR1Cb @#^$yH"c%߀.MtBl7 ^]]]*eg^1: v"t2=M@f]M̟D_w`tјmuJw"BhO;ֽ.w3,eJVKmC2LCyӝOLU{/\"K h bxZLRiO(=|V})׾[[P[n26YK UL}W0$ڃR: O3Ij(ΒRօJ )HInS(gKp 2\oNya軚8'p%KEEgO[:*׸pⳇWFt!Woڧ"˲"CրooBJd;'K͒__hv+ dލ 'VmI.^˅ 8BsfG08ռ*ʮ ꩐Tҕc6s~JimxY~V)Iƛ+hΜ;]EBAАQl"U,C)'fC{KD]p#(^ys==UjonlVeuiJ+$dU#;O ?92 <;q>o Trx& ['-xp0j[;3Iw6N?;K9YR2vrD3' KgՂ?h?r_K& `t͡񟞉y7&.>tu4ߛG :^MpvwڴYz~ڇձM٪!RWd;# ^zʈQ t\Wy\OJ14:5\ SXT ݓgvV9UkX,miM\(n>EI aIi_,( ;.s)=5AI(wXg}4YDp4{jq(Q ̷ZJUZfK*xC~p"2r#$!JzZY.^|h}zXaIEXgt^4R{fLypᚚ1ި|O 25" tUAޗ@uRPNX1ZN/ܨxIQ×_y6EK / cuDo7դ |2VC f+H :`wiy~wkt@4OE],<ͦ?sb1- JAA2-=t칙Cõ̍: Ba;WCEΞr{`&,'t[8qu -(J]4 ʹ5ay hhY.4j&4a q'( 5sXGjWB~cm۶/.6a_A5+=d >Ĺ_.h8tBs0HJll[UH4v. >]( k9. UA:,A-wyʰ҉VjVU ^}|wTHӘ,Aq0;,ZD*#{lH7bRX0CduBѢ5d=V\T=Q37o qA̐AOlܿ!{_uD G_rkߘT^}Wo).8|gWPCeJx6N(~v_;ΞS?W#M˿^SmG θJQ50 i<&+;V=KrU e#,tFjëΓU|N'uLx&) 6wrroG4 LR gnZa#t+2>if!ϥ)Ǿ>0$&qqJY\IS(ˤ7^+'wٚze !e-ݙ{awτ K"Jd Ly"FջPn)ж w-YU6L8"!ѡ|Fj=cȠERz!z|%%N{9c׉S'I#ܳ&QFn๕ !JƄeeo},XM0cs9]e08ux޾B䦂@h~T$% ?-&=EsnϨf'$Є`9wvȒߖ$sNy7zԯ3.ɉA>c,vA?p-?#Gv˧hm,QvG=KԾ nk@p*;rQwZ*ړǤ 3νեwR-`Qz\ӧvch:pZ7ןg~#;xDtO|tҺ}&Y9ƮpbuU[]Tι#UFo~yեj`a~.;&\UBD<j5yуo)],+]*D89żmSTI9⺹"_KKgh&\^a= X(u`mgO,Ӊh}y$ے$ E[b \ڊxl~[l:鈼,g\jgY '&f)GL|ƭ*Qpr~;ZI] !q٘ >0S|_Aeg<28@+5 3gKp:ELBvKj:*&z0V >GXCJIOErWb$W+^jɒϖ6HX#18 ˌ5ԋ`֩wGU,03 ̵1 Q&g;!]vX~0a \MF4C&h VӾӗ|怙w9}9/HY1˚W(u2igo}9~!V7;:H xǗ~㲿vWزj w$kʪe1Z^W$S+ļњ,-3!cmh9% Q*;%_8FV(s߷f8dشgm5@@7V։!)^`#m܊Gk!yu訦(+q:­D݉5/bwb+bᎁ6}HЛm$te1-ě G]iܘ$Q:npysǩBq8Hr-;-cN*rJ]cGYucyUku DQ):4^K<|XEޚ.Hxr亞jΚơ-]eU6xbk_loⰯuvoLzA+$^ҕ\w%>[PG<2FnD!$Sx8;;(~ Wou\Ht*GĞv:[Lr-yGm k-6K=9D>GkaDl9*K2J8OsP"偙bN% pxcN&ay{Mlƪ3#LmN̕&>4wՙި|3}+e}_,,ALu[ϲQJ5'z@NԝZ̉ED@(PVdl\8N&,)I]dNY8+ʞ_wu⥊8#+1d8s6Ǭ}壯 Uyfc+!)Ȧ1[N}3ǮIGu]x~^ʔ4 qd[>,{1#^3ID=q$%ɥ:A*Cg R@ BH@!Tnwl˭a]ɬz5 {z1R&l\WџgEIّt)8RTp*YMڋFfR8VYbJir5Fč N4egH%<ټ njc*v<᧼ /Ujao.lGvAvPؠZj9IdAvƉ< jO3j5KhiMt|en*=-ABQ׍.|"?Ïs\Z%gt2^L#;K0>;!SSI!!H>S|BϵŵQN,$,J,ya>A"TSMK"I쫈+;;Ӽ[5*^1!;m--?wb^eCiO{*NC/.Ms'  f+vS'̘  TkOHLTpRs#2Y@2N6^T)u[>4(n#*w²Jb$ȤFTxM3,"& ܴyWm k!o , ˒e6GG\r]U2%8WH CQo娣)*[zb2nʹ.CL?gl2\#.WY`WG>r8e1jB Uq8`{l_d9)\$n +L[o"N>eYfC-\Qz%seg@% I^؄*ӬD/j1'$YF\(AЃ]xiZk$5U܈?ZN:5ZC'Zܤ}w~HEVN'O:R|J%ءC.^ڎ`g͐(3!a [0ɘ»#c]j)`rsJ!*jcf`o+ ;mxx 2= }JKo a XN-K;xL@@a,u]ϺU,Y;Ia˯%y\ #2"daE޵>P~?nŠv]wZY׬a)33t2T۷MN6=?Cݹސd}1y"9gV˚!Z1qz&Ww-fRC|K>'cwA?`6$,|Ckٝ0->\#˽5KLiTom\[کNJXu}ꕵۡx[@4u g@+"R.AST+8S3r P,qݕV^fbڝ]d|k xtQ ä=:qC/ѾK69@̦8ۃ)6mkϋz{vC Gv̠d lCȇ`hr.SFmإ>2푈n\y 3k43b?sNjT%a)2}7 I }A6m"o'iLII5y?|Ue-Ңhb=Ϫ۱_*'{h3ry":U@>q|J!׎72ZΝ ]p%},r Tāeu1't̖Xm٩X$:Dl>OKX[;4Eh!BAjZ<|:f^Oh5a Ku/bztw~8i$oot^3Q?rLˊfoInHiqUgg)Ӈi-aui4,a{ nY$HkJcJ8@t1Ay8RQ)( qr<'T2QUET ԫ *DWV-J(YWZ~]^oP6{ [=ʤƔڗ>!C/9kyyrL+>;ʒ[/ fn>O< 1#ryw70"aYM0Ib8H^-ri a ޴B7N9!gI 2iOB *{Ȫ!&FsSmt*Vch|ʢ&E=E+BJ&Q"/qd"8Yn$:W|8a% F~\\ =w帙"i4}BW3߬[o4Yf"31Doڔr]CpϼAylk7S Lj @>s%0)uA 9-^{#x/ަL[`0/(?¨Y)؛a wI{ddC1ڐGdj<R0*eYCNsI(~.D*; ڻ{VqS[BOl]yWMRZ$.%qj"̙.9*H*:HfcEpRoQ#"htL\V Of}=Q]LH|_~kϣ񏈔vrți&!*)rIb@쪖%M5Нs!N=3h%`U3yV| pk,6խ]+{EΗ\^yn۔.*QzMOտD'TS\0WU'5:#h΅A%EZʜ5bҜ6M.^qӶX(1]l(4AҢۋVXkv)^ۚn6eQ~q`a4ElZ{!eٹ Rfmwš|Nwda{%Q cygRA9zXBN|5ّO49_w9.fo(D\EPl~PˢA'Ǐm |)]ˍ1<|`){y?J;|Ɠ=J7MMA~weHb^;+4T1纲ѳ'ZNWRfZx R}Eڢu^} =ּ3CAlC\'EΩ).b.-GB؄HA|ZEy˭yH: $'Xv3&yVQJ/I^ '4ZY[}>ēnѭţvTow(kxǂ Կ^gWzۼr1k }Pc.fŝL@^-7pjorͤDⶴ ppKtrU}$gmJtAPv h*ٲ͛-Zv&dHj|4P9?]]zw wLz zЩ!.+',zb8*߮$jΆ,7bCo/]Eh+#PN: q͸E@G4+5|"E@8xy>XqI3%4&Ueѣxޜ+V[ W?$U7H2ܘm &{}3}`RU=}ii*"Q:, !86ܤP'TsrvwMDKOxinM'\W mFfPOV \`%~JJvCm8kv9EgfvG١w20$-\IMD7OۺrU :Qڃ1<; -:z^%qBZKQD{җxoe%*p 7|-t<^xأbT*n }ۙo˞(ﴲ\^(Zn3fZ,2:"n@{8,-^wQRE~ '>@^U>W5 %3#X5"߶縵mw #,,C8閅WO=ĻH7=ζ:+ ᓞ(NQxTa7$m};aÿmk.47Kt݋B{Z=+IwoN.R"kO5haCK0OP$/{qu[_f_".wy$8)"oX;34Z'G&o5gȬ [푂px$~VlYy?A:O0O.?Iv{~ lz]%xդ1G2 ͯ4` 1w^"B~<׎kh:&9Dɗ@ I4|ߖ^y~r׮ۙ|,y-nQߖBN"n%;TsB֭f =3EXX7W s i*(*+"AC.ڥ+:WR^mSQMz+ . sS!F]bZxL}NN $pgvE mA~DPh#.0k㲧on?֭l/Ox$] L`.\(P+:rj{x}cO#V ̥): f(ýQ ǀ*[յ~-`h1):ҙn@-݁'>c(>,U0.Q/sU*kޑR1&&;{=< QdÅR%R F@"zEG1M}<*:Q5 zW ՟DKj~_  [#Z/9XMFۇ{7șک+hsDf!!/y {ܸ=g0<)84TMʦzj^K"$L+܏!^\*d%\%Ns$Z:˼&,t 'U}~# \ɝ/!-mYVB-Ei8ɷ92jW][тQT~79E3SѧB0n+\q\Xh;edIx6> XCVrpNFK|99QPba-~ $GnX?:a.pf. !®Cf߄Z$ ݞ\؉jrvb1F4 %B B k"r,$$\7K5sn_ +v P$ϩ3/x>Jaw/TiXFN)@ԅAK$r>Gnc QR] ]e\C w^ʺ𑞯W6ު}LB|ұ61R pn=  b>@kDRƌB MQnh50qb9j C_~Poaʀ1>bשiv63u_;fj/1'y9D8a n+.Zfq>ZTΟάs6 wV @)w1`h |ZwUia{]"5 X MDXfl|6b3Z=cddž/bWOgL  Á^ ~Їo;Lx0e_Z,Cõݷ%"({>96?C`/}G(? Zi 6m v{L3Z[ax'96!12'pͥ[˔))L@ƙV~+r2ʑkk9Z 0NG25raQJ #+Z,OhO :X=`O0 ߋWݴcZBb4l’ٟsԳܻYj(J՜:qZo%9" ]c,:ZrPA<@p/" g][uoW(AǸ3aIL/)^j_s;_"KY mĄ"oj=1HfΤ;F U\V>{9Yc6J?x̀W0M-7ؙHrV2 I<( 5uywjBtA֏o\e3YL\ʺkl#ss˯Gb/kBZ0rDhDq9WzC8 @C4.7U{_\_}#!|z(12Od@C?x7 N.?yjvGCҌ"ʚYlC`2'%b[iܫ6hLF HO] M"U1P [9X |UB S~z|.4TP{.b9py-~^z \@JX`nbDWpk9_c,:2YaFμҦ׭b1DLcau"ҝTT 7+ovzӀƣ iO~}$f}e]Է99y26WLuS Mvq9t)iG׉06G -0I#u1}ŭ[cz6WŁ!-pi?K8'`PCrrp\B;ki~8߯I{'DʪJ"am@!BS҂ ?{łk}MqWW,/R+OC[Yw3|ck=} Qc;Y4ed6nگlc`,ɩߤ@7iM=Gs4g%rGpHC5p#S/ڝ* ϓ]6}NxErP?SrbO{Qph*LbY Sn /BZ; }m~9a4-h[ ͎ϭJ$1N&|'c䬥/ʺ&᧥,/94 g)^D/P"܈Edӽ &S#pKDD Ț M9B4Ge@f~޻;a~WOk CL T|;v)␳aH z=lyNS^xG0fx!eƸ.9\( (noAiO@ut:)SPU6&*Bvp F~[@]Ja0dTx͊ZС q0.W2v1hd-CZVA@Gñ|g;=E4'K<@|4^q |\V1p%[#S#F#-CI̥+\),Wyy:#sQP^,JzF "穼ƹ0-hq(B?Z{)6{oݔ2WCtˋg5T8,+Oe0HUܺvRrAD 6ř!D)n:nc a=2ݫws9OYV@^XI{+ #bWy+@% 0.{'~{dzr/ێlL*bd_Ecfa"sص- v$95]&,̋PLY$8>=[w<* C~$\YY7W$Y^qF%EAWQ7{EH2C)Cu͔.w9AYȓKcd Ị< wTPNwbԡ"~H66_0wnDKAANe9iFVg?#|ּ^2|Ś{A&X|[QhY^oG|#W*fe`-ޣ\6i˺.tu/^ykA/˙5nnמz]1Z[ϝomV95˅_6 e^^!MMHчVx]m$ՏKJM4F-oQC23q/T])<6.jxo/|CA^[cB2|A {o1K{2A`O F8;' 9ƀ@bR]ʷq,Vo<*l^ܫQcT_5?$U0_9׊ f)Cץ) יP["q,6 #acd$\ـݻgyZgvbԷaz8{ț}BhA{mD.'*KOik;D #/h;@± !+ګ-ckn.v$?:ܗb{azKޣdGkyVֶZͥ:'Zsg.O\/+i.5j>( =>v w=7\4߈y~)qNKss~9< k {doÞ;Z荄AR4vríḾѲʀ&_>p9UF(#eI|K!Вl036nLGe*6Ne /ˌԎŪjj՚we7r|т֔讞 AZSCr ֔BInt~-#ZVvLBr"9ŗ598Vxh_d^:|xmW(~ My+)#%ʂu~ޯщ*KX8[4XL{J.. 5|E^]sҝcC~L@!=Iuzmʐ^IU:d݌a?a2h/iy;nQo (& =X;-?vkC) fm9ҟEf^-MזJ=4o,q˒i^X\lX޳ۓ{-:V{??&*_i]Ţ@T~9{UpMXאjS雩W::@VVپ=-}_ey{Ď^gifhjrԮ 0(w90{T,OT<~ >ϷXVX8^tΪ/y F&$ZLȏ!DHn˃8mL:dJ'!c\?<ƶ}@}݁ "'||2_}W 3:}6)X.邈Iemś[:ޝrmL#hd c^o;6a!mLS >nN-j'9BPB"7%"J<Z) }B [Sgԓd%7 O MmfZdQ?8k 8VjW{z 5zՄff2!]J73Cƅ2P,Mwǹ*)5H% s9ҏtIT H'~icK"~X=~KH^!Oq& "^S9c*l`t122Qd @Z1N[ :H\t܆CeSSR|DXECydhp9@<(+$̙4;.9댋)5des׷z$Uf{<&v$b)K WTR8Yj'?K^GW{o%8dwJgMz 3.7S[^n?ԣlC9XdC?5{/{/{ 2D{D uwo̧ CjcT#Ț y+L@w1c@]?|K 9dXe,r755뼼ِ\\5A 7 [B~bs^wE)`sOrя)eަlCZ@Kgߝz/miM)|DRѿ=/|pzWPC !Uqu.fc^tX\ZZJ9V]бو+|fq,ҏA_/儘(# :ΓkQn~C <ϳMfɥ$<;eڤ1%iEUgq*;R1=XhW`VUr7.Y"qyW(M&qψb)cAnjIW4ytҝ1Q܃j 6W!hd77"N˴:CM\ti1r[?Ѓo{TEzr 6k?ZQ[7/V{.=ծ"+9= KLe,`S w9oW͡ɓl _G׆aR0e_ǁu5X2k>[:kї/7:YÒ+W.1Ade;f4Y.H:^θ`"7%1$E5:DkP2r@5ݕ+Zf}G 7R=4GObT˷ ώ#_w Taҳjt[H -ysGdhAu.Z54N^RӲG2Qё\I>]zP=>';r?8Dx[k5j4ITU W0*hڬFgLRgX,cA!*}% sY|{F+u]$_oIr+sźv8sR?,%_'N,8+ kħFgd/$[5'Zǡ)A{P {2dfܥC(QUg1r\;Hbb τe+lI""Ӝ .?>ikV2Yr.6ы<OF}Klc+$#˧{ɘ 6S9Ґud`*ٕX5=eou7~4-xf&|ۼc;¼,Z_ݥ&k㯩 \&cwFc렮7ؔWK]}QY:H A=r/KuWT7Voi;Ս+ݖO?em+9W*3Mu=-ZR)Qv!EQa(9P+Bv{@E5*q]?vS!W㐸7g!N£IrWOԇdmbWBM!*I>t39 3D˓ʬy*{+ IfD$5w[EGeLeurH1T~ΧtWyw$vsjf2(dFg]kSz!~']:4`lyi1Yʸ7yT)IJu ^ճķ'^DvIwN{+$>| ؿzFda ObDL{̬o<5|ʐ-DIߚkyBoW+o^'^N? =8\|7rp0~Iq X3 Xdyzl0E p)KdBĔ,DK Ξkm?^$ fRd9M"Q%ƨѣfHç]9_RUAq}<=^F-ڋV욽Vq*ĝ/sru!`D[Iw=) EkvkȿgouS,`*糣: g mb|{{qOuyeڬ(+7oʈz0'#2VQǗME} LK4~I:ֲnj5'Je9wse>{hPg,f!k土^Ɔl|wu|Ñ߬DQx3Ckp)eC>Ԟ$2f=:Hh5ڢhFL,@:E~7BV?Q#3QA.јڬxWujTa7`N"*kKbYJD: ,T3sq%̓!Lo oPMZ~8_BUh2|H@mEj]<m wFɇ|![$Q#zT֞N6 讎HNb!b'rV!Rn&>ww)rR`><\|a +Q۹o=b$Jhܒ"A丄uu?\hG!7˽&K>p50E*~#>ĤR>p8%q{}# pqͿfOG[pVarNv @`HrrUHkέ|zg,tQͭNb)Y0G}ws=?1]Ο.:X ӻ$Vލځsw/@@{W,}v✥"ԸzEIIKUŏIeP`fq4ꒀy]%] -"Փ9szRi ٪Ӎ럤1!Sj3 ^-S`Y9%̥ʒ>2.-}pѷ7^-R2U[KV^j]N牅a"}-| k2a^!b)-D*57hoѠJ?\ζn<oQ0^06%g>)fU*7U'M$+6_7 ԤY|jipUzǵA[ .`{ f"[ꨃH170u eeɲHk.a03eTuu+(l:*owQʑGwE8wU՛nK- ͎KMr9]ay+2p+ҹx?_Q{(Ƕ; -!1FR9nf !К?n cD$=Kn,PYgxqͩ'C }G%3CgQӜc$n%lcfUˌN^ޤM-'KVϚ9yezbQȵƏxTRQ5~ ^u9g3f {&#TuH8%2t):N#s??%?05љT*Rg)Sאy"҇SAܻ錪)qRK=WH=.(<>L},7汫ƎP s+fIX\h;sb).VĦ,|pUYY }0ӐTzqMeRp -NS\ .] HdvidK9}dqzK5nX e5bF6ʍmC@;?{R,l=pe(FM-c<: GНn喊&RaRVz*/ҴT#H6v#I(V!QҠG߄+xm2k3zU35հ2o~Gqrv * [ՒC[~:m&$4ijB84|؍pHr+ƺQ)؂I gHSba-ui-l/о0\M}K?FdD{={<ԍ^Ѡ;|x݋ ]94jFaf|l\Q!r53Lc6?aa5cG|-ls^8%6uO9Qǟ nXIx4paܽfζK~?+2yIb);(JΕFH+*1&"ɰɍPa%'of?cOOK 8VzMécg֧6Y_} om+zgT|VQ?'"xR;gO^L8;qaߘlLbL\Ww>k~[gwk:>2}ZB{W ,w&S ka@Ը?6>3n=)?{2H2, )qH` ޕ3jkTĞB?Qm$%)}bUq_cqY -_1Ӂ)j?E=7>-96l. sx"hc[y7?N - TK79|ѰxzjgmhInHog)v~ C;LJqu pmW<˗=l+(lCPm-[IHHK(|LQkgª?CEBx}QN";FNUcE\k5EG н^Jv<+Dk rKCN w¹*{Ϛ>jhÉW~{|kÿ$a=g1izf҆Mm  z`0X*+Gn ?J >[Std>)`zdM+9,Z', į>cu}nmĐN=z8$Rգ3c 1MEKY$ 5 ]Y^=xܠKHUNyxUqYd*ggmnL%r䰼!@Z"["(͘pfk"v$ρ9&LIQV:WIZk7TT!X52QIe(ZP b}LLϰ:.'T/ kS->lT5}Tr#e(SG:'WmP 8oVV7S*6⋫-7kI5P|-wSX-g `(TzI(jaZc^w.8g-fV]hl3.yOu2&8EAD|L|Z3ɡ2]ۑ5KqO[شܵ,Մ>k*jsέ *Ѯ|\A[ T O=5@'z=]Z(CGEfM8GWP+qNEmF068Z:b7-Ь%{Ch1^tm,R\H TZ#x㮽`Y'}?}iou8KP1㥙夆CZ"8@x µ-``Pj}6LlRU\6[ CZN"*Y=3CȾ3ڣx~,ceG ;,5R>Uw6ԼSAR7|aqu^ځ;V`ۼ:{~۔x9:7N+m1f75dGrzZFݬ(:%P 9GaxLIrl2}>Mn?KwE/:T@Y_a^OME^3 O\s _ ^9$-Q5y'msс cvV I߇!?I$7ܡ\ód[#mH܁F&8$*pw,意hiḩt-,6i0I^,`Ś7{~5QR ]5j^FiT\?8E|ӕ_eoH{UĠT&L-3QWnԤuM* ۥD+%j;bͮ' Y> (؟4 w]|/JW#ȤZca7B'8:{} N$8oQ|W mOnL)Q^!WCM8}:Nhۑc&4ٝqo_@xމɐ5 Q+t*\]w C!W^"ywne/R=`*5bJzMwZN h PQ7޴-␜EgC29*XYKUk&D\4]aw-5&_kD@;I1fͫ{C[ŏY}ExdS9ɇ@~$`KPK}=wvZR ?Ph{%Zdϙ'biys-KhOü. [4/%0y]|(珫DBˀ(D뺹"cfw8NgPmzdo *Ģj6hni[}iY LٱEf9eF8dǣOk@p#B\'Mo=) uĐEB>:6Qlo6]Z* ) ˸kֿ /d?6 Q7Dx'ey:KCaM۽T&ufTx_WD){5PJ7A 2wWqo-Cg*te j ^"~4{;fo-W?*wW1{|k.QZ" X-J/~ ۵dp;} WAD|Qķ~XC}6cT;k#7.{7c8T_4X;B*bm#"""*RJ)EDDDD̛?97t3Zkgсhzt&ޯw.YNˋվgH@E!6~brݴz]DDDDDDDfffffffVUUUUUUUi{z6Ndprewikka-5.2.0/prewikka/htdocs/images/0000755000000000000000000000000013726165110017641 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/images/add.png0000644000000000000000000000246313726165107021112 0ustar rootroot00000000000000PNG  IHDR sRGBbKGD pHYs B(xtIME  RIDAT8eKlUUu>{o{KÚREAH1Hg:"58ј`DcAH@I 1B[, }?noy[h/k&,-]"z?_kj0'^xY:qi8ߏ~N_h wu񧻪>XXURU(G0Sd0}s_Ʈ+޸|<1Ѷ4LS<RURiBõ 1~xY _Q$($}ַdՙ?9o.4`KQÍRl[nw_g5mr])S?>ʮo#p8H,"#l4[umjl(lc۟R̨T?eiRܡƺB: RB aqH7 X%L C]4U.M+|qOS1M5`1a$iZQ_ qQyEbd\81IENDB`prewikka-5.2.0/prewikka/htdocs/images/del.png0000644000000000000000000000261613726165107021126 0ustar rootroot00000000000000PNG  IHDR sRGBbKGD pHYs B(xtIME C0(IDAT8]T[lTU]ܹ3蔖2R# VAJǀ`|D `cԨ?Fc0_j"Ơ&" * eB_0t~6Jk/>b3PN-٨5,"`L1lyOs5[,?]aM;veɪO@H?DP.!L]8ydi|*آ_~БEi@P)#RCN3T+$OaL)Ç b-m|PImDX0/Nù^\Cί{gWy'[,9ٓ!?`VL 0`g8ZDrS! ;?>=~ttSTl)RJL5χQ;u;سh"fpH%+@Hl}EO(IU}a^6Mc25l&,JIENDB`prewikka-5.2.0/prewikka/htdocs/images/favicon.png0000644000000000000000000000277313726165107022013 0ustar rootroot00000000000000PNG  IHDR DgAMA asRGB cHRMz&u0`:pQ<nPLTEffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff BxtRNS`ֺb+͈,wy74-.zu/0K#d q!h 'ER{r?_a m s)ѼUCjbKGDy pHYs  uIDAT8uSCaPJ׊VR!TuҝJtJj ޼oo0&@T[;4]0 nN/H!a&>d`J  M`t@qg3%n>Q߄hDBp*4=30H94HYr^4,,"!dKq$j5L^&[;~Ki!|GɩYڤ=ON *\(ϱDUdSon&$D# W. 4hO3uyy=8To7` Ke)`uܵŰkz/-=E.',+sl+[#7;VLn%tEXtdate:create2017-02-07T14:56:38+00:00 rj%tEXtdate:modify2017-02-07T14:56:38+00:00{/9FtEXtsoftwareImageMagick 6.7.8-9 2014-05-12 Q16 http://www.imagemagick.org܆tEXtThumb::Document::Pages1/tEXtThumb::Image::height192rtEXtThumb::Image::Width192Ӭ!tEXtThumb::Mimetypeimage/png?VNtEXtThumb::MTime1486479398*%tEXtThumb::Size0BB>VtEXtThumb::URIfile:///mntlog/favicons/2017-02-07/9ac6941022fbda287f1ba7f1b6b736d8.ico.png< ܸIENDB`prewikka-5.2.0/prewikka/htdocs/images/prelude-logo.png0000644000000000000000000004533313726165107022763 0ustar rootroot00000000000000PNG  IHDR]-`iCCPICC profile(}=H@_SkU* vqP,8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊|E'?3Dz!u_<ܟWɛ ijL7,uMKOf%I!>'3ď\]~\tXa##6ۘ x8 Y[r5_kiFH 2@jH~?ɵFyTBr[09&b@Ŷ?F.Шm7N3p:0IzEm⺥{0KH~B7倁[g C]-h<ۿgrqybKGDC pHYs B(xtIME ˁ IDATxK8 PBdn{=RDۄs r`G[2z9ݛ(e3$%~9gZ.[.^l`" P w1Ƹ ȜEQ K:i?x'{:*C-+@tZ+7F$չ^/m{@u Y 9T%w*Ij\p}5h_xCJ) Px\ ^W$(PR +l(V_X`W!D\iqBTUp9v؍B Ek0+P {RtuAAaM9 Qؖ+Sd`OP`H֜r`p{+&tx+)`m(-EER E 2EW(XM֥J\- @*] EW(֥ EW&)Qtx+] EW(<@Ptx+ !Q Pt9 .EW(<@ѕ,2T(BB0֦ E Q ֥J\1 @ ]d} $k1FNNF!)S!{w |W(P;+B1xiE~NQ ]_\^BQj/-WyW(JE׏QT85^H_wJS[0^9clV;'(V-'^)2ύSR@h^(r1 '҅OW(P k;_95((w c P%ӨJ'^)csKs4kApb!yp"jP 94M9Wt!Tn ΄r0q}n6O􏤣vgQ @q@$N%QwlQ|-aV 0ECӄ(No KX+P `Us @nB)0S|p ،+)fS|Jza`sscl=7L"8^ژqFN }abպf!U3GK/&5/QMڋg6^kvkkV_|5*@ߔ(}XxeqkWbv5mr>wkMyTۭ_(&ZLۂ?UoJZJGj?{Rj] ɫumJ]#@ ^un{ 1{濒ek~T#>M~pG| 0l@i=mV^'́%8NW]r\hڮv"KY Xwd3' _(wO$h;m'?G s_RPf ,0.}Ŀm(7: dgWڠOs6`(huyLu:s9^Zab+3=wgjQ@ /DlXa~嶭v/j?k~"\Q܆)IWD$3⍶~Ew+r쵌5Nzh}IWV[ϝd+TwNr>;gmp?k Dڞq{'EW-,w_B'g}U)y͓,* }@-9iQ vX'̼xv5]t촻<8@Xa}-Nʧ]~_ ̂&cjqUh?Rr#%]14!czcPQ0NWvY{k掗V@.>SCi9x5K$Kw8!wWY6L+y92}N79.%8Rr>eX U<ßN!L%Ra/~Du~MN{kK[yw z_yKӊoysM00)e[e0lw6OctusV~(]j9q 姗y9Ɗ\SS/$;H{Kf, sMFcI 1k4V]]׸?n d>7V4p ?ψ4T1F '9W8Rr<0Oxmͅ XSYv>742OcM5>ix7>$y~9r(﯂ n6OQOJ?JŷlG"o1׸zLg븐lms>'c=v4n匒e8nF 9{?1bm׎w67_(~k^[6 :NJ"Ac`yqk-]21~uZƈ¶1"icGy+P;MTy5!rPz ;:ύ*ӭ?̟?]_G|۟_wU<@I7iuU[*"Ays(hG,yKi U|Nj ThB/km_O WȷD8ޞEK!+[PWY/:Ca9j`E)yW_?QІjWQy-FbϲҞ$T;{^* l|IՆd?hZj@mb'ϟ1{K䑋\ϹeB\^}_']B,k3~m,D{5ez36P_'Qا_}bln"|M k^Nn~X"`㸜~f.7vRr>8w U/,rxi㥹*;gvHmRqgE5P(d+_˾ odn)}R*uQ֚<_]+jK{c]1 RtJxN\KIq|ah1tiʛ͡iCłEfq=MIܼ$7P|EY{Og*kya԰xplR2}'9Grv/}4.N/bo.^|X/lu~_']~n+ ;sU. Ǿ~L4? Hw4چG%7`.oxY㳢 SBrƎ콱 t_Dasza6c{k7߼ C`ֶ0sBК'ꉯ(`oIZE}FsG?[.j?]p߹qg9:Nmp^+iWcdIJ?Jao]~y &j[]p*ַY#r)Dso:uEkOw&}d4 ; =U{K'_EW@asぅ6޷ lΡżƥCQ:5PPK}r}r%Oi]+Nݸ~E ]/LmE?sئ_ &'-F̵y!m_CZnj?"P|nPx 94M,k8kEM# "o@lz{ƞcw|hxte+@,6r Ov&>17AߍYҏo,&0yGyym_Uݸ~?}WPWW: @qD{i8``)\Y㝒"U~f[}X|[ 7})ƭ6_\/\^zx70q9|tM"K%%EW(_$YgRX's$ <6K$Zl01!q慷1s0O۔>5N?cv4W s^/5/? 3 "@{ahE@x ìrIy"}z)A;Q9f>3X|BɎ'!Rة+xKl8ޞEaE}(BK /x =e˭(C׵Da_RFQ*Cdc]~ 9N[̞S:A?:=,ywa\K?dKi=d̴q^V{k8' y^){1?N4&@NUҷZr+Wb2 ^4Jدu~\l2VKOƼqKNkU m)rAӈo'PעFiZ|4N16I<(2C'_/k?MWmJx $>[;]OK<(X gsN>@~Z/nk7jsk6;fFfq=O9W6. m녭e}ڱzaiSϸ+J)1,7Gup9trym!IWbf9 |EsSƳY^ `Iahž/wi,jFy@?07m^g;^mw+L$}B^ЏcZi߷%>d/*^\ո]k}4B_"Tn n{A0;\4za^>r62&R|Xm{~[wK@|'?,PKqm@nW+b+3^.~13 OM_;u/|ݬPSGK+cs+9k[׫=}IWV 16Bb(5%b϶n߮wl :xS[9sϛKz~N(~Cw+ b#ukZfYm{OQu=w16}Xbo_MYbuG.?_8eZF}h45U&zE~h;gh3~[$}qLJ'+;=G]-6^WUt,[@U q_U ;5[PԻVQt7v(y/| g~'*-J@q ąXcΪou+{+#_i5۬9Mmo=+6*-z+PEV4n0_{5؋a|q$&h |hrI!4Z& `WO2CG //KZ,j~fE[2:tbY [㥍U4eчı{8 LM?10)%DΟ 5~z9gܣ IDATD}c53%fǒƸ+0O^t(,N8s)s`?vnldͱw}w@"SM$ <ڇ"k9<9<KkdE|- 9lkD RRz簒~>?sL8ޞf=hm]KCe<#я%ki}@[6}Q&}7`-m_1=Gh?B`@?ҏ+m-޶G?7w Ԯ~^6Z^~uޅZzN;Y nσvybZs߅j` f Kn(ԫo5jxͶ}z&P<u^-RCVxK'o>tP7K؟R{%[phw#4;曼g*/Դ&0v%V[mMKlkyu}7`ObrsnTxi8hd?ΜN/]rrZ[ned6l4+RHJY@kKs> [,XWPFZkT` |h_2ܚ&ZP: D]3 ~&'kbO?{ k5WX+MӤyBIw]+uER}um δwxxV !6ʇ>8Z+%E/ 4ŏ\~Pt-L XrDM9'X5OK1-(BJ]Rt-AkGm_E`]Au7>/ryhV'ttA%̩fCoW'! @kXFgT9N<=9Cԏs%U o|슮/;BBbln0+R{P(%r\*úUή芜!gȁ`|y=+"g5ahG5/Q$* _|^3#)CcW^99P?(og!ȗwtxEW @`!?vBAM s׵DHY͡i2iȥH-gIW}߂V7' axj*9 Ex/{)ʡJdt >EW,DQrBsh`/l|y>wȊq C}V^CM$kܶ" mS.!ϣV SWB7'ftv']A|s2k@>]9 g vTC X,G5s!@ah@]xLѕy Kͩ͡i6OQž7BѕahEOqB ; H}*|IWI͸P0y^'~܊K Op_0tH Aܬpyќ!3PRʙ>@s%I`R8?5G)~/dNdPr)G†~=~9K%6{ sƒث 0DJ P9E4mPḵԃkX{WfN$P)oN/]wP,=O;'H+-p}d̉)}+nhW Ǐ4^9adsrsǜ]% Cu4;w͉M4]~KrM @f]@'M~9i\f]_ܩ /E~C-raV1ӻ^o69?01z_:@ WNԪ guY0fMNp٣kh'{RseN4'P<|G`#SlDa杮K.hP u bv+ 9>V@x1 OGyeM`_@[!)4!}$|]BuxSdr[9@nJ+`=!XN_ '/tݻUUYqDǗA~!׹|>o}c j#3%P2ڀ7NY%ܕgek~c~r9gykZSQI4M SN'kok7IZ8v0P] e#9"iU2O[lȃo4O=:~I)N 9-{޾~[n[3x=JwjoblnƲ_K&\7N}mr۵C %M`=nLPK%7N_7ESj%~|郾y9[|.[bNcN3Gv-ޱWB)z)v\aXk/̀ 9iM'^bg}ymH 9o~&L[mS!x' hfAy4 Ól.6toKέ9aڥѽ1\{Qг'Ooi;ْk2Cs5u٩X@{g>#5&Eג %/R_H G:מߛYlXӬ<^/?{4`~fZG疅*O/='<Ic )>qW:2xvuup 5{Y];dE@9)W-~gB_'/^swY3Zsb:cw910g^qIzsȜ]u{>\'?+q`,'SKĻ R}#5Ϙb=N/#Ŷ'i>]W04WΩr?Vw~6;*\olW@K JjHewbӪ ` R![aTcG_͡Z5R+R~W4SG`vqlސGh]+ZHF5] Ww890'jܳw.u`O[Tm}Zt EV+w*ԯIjd?71'9vSåǏb1d&\*RK-k\ Wu 0왗x}s&՜|wK+ΉLO9-4+_k|Thwšy "w/\ iocrlkx>I~},M|(sלxzJYX:h۽ C~xg8[Ձ /<2X\ 6$Jl޷Vgx5zI9W$o2|@*=Siű)R?J'wqHn7k=;}0]p\Cy8ޞE᝹z>vx&@\Ie^ωQf^?Nzf0gN3$zq}O&7l, ]~wNTq~0r*סYO }7^seýfӤDzCeӳ!` G~ 0+m lԳb?^;eNdZ4}f|.”Ƅ["&q 0`] qK}`% mFω̉ωN^e=iK3H/'m>͹=X6/D[%3^ZcY]M<պؗ=H~`ja6E=9~IEv/sb;@s8^ N*ظ'QHpsz9Լč^=ϞoXSLQ}/`lEl4nJy{*a\ %a9Q=(0)W9B=m{܂)}`CmI{"P7?LZGk7KPCDl"k̉"6G_^/Le+Þ 9'D e;܄a|] 0mi lȫM\xs ,`e/ /PY`)kUXRYY s6^`r\7V 9rLkar| @xXw|.` 2CcoH"*`NN5 @n {Xq+IB9;!ϣh}0 O" oˍktswr|nh`Qsx`ToDrM[{Z礫M=,l}yo0<5} IJ^ؗD]?_kV(w.V[ .p?'8ޞed[Ir}Mˀ9m96aS>(nٚVu7Q`<c4~ ;7WQGu6'JFַS0 O$9 9&{HA9Y'@ ahz U.u4q"ubOả e>1~-x(-< Xsh^GصŸ9Yľ?L\_+B9t`ZuS,^x$y9li ]84RH9ŵ9aj$Xl}oi%JIr|PI[ituIxiZkؖ+@l(6>@kyy9u&ahEڗU 5-2*r=2#xRsEGk=0 O%b UЇTN-64]z aY؁+@cm{:y{zRڔ+}ȕw\DZӅ~K79sr } K' `Xk/h]1b럟9V'~ :Cia˺pj}i>Wț Zy(N}sACkBc!^Yy?w_D;,nHOV Wd"|vgz%F]~5~<Zw8Hk3W{^oW[oo!kNdz(M]7.%a-R`0<31Վ Pl!\N/] :Xon 1`=xiShSk=#+a}SA 1jaCېMc}'] ݆o3sh)m5' |̉ |x9^Ch2JسSsah]! :BG|`͇!UqF=,*^Cy/!zԸvKi\ˮ>}RH߯N Np!L? s2NWcrLty2V̹u\a 9n?5)bx}]=i~=etw|t[@UI7UcJ{ͱcm1cv9q?SN--9X3y9챀(&5.n,k=69BkRh_͉To)Iz`"W#5NSwٰQ0_xf88 (6:w[k#ahrsoɟUֱm}-[ ]7K[윸|s[/f'oΆy:*ʥq5"a~l>_zC@EV+%7 4ͽߋ51tKkC0=sjEAK-ҷ|ᅰbb?n[cj=%X]}sWŜL{͉s=bûSc6kAύ%~`yw6K-S|`T\G1x_rSaRZl6V k;)BȺ`eڜE,s(Z߱T7XRQx $nlooX).IDAT1'hL>Ѷ{oJ׊V3ff5_gNьk͉K Jcʍ{˛Ӟ?56 e5<&/k~ܚؐ)9?hJ}WןIu|-.;fz )jN5'.~PsCys"/mnW4r{y}n0#vֳ/+nnRɩ9,KP(~1cJ,6K}sw k9dJSr}L}TѼty;S)OJy/|ϩp)1K'wZ; =al$&(~짶Ø\*6^W{/ڢ9qR~k5ޓr,l%\׍W0O7 ^1K* rNIO\㗶=|a>\ ӜózSaq%| ýcI>Wwaw?o qoGVBϱ||sDsbHkjO\^;<:-ʠ<%o[~^huM7ec0<9q=ks˔5`-99wKr~DsK񞢲b+olJt qThesW?!w)'sͽ`ysq/Bβ_mgRCr CIb++SǓXQKhK' i0>PDr9.S~=>'1&J}eo%ͭm-Σ + P3-ۤrEf]}Ћ0|a2GA߱Ʈk}*M/w%A-i!V< qd"|;jd2&<;֚o5(sj|CwX㯈xL\ٖd q]"'(bܮ4ƆVӔdΔd ,)W(G'4B{aZW`-NBY V0c!lL( 8 yQtxCQXP&EWoJ(ahE2Bu+¦>|+I^M P ү8 e }0 A}g'Ry+(ZY9g/ x+M`G ?EW()W(+\lGʣ V(+D x+] ׄS(<@*&] EWp30+TF1`YPtxi``EW"r]ۻ܄a(Dt;&"DKHb$>g`$O]QR9+``"qsNϥ(YB")ܝ 0@].DA`Np0<XBtDGgg`)KW&R+Pr>}:'?3,%y^xp(ʲ: x*""R]@ "=^W&KW%{ x\`=^V`-0VkDw~!`-f|#txղx7(n?[-r]_V"+QߑsRbIENDB`prewikka-5.2.0/prewikka/htdocs/js/0000755000000000000000000000000013726165110017010 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/js/locales/0000755000000000000000000000000013726165110020432 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/0000755000000000000000000000000013726165110021712 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-de.js0000644000000000000000000001153113726165107025030 0ustar rootroot00000000000000/** * @license jqGrid German Translation * Version 1.0.0 (developed for jQuery Grid 3.3.1) * Olaf Klöppel opensource@blue-hit.de * http://blue-hit.de/ * * Updated for jqGrid 3.8 * Andreas Flack * http://www.contentcontrol-berlin.de * * Updated for jQuery 4.4 and for 4.8 by * Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com * the format corresponds now the format from * https://github.com/jquery/globalize/blob/master/lib/cultures/globalize.culture.de.js * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html **/ !function(n){"use strict";"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e||window)),n(t),t}:n(jQuery)}(function(e){"use strict";var t={isRTL:!1,defaults:{recordtext:"Zeige {0} - {1} von {2}",emptyrecords:"Keine Datensätze vorhanden",loadtext:"Ladevorgang...",pgtext:"Seite {0} von {1}",pgfirst:"Erste Seite",pglast:"Letzte Seite",pgnext:"Nächste Seite",pgprev:"Vorherige Seite",pgrecs:"Datensätze pro Seite",showhide:"Tabelle auf- oder zuklappen",savetext:"Wird gespeichert..."},search:{caption:"Suche...",Find:"Suchen",Reset:"Zurücksetzen",odata:[{oper:"eq",text:"gleich"},{oper:"ne",text:"ungleich"},{oper:"lt",text:"kleiner"},{oper:"le",text:"kleiner gleich"},{oper:"gt",text:"größer"},{oper:"ge",text:"größer gleich"},{oper:"bw",text:"beginnt mit"},{oper:"bn",text:"beginnt nicht mit"},{oper:"in",text:"ist in"},{oper:"ni",text:"ist nicht in"},{oper:"ew",text:"endet mit"},{oper:"en",text:"endet nicht mit"},{oper:"cn",text:"enthält"},{oper:"nc",text:"enthält nicht"},{oper:"nu",text:"ist Null"},{oper:"nn",text:"ist nicht Null"}],groupOps:[{op:"AND",text:"alle"},{op:"OR",text:"mindestens eine"}],addGroupTitle:"Gruppe hinzufügen",deleteGroupTitle:"Gruppe löschen",addRuleTitle:"Regel hinzufügen",deleteRuleTitle:"Regel löschen",operandTitle:"Klicken Sie, um die Suchoperation zu wählen.",resetTitle:"Suchwert zurücksetzen"},edit:{addCaption:"Datensatz hinzufügen",editCaption:"Datensatz bearbeiten",bSubmit:"Speichern",bCancel:"Abbrechen",bClose:"Schließen",saveData:"Daten wurden geändert! Änderungen speichern?",bYes:"ja",bNo:"nein",bExit:"abbrechen",msg:{required:"Feld ist erforderlich",number:"Bitte geben Sie eine Zahl ein",minValue:"Wert muss größer oder gleich sein, als ",maxValue:"Wert muss kleiner oder gleich sein, als ",email:"ist keine gültige E-Mail-Adresse",integer:"Bitte geben Sie eine Ganzzahl ein",date:"Bitte geben Sie ein gültiges Datum ein",url:"ist keine gültige URL. Präfix muss eingegeben werden ('http://' oder 'https://')",nodefined:" ist nicht definiert!",novalue:" Rückgabewert ist erforderlich!",customarray:"Benutzerdefinierte Funktion sollte ein Array zurückgeben!",customfcheck:"Benutzerdefinierte Funktion sollte im Falle der benutzerdefinierten Überprüfung vorhanden sein!"}},view:{caption:"Datensatz anzeigen",bClose:"Schließen"},del:{caption:"Löschen",msg:"Ausgewählte Datensätze löschen?",bSubmit:"Löschen",bCancel:"Abbrechen"},nav:{edittext:"",edittitle:"Ausgewählte Zeile bearbeiten",addtext:"",addtitle:"Neue Zeile einfügen",deltext:"",deltitle:"Ausgewählte Zeile löschen",searchtext:"",searchtitle:"Datensatz suchen",refreshtext:"",refreshtitle:"Tabelle neu laden",alertcap:"Warnung",alerttext:"Bitte Zeile auswählen",viewtext:"",viewtitle:"Ausgewählte Zeile anzeigen",savetext:"",savetitle:"Änderungen speichern",canceltext:"",canceltitle:"Bearbeitung der Zeile abbrechen"},col:{caption:"Spalten auswählen",bSubmit:"Speichern",bCancel:"Abbrechen"},errors:{errcap:"Fehler",nourl:"Keine URL angegeben",norecords:"Keine Datensätze zu bearbeiten",model:"colNames und colModel sind unterschiedlich lang!"},formatter:{integer:{thousandsSeparator:".",defaultValue:"0"},number:{decimalSeparator:",",thousandsSeparator:".",decimalPlaces:2,defaultValue:"0,00"},currency:{decimalSeparator:",",thousandsSeparator:".",decimalPlaces:2,prefix:"",suffix:" €",defaultValue:"0,00"},date:{dayNames:["So","Mo","Di","Mi","Do","Fr","Sa","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],monthNames:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],AmPm:["","","",""],S:function(){return"."},srcformat:"Y-m-d",newformat:"d.m.Y",masks:{ShortDate:"d.m.Y",LongDate:"l, j. F Y",FullDateTime:"l, j. F Y H:i:s",MonthDay:"d F",ShortTime:"H:i",LongTime:"H:i:s",YearMonth:"F Y"}}}};e.jgrid=e.jgrid||{},e.extend(!0,e.jgrid,{defaults:{locale:"de-DE"},locales:{de:e.extend({},t,{name:"Deutsch",nameEnglish:"German"}),"de-DE":e.extend({},t,{name:"Deutsch (Deutschland)",nameEnglish:"German (Germany)"})}})}); //# sourceMappingURL=grid.locale-de.js.mapprewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-de.js.map0000644000000000000000000000755213726165107025614 0ustar rootroot00000000000000{"version":3,"sources":["../grid.locale-de.js"],"names":["factory","define","amd","module","exports","root","$","undefined","window","require","jQuery","locInfo","isRTL","defaults","recordtext","emptyrecords","loadtext","pgtext","pgfirst","pglast","pgnext","pgprev","pgrecs","showhide","savetext","search","caption","Find","Reset","odata","oper","text","groupOps","op","addGroupTitle","deleteGroupTitle","addRuleTitle","deleteRuleTitle","operandTitle","resetTitle","edit","addCaption","editCaption","bSubmit","bCancel","bClose","saveData","bYes","bNo","bExit","msg","required","number","minValue","maxValue","email","integer","date","url","nodefined","novalue","customarray","customfcheck","view","del","nav","edittext","edittitle","addtext","addtitle","deltext","deltitle","searchtext","searchtitle","refreshtext","refreshtitle","alertcap","alerttext","viewtext","viewtitle","savetitle","canceltext","canceltitle","col","errors","errcap","nourl","norecords","model","formatter","thousandsSeparator","defaultValue","decimalSeparator","decimalPlaces","currency","prefix","suffix","dayNames","monthNames","AmPm","S","srcformat","newformat","masks","ShortDate","LongDate","FullDateTime","MonthDay","ShortTime","LongTime","YearMonth","jgrid","extend","locale","locales","de","name","nameEnglish","de-DE"],"mappings":";;;;;;;;;;;;;;;;;;;CAsBC,SAAUA,GACV,aACsB,mBAAXC,QAAyBA,OAAOC,IAE1CD,OAAO,CAAC,UAAWD,GACS,iBAAXG,QAAuBA,OAAOC,QAE/CD,OAAOC,QAAU,SAAUC,EAAMC,GAWhC,YAVUC,IAAND,IAKHA,EAAsB,oBAAXE,OACTC,QAAQ,UACRA,QAAQ,SAARA,CAAkBJ,GAAQG,SAE7BR,EAAQM,GACDA,GAIRN,EAAQU,QAtBV,CAwBE,SAAUJ,GACZ,aACA,IAAIK,EAAU,CACbC,OAAO,EACPC,SAAU,CACTC,WAAY,0BACZC,aAAc,6BACdC,SAAU,iBACVC,OAAQ,oBACRC,QAAS,cACTC,OAAQ,eACRC,OAAQ,gBACRC,OAAQ,kBACRC,OAAQ,uBACRC,SAAU,8BACVC,SAAU,uBAEXC,OAAQ,CACPC,QAAS,WACTC,KAAM,SACNC,MAAO,eACPC,MAAO,CACN,CAAEC,KAAM,KAAMC,KAAM,UACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,WACpB,CAAED,KAAM,KAAMC,KAAM,kBACpB,CAAED,KAAM,KAAMC,KAAM,UACpB,CAAED,KAAM,KAAMC,KAAM,iBACpB,CAAED,KAAM,KAAMC,KAAM,eACpB,CAAED,KAAM,KAAMC,KAAM,qBACpB,CAAED,KAAM,KAAMC,KAAM,UACpB,CAAED,KAAM,KAAMC,KAAM,gBACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,mBACpB,CAAED,KAAM,KAAMC,KAAM,WACpB,CAAED,KAAM,KAAMC,KAAM,iBACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,mBAErBC,SAAU,CACT,CAAEC,GAAI,MAAOF,KAAM,QACnB,CAAEE,GAAI,KAAMF,KAAM,oBAEnBG,cAAe,oBACfC,iBAAkB,iBAClBC,aAAc,mBACdC,gBAAiB,gBACjBC,aAAc,+CACdC,WAAY,yBAEbC,KAAM,CACLC,WAAY,uBACZC,YAAa,uBACbC,QAAS,YACTC,QAAS,YACTC,OAAQ,YACRC,SAAU,+CACVC,KAAM,KACNC,IAAK,OACLC,MAAO,YACPC,IAAK,CACJC,SAAU,wBACVC,OAAQ,gCACRC,SAAU,0CACVC,SAAU,2CACVC,MAAO,mCACPC,QAAS,oCACTC,KAAM,yCACNC,IAAK,mFACLC,UAAW,wBACXC,QAAS,kCACTC,YAAa,4DACbC,aAAc,oGAGhBC,KAAM,CACLrC,QAAS,qBACTmB,OAAQ,aAETmB,IAAK,CACJtC,QAAS,UACTwB,IAAK,kCACLP,QAAS,UACTC,QAAS,aAEVqB,IAAK,CACJC,SAAU,GACVC,UAAW,+BACXC,QAAS,GACTC,SAAU,sBACVC,QAAS,GACTC,SAAU,4BACVC,WAAY,GACZC,YAAa,mBACbC,YAAa,GACbC,aAAc,oBACdC,SAAU,UACVC,UAAW,wBACXC,SAAU,GACVC,UAAW,6BACXvD,SAAU,GACVwD,UAAW,uBACXC,WAAY,GACZC,YAAa,mCAEdC,IAAK,CACJzD,QAAS,oBACTiB,QAAS,YACTC,QAAS,aAEVwC,OAAQ,CACPC,OAAQ,SACRC,MAAO,sBACPC,UAAW,iCACXC,MAAO,oDAERC,UAAW,CACVjC,QAAS,CAAEkC,mBAAoB,IAAKC,aAAc,KAClDvC,OAAQ,CAAEwC,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGF,aAAc,QAC1FG,SAAU,CAAEF,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGE,OAAQ,GAAIC,OAAQ,KAAML,aAAc,QACtHlC,KAAM,CACLwC,SAAY,CACX,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACpC,UAAW,SAAU,WAAY,WAAY,aAAc,UAAW,WAEvEC,WAAY,CACX,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7E,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAE5GC,KAAM,CAAC,GAAI,GAAI,GAAI,IACnBC,EAAG,WAAa,MAAO,KACvBC,UAAW,QACXC,UAAW,QACXC,MAAO,CAQNC,UAAW,QAMXC,SAAU,YASVC,aAAc,kBAIdC,SAAU,MAIVC,UAAW,MAKXC,SAAU,QAIVC,UAAW,UAKfxG,EAAEyG,MAAQzG,EAAEyG,OAAS,GACrBzG,EAAE0G,QAAO,EAAM1G,EAAEyG,MAAO,CACvBlG,SAAU,CACToG,OAAQ,SAETC,QAAS,CAMRC,GAAI7G,EAAE0G,OAAO,GAAIrG,EAAS,CAAEyG,KAAM,UAAWC,YAAa,WAC1DC,QAAShH,EAAE0G,OAAO,GAAIrG,EAAS,CAAEyG,KAAM,wBAAyBC,YAAa","file":"grid.locale-de.js"}prewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-en.js0000644000000000000000000001020213726165107025034 0ustar rootroot00000000000000/** * @license jqGrid English Translation * Tony Tomov tony@trirand.com * modified by Oleg Kiriljuk oleg.kiriljuk@ok-soft-gmbh.com * http://trirand.com/blog/ * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html **/ !function(r){"use strict";"function"==typeof define&&define.amd?define(["jquery"],r):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e||window)),r(t),t}:r(jQuery)}(function(e){"use strict";var t={name:"English (United States)",nameEnglish:"English (United States)",isRTL:!1,defaults:{recordtext:"View {0} - {1} of {2}",emptyrecords:"No records to view",loadtext:"Loading...",pgtext:"Page {0} of {1}",pgfirst:"First Page",pglast:"Last Page",pgnext:"Next Page",pgprev:"Previous Page",pgrecs:"Records per Page",showhide:"Toggle Expand Collapse Grid",savetext:"Saving..."},search:{caption:"Search...",Find:"Find",Reset:"Reset",odata:[{oper:"eq",text:"equal"},{oper:"ne",text:"not equal"},{oper:"lt",text:"less"},{oper:"le",text:"less or equal"},{oper:"gt",text:"greater"},{oper:"ge",text:"greater or equal"},{oper:"bw",text:"begins with"},{oper:"bn",text:"does not begin with"},{oper:"in",text:"is in"},{oper:"ni",text:"is not in"},{oper:"ew",text:"ends with"},{oper:"en",text:"does not end with"},{oper:"cn",text:"contains"},{oper:"nc",text:"does not contain"},{oper:"nu",text:"is null"},{oper:"nn",text:"is not null"}],groupOps:[{op:"AND",text:"all"},{op:"OR",text:"any"}],addGroupTitle:"Add subgroup",deleteGroupTitle:"Delete group",addRuleTitle:"Add rule",deleteRuleTitle:"Delete rule",operandTitle:"Click to select search operation.",resetTitle:"Reset Search Value"},edit:{addCaption:"Add Record",editCaption:"Edit Record",bSubmit:"Submit",bCancel:"Cancel",bClose:"Close",saveData:"Data has been changed! Save changes?",bYes:"Yes",bNo:"No",bExit:"Cancel",msg:{required:"Field is required",number:"Please, enter valid number",minValue:"value must be greater than or equal to ",maxValue:"value must be less than or equal to",email:"is not a valid e-mail",integer:"Please, enter valid integer value",date:"Please, enter valid date value",url:"is not a valid URL. Prefix required ('http://' or 'https://')",nodefined:" is not defined!",novalue:" return value is required!",customarray:"Custom function should return array!",customfcheck:"Custom function should be present in case of custom checking!"}},view:{caption:"View Record",bClose:"Close"},del:{caption:"Delete",msg:"Delete selected record(s)?",bSubmit:"Delete",bCancel:"Cancel"},nav:{edittext:"",edittitle:"Edit selected row",addtext:"",addtitle:"Add new row",deltext:"",deltitle:"Delete selected row",searchtext:"",searchtitle:"Find records",refreshtext:"",refreshtitle:"Reload Grid",alertcap:"Warning",alerttext:"Please, select row",viewtext:"",viewtitle:"View selected row",savetext:"",savetitle:"Save row",canceltext:"",canceltitle:"Cancel row editing"},col:{caption:"Select columns",bSubmit:"Ok",bCancel:"Cancel"},errors:{errcap:"Error",nourl:"No url is set",norecords:"No records to process",model:"Length of colNames <> colModel!"},formatter:{integer:{thousandsSeparator:",",defaultValue:"0"},number:{decimalSeparator:".",thousandsSeparator:",",decimalPlaces:2,defaultValue:"0.00"},currency:{decimalSeparator:".",thousandsSeparator:",",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0.00"},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(e){return e<11||13 Nombre de données (colModel)!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0,00"},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0,00"},date:{dayNames:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],monthNames:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"],AmPm:["am","pm","AM","PM"],S:function(e){return 1===e?"er":"e"},srcformat:"Y-m-d",newformat:"d/m/Y",masks:{ShortDate:"j/n/Y",LongDate:"l j n F Y",FullDateTime:"l j n F Y H:i:s",MonthDay:"j F",ShortTime:"H:i",LongTime:"H:i:s",YearMonth:"F Y"}}}};e.jgrid=e.jgrid||{},e.extend(!0,e.jgrid,{defaults:{locale:"fr-FR"},locales:{fr:e.extend({},r,{name:"français",nameEnglish:"French"}),"fr-FR":e.extend({},r,{name:"français (France)",nameEnglish:"French (France)"})}})}); //# sourceMappingURL=grid.locale-fr.js.mapprewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-fr.js.map0000644000000000000000000000755013726165107025631 0ustar rootroot00000000000000{"version":3,"sources":["../grid.locale-fr.js"],"names":["factory","define","amd","module","exports","root","$","undefined","window","require","jQuery","locInfo","isRTL","defaults","recordtext","emptyrecords","loadtext","pgtext","pgfirst","pglast","pgnext","pgprev","pgrecs","showhide","savetext","search","caption","Find","Reset","odata","oper","text","groupOps","op","addGroupTitle","deleteGroupTitle","addRuleTitle","deleteRuleTitle","operandTitle","resetTitle","edit","addCaption","editCaption","bSubmit","bCancel","bClose","saveData","bYes","bNo","bExit","msg","required","number","minValue","maxValue","email","integer","url","nodefined","novalue","customarray","customfcheck","view","del","nav","edittext","edittitle","addtext","addtitle","deltext","deltitle","searchtext","searchtitle","refreshtext","refreshtitle","alertcap","alerttext","viewtext","viewtitle","savetitle","canceltext","canceltitle","col","errors","errcap","nourl","norecords","model","formatter","thousandsSeparator","defaultValue","decimalSeparator","decimalPlaces","currency","prefix","suffix","date","dayNames","monthNames","AmPm","S","j","srcformat","newformat","masks","ShortDate","LongDate","FullDateTime","MonthDay","ShortTime","LongTime","YearMonth","jgrid","extend","locale","locales","fr","name","nameEnglish","fr-FR"],"mappings":";;;;;;;;CAWC,SAAUA,GACV,aACsB,mBAAXC,QAAyBA,OAAOC,IAE1CD,OAAO,CAAC,UAAWD,GACS,iBAAXG,QAAuBA,OAAOC,QAE/CD,OAAOC,QAAU,SAAUC,EAAMC,GAWhC,YAVUC,IAAND,IAKHA,EAAsB,oBAAXE,OACTC,QAAQ,UACRA,QAAQ,SAARA,CAAkBJ,GAAQG,SAE7BR,EAAQM,GACDA,GAIRN,EAAQU,QAtBV,CAwBE,SAAUJ,GACZ,aACA,IAAIK,EAAU,CACbC,OAAO,EACPC,SAAU,CACTC,WAAY,oCACZC,aAAc,kCACdC,SAAU,gBACVC,OAAQ,mBACRC,QAAS,gBACTC,OAAQ,gBACRC,OAAQ,gBACRC,OAAQ,kBACRC,OAAQ,2BACRC,SAAU,8BACVC,SAAU,qBAEXC,OAAQ,CACPC,QAAS,eACTC,KAAM,WACNC,MAAO,gBACPC,MAAO,CACN,CAAEC,KAAM,KAAMC,KAAM,QACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,qBACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,qBACpB,CAAED,KAAM,KAAMC,KAAM,gBACpB,CAAED,KAAM,KAAMC,KAAM,uBACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,kBACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,oBACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,mBACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,mBAErBC,SAAU,CACT,CAAEC,GAAI,MAAOF,KAAM,QACnB,CAAEE,GAAI,KAAOF,KAAM,gBAEpBG,cAAe,eACfC,iBAAkB,eAClBC,aAAc,WACdC,gBAAiB,cACjBC,aAAc,sDACdC,WAAY,gCAEbC,KAAM,CACLC,WAAY,UACZC,YAAa,SACbC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,SAAU,2DACVC,KAAM,MACNC,IAAK,MACLC,MAAO,UACPC,IAAK,CACJC,SAAU,oBACVC,OAAQ,8BACRC,SAAU,4CACVC,SAAU,4CACVC,MAAO,6BACPC,QAAS,8BACTC,IAAK,2EACLC,UAAW,qBACXC,QAAS,oCACTC,YAAa,mEACbC,aAAc,mGAGhBC,KAAM,CACLpC,QAAS,0BACTmB,OAAQ,UAETkB,IAAK,CACJrC,QAAS,YACTwB,IAAK,+CACLP,QAAS,YACTC,QAAS,WAEVoB,IAAK,CACJC,SAAU,GACVC,UAAW,+BACXC,QAAS,GACTC,SAAU,oBACVC,QAAS,GACTC,SAAU,kCACVC,WAAY,GACZC,YAAa,6BACbC,YAAa,GACbC,aAAc,uBACdC,SAAU,gBACVC,UAAW,kCACXC,SAAU,GACVC,UAAW,iCACXtD,SAAU,GACVuD,UAAW,WACXC,WAAY,GACZC,YAAa,sBAEdC,IAAK,CACJxD,QAAS,gCACTiB,QAAS,UACTC,QAAS,WAEVuC,OAAQ,CACPC,OAAQ,SACRC,MAAO,kCACPC,UAAW,iCACXC,MAAO,gEAERC,UAAW,CACVhC,QAAS,CAAEiC,mBAAoB,IAAKC,aAAc,KAClDtC,OAAQ,CAAEuC,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGF,aAAc,QAC1FG,SAAU,CAAEF,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGE,OAAQ,GAAIC,OAAQ,GAAIL,aAAc,QACpHM,KAAM,CACLC,SAAU,CACT,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC1C,WAAY,QAAS,QAAS,WAAY,QAAS,WAAY,UAEhEC,WAAY,CACX,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7E,UAAW,UAAW,OAAQ,QAAS,MAAO,OAAQ,UAAW,OAAQ,YAAa,UAAW,WAAY,YAE9GC,KAAM,CAAC,KAAM,KAAM,KAAM,MACzBC,EAAG,SAAUC,GACZ,OAAa,IAANA,EAAU,KAAO,KAEzBC,UAAW,QACXC,UAAW,QACXC,MAAO,CACNC,UAAW,QACXC,SAAU,YACVC,aAAc,kBACdC,SAAU,MACVC,UAAW,MACXC,SAAU,QACVC,UAAW,UAKfzG,EAAE0G,MAAQ1G,EAAE0G,OAAS,GACrB1G,EAAE2G,QAAO,EAAM3G,EAAE0G,MAAO,CACvBnG,SAAU,CACTqG,OAAQ,SAETC,QAAS,CAMRC,GAAI9G,EAAE2G,OAAO,GAAItG,EAAS,CAAE0G,KAAM,WAAYC,YAAa,WAC3DC,QAASjH,EAAE2G,OAAO,GAAItG,EAAS,CAAE0G,KAAM,oBAAqBC,YAAa","file":"grid.locale-fr.js"}prewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-it.js0000644000000000000000000001014113726165107025050 0ustar rootroot00000000000000!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e||window)),a(t),t}:a(jQuery)}(function(e){"use strict";var t={isRTL:!1,defaults:{recordtext:"Visualizzati {0} - {1} di {2}",emptyrecords:"Nessun record da visualizzare",loadtext:"Caricamento...",pgtext:"Pagina {0} di {1}",pgfirst:"First Page",pglast:"Last Page",pgnext:"Next Page",pgprev:"Previous Page",pgrecs:"Records per Page",showhide:"Toggle Expand Collapse Grid",savetext:"Salvataggio in corso..."},search:{caption:"Ricerca...",Find:"Cerca",Reset:"Pulisci",odata:[{oper:"eq",text:"uguale"},{oper:"ne",text:"diverso"},{oper:"lt",text:"minore"},{oper:"le",text:"minore o uguale"},{oper:"gt",text:"maggiore"},{oper:"ge",text:"maggiore o uguale"},{oper:"bw",text:"inizia con"},{oper:"bn",text:"non inizia con"},{oper:"in",text:"in"},{oper:"ni",text:"non in"},{oper:"ew",text:"termina con"},{oper:"en",text:"non termina con"},{oper:"cn",text:"contiene"},{oper:"nc",text:"non contiene"},{oper:"nu",text:"is null"},{oper:"nn",text:"is not null"}],groupOps:[{op:"AND",text:"tutto"},{op:"OR",text:"almeno uno"}],addGroupTitle:"Add subgroup",deleteGroupTitle:"Delete group",addRuleTitle:"Add rule",deleteRuleTitle:"Delete rule",operandTitle:"Click to select search operation.",resetTitle:"Reset Search Value"},edit:{addCaption:"Aggiungi Record",editCaption:"Modifica Record",bSubmit:"Invia",bCancel:"Chiudi",bClose:"Chiudi",saveData:"Alcuni dati modificati! Salvare i cambiamenti?",bYes:"Si",bNo:"No",bExit:"Esci",msg:{required:"Campo richiesto",number:"Per favore, inserisci un valore valido",minValue:"il valore deve essere maggiore o uguale a ",maxValue:"il valore deve essere minore o uguale a",email:"e-mail non corretta",integer:"Per favore, inserisci un numero intero valido",date:"Per favore, inserisci una data valida",url:"URL non valido. Prefisso richiesto ('http://' or 'https://')",nodefined:" non è definito!",novalue:" valore di ritorno richiesto!",customarray:"La function custon deve tornare un array!",customfcheck:"La function custom deve esistere per il custom checking!"}},view:{caption:"Visualizzazione Record",bClose:"Chiudi"},del:{caption:"Cancella",msg:"Cancellare record selezionato/i?",bSubmit:"Cancella",bCancel:"Annulla"},nav:{edittext:"",edittitle:"Modifica record selezionato",addtext:"",addtitle:"Aggiungi nuovo record",deltext:"",deltitle:"Cancella record selezionato",searchtext:"",searchtitle:"Ricerca record",refreshtext:"",refreshtitle:"Aggiorna griglia",alertcap:"Attenzione",alerttext:"Per favore, seleziona un record",viewtext:"",viewtitle:"Visualizza riga selezionata",savetext:"",savetitle:"Salva riga",canceltext:"",canceltitle:"Annulla modifica riga"},col:{caption:"Mostra/Nascondi Colonne",bSubmit:"Invia",bCancel:"Annulla"},errors:{errcap:"Errore",nourl:"Url non settata",norecords:"Nessun record da elaborare",model:"Lunghezza di colNames <> colModel!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0,00"},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0,00"},date:{dayNames:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],monthNames:["Gen","Feb","Mar","Apr","Mag","Gui","Lug","Ago","Set","Ott","Nov","Dic","Genneio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Movembre","Dicembre"],AmPm:["am","pm","AM","PM"],S:function(e){return e<11||13 http://cldr.unicode.org/index) * Tomasz Pęczek tpeczek@gmail.com * http://tpeczek.blogspot.com; http://tpeczek.codeplex.com * * 22-01-2015: Updated locale strings * Robert 'Wooya' Gaudyn * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html **/ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&module.exports?module.exports=function(e,a){return void 0===a&&(a="undefined"!=typeof window?require("jquery"):require("jquery")(e||window)),t(a),a}:t(jQuery)}(function(e){"use strict";var a={isRTL:!1,defaults:{recordtext:"Pokaż {0} - {1} z {2}",emptyrecords:"Brak rekordów do pokazania",loadtext:"Ładowanie...",pgtext:"Strona {0} z {1}",pgfirst:"Pierwsza strona",pglast:"Ostatnia strona",pgnext:"Następna strona",pgprev:"Poprzednia strona",pgrecs:"Rekordów na stronę",showhide:"Przełącz zwinięcie/rozwinięcie tabeli",savetext:"Trwa zapisywanie..."},search:{caption:"Wyszukiwanie...",Find:"Szukaj",Reset:"Czyść",odata:[{oper:"eq",text:"dokładnie"},{oper:"ne",text:"różne od"},{oper:"lt",text:"mniejsze od"},{oper:"le",text:"mniejsze lub równe"},{oper:"gt",text:"większe od"},{oper:"ge",text:"większe lub równe"},{oper:"bw",text:"zaczyna się od"},{oper:"bn",text:"nie zaczyna się od"},{oper:"in",text:"jest w"},{oper:"ni",text:"nie jest w"},{oper:"ew",text:"kończy się na"},{oper:"en",text:"nie kończy się na"},{oper:"cn",text:"zawiera"},{oper:"nc",text:"nie zawiera"},{oper:"nu",text:"jest null"},{oper:"nn",text:"nie jest null"}],groupOps:[{op:"AND",text:"oraz"},{op:"OR",text:"lub"}],addGroupTitle:"Dodaj podgrupę",deleteGroupTitle:"Usuń grupę",addRuleTitle:"Dodaj regułę",deleteRuleTitle:"Usuń regułę",operandTitle:"Kliknij, aby wybrać operację wyszukiwania.",resetTitle:"Zresetuj wartość wyszukiwania"},edit:{addCaption:"Dodaj rekord",editCaption:"Edytuj rekord",bSubmit:"Zapisz",bCancel:"Anuluj",bClose:"Zamknij",saveData:"Dane zostały zmienione! Zapisać zmiany?",bYes:"Tak",bNo:"Nie",bExit:"Anuluj",msg:{required:"Pole jest wymagane",number:"Proszę wpisać poprawną liczbę",minValue:"Wartość musi być większa lub równa od",maxValue:"Wartość musi być mniejsza lub równa od",email:"nie jest poprawnym adresem e-mail",integer:"Proszę wpisać poprawną liczbę",date:"Proszę podaj poprawną datę",url:"jest niewłaściwym adresem URL. Pamiętaj o prefiksie ('http://' lub 'https://')",nodefined:" niezdefiniowane!",novalue:" wymagana jest wartość zwracana!",customarray:"Funkcja niestandardowa powinna zwracać tablicę!",customfcheck:"Funkcja niestandardowa powinna być obecna w przypadku niestandardowego sprawdzania!"}},view:{caption:"Pokaż rekord",bClose:"Zamknij"},del:{caption:"Usuń",msg:"Czy usunąć wybrany rekord(y)?",bSubmit:"Usuń",bCancel:"Anuluj"},nav:{edittext:"",edittitle:"Edytuj wybrany wiersz",addtext:"",addtitle:"Dodaj nowy wiersz",deltext:"",deltitle:"Usuń wybrany wiersz",searchtext:"",searchtitle:"Wyszukaj rekord",refreshtext:"",refreshtitle:"Przeładuj",alertcap:"Uwaga",alerttext:"Proszę wybrać wiersz",viewtext:"",viewtitle:"Pokaż wybrany wiersz",savetext:"",savetitle:"Zapisz wiersz",canceltext:"",canceltitle:"Anuluj edycję wiersza"},col:{caption:"Pokaż/Ukryj kolumny",bSubmit:"Zatwierdź",bCancel:"Anuluj"},errors:{errcap:"Błąd",nourl:"Brak adresu url",norecords:"Brak danych",model:"Długość colNames <> colModel!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0,00"},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:" zł",defaultValue:"0,00"},date:{dayNames:["niedz.","pon.","wt.","śr.","czw.","pt.","sob.","niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],monthNames:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru","styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],AmPm:["","","",""],S:function(){return""},srcformat:"Y-m-d",newformat:"d.m.Y",masks:{ShortDate:"d.m.y",LongDate:"l, j F Y",FullDateTime:"l, j F Y H:i:s",MonthDay:"j F",ShortTime:"H:i",LongTime:"H:i:s",YearMonth:"F Y"}}}};e.jgrid=e.jgrid||{},e.extend(!0,e.jgrid,{defaults:{locale:"pl"},locales:{pl:e.extend({},a,{name:"polski",nameEnglish:"Polish"}),"pl-PL":e.extend({},a,{name:"polski (Polska)",nameEnglish:"Polish (Poland)"})}})}); //# sourceMappingURL=grid.locale-pl.js.mapprewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-pl.js.map0000644000000000000000000000754213726165107025636 0ustar rootroot00000000000000{"version":3,"sources":["../grid.locale-pl.js"],"names":["factory","define","amd","module","exports","root","$","undefined","window","require","jQuery","locInfo","isRTL","defaults","recordtext","emptyrecords","loadtext","pgtext","pgfirst","pglast","pgnext","pgprev","pgrecs","showhide","savetext","search","caption","Find","Reset","odata","oper","text","groupOps","op","addGroupTitle","deleteGroupTitle","addRuleTitle","deleteRuleTitle","operandTitle","resetTitle","edit","addCaption","editCaption","bSubmit","bCancel","bClose","saveData","bYes","bNo","bExit","msg","required","number","minValue","maxValue","email","integer","date","url","nodefined","novalue","customarray","customfcheck","view","del","nav","edittext","edittitle","addtext","addtitle","deltext","deltitle","searchtext","searchtitle","refreshtext","refreshtitle","alertcap","alerttext","viewtext","viewtitle","savetitle","canceltext","canceltitle","col","errors","errcap","nourl","norecords","model","formatter","thousandsSeparator","defaultValue","decimalSeparator","decimalPlaces","currency","prefix","suffix","dayNames","monthNames","AmPm","S","srcformat","newformat","masks","ShortDate","LongDate","FullDateTime","MonthDay","ShortTime","LongTime","YearMonth","jgrid","extend","locale","locales","pl","name","nameEnglish","pl-PL"],"mappings":";;;;;;;;;;;;;;;;CAmBC,SAAUA,GACV,aACsB,mBAAXC,QAAyBA,OAAOC,IAE1CD,OAAO,CAAC,UAAWD,GACS,iBAAXG,QAAuBA,OAAOC,QAE/CD,OAAOC,QAAU,SAAUC,EAAMC,GAWhC,YAVUC,IAAND,IAKHA,EAAsB,oBAAXE,OACTC,QAAQ,UACRA,QAAQ,SAARA,CAAkBJ,GAAQG,SAE7BR,EAAQM,GACDA,GAIRN,EAAQU,QAtBV,CAwBE,SAAUJ,GACZ,aACA,IAAIK,EAAU,CACbC,OAAO,EACPC,SAAU,CACTC,WAAY,wBACZC,aAAc,6BACdC,SAAU,eACVC,OAAQ,mBACRC,QAAS,kBACTC,OAAQ,kBACRC,OAAQ,kBACRC,OAAQ,oBACRC,OAAQ,qBACRC,SAAU,wCACVC,SAAU,uBAEXC,OAAQ,CACPC,QAAS,kBACTC,KAAM,SACNC,MAAO,QACPC,MAAO,CACN,CAAEC,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,YACpB,CAAED,KAAM,KAAMC,KAAM,eACpB,CAAED,KAAM,KAAMC,KAAM,sBACpB,CAAED,KAAM,KAAMC,KAAM,cACpB,CAAED,KAAM,KAAMC,KAAM,qBACpB,CAAED,KAAM,KAAMC,KAAM,kBACpB,CAAED,KAAM,KAAMC,KAAM,sBACpB,CAAED,KAAM,KAAMC,KAAM,UACpB,CAAED,KAAM,KAAMC,KAAM,cACpB,CAAED,KAAM,KAAMC,KAAM,iBACpB,CAAED,KAAM,KAAMC,KAAM,qBACpB,CAAED,KAAM,KAAMC,KAAM,WACpB,CAAED,KAAM,KAAMC,KAAM,eACpB,CAAED,KAAM,KAAMC,KAAM,aACpB,CAAED,KAAM,KAAMC,KAAM,kBAErBC,SAAU,CACT,CAAEC,GAAI,MAAOF,KAAM,QACnB,CAAEE,GAAI,KAAOF,KAAM,QAEpBG,cAAe,iBACfC,iBAAkB,aAClBC,aAAc,eACdC,gBAAiB,cACjBC,aAAc,6CACdC,WAAY,iCAEbC,KAAM,CACLC,WAAY,eACZC,YAAa,gBACbC,QAAS,SACTC,QAAS,SACTC,OAAQ,UACRC,SAAU,0CACVC,KAAM,MACNC,IAAK,MACLC,MAAO,SACPC,IAAK,CACJC,SAAU,qBACVC,OAAQ,gCACRC,SAAU,wCACVC,SAAU,yCACVC,MAAO,oCACPC,QAAS,gCACTC,KAAM,6BACNC,IAAK,iFACLC,UAAW,oBACXC,QAAS,mCACTC,YAAa,kDACbC,aAAc,wFAGhBC,KAAM,CACLrC,QAAS,eACTmB,OAAQ,WAETmB,IAAK,CACJtC,QAAS,OACTwB,IAAK,gCACLP,QAAS,OACTC,QAAS,UAEVqB,IAAK,CACJC,SAAU,GACVC,UAAW,wBACXC,QAAS,GACTC,SAAU,oBACVC,QAAS,GACTC,SAAU,sBACVC,WAAY,GACZC,YAAa,kBACbC,YAAa,GACbC,aAAc,YACdC,SAAU,QACVC,UAAW,uBACXC,SAAU,GACVC,UAAW,uBACXvD,SAAU,GACVwD,UAAW,gBACXC,WAAY,GACZC,YAAa,yBAEdC,IAAK,CACJzD,QAAS,sBACTiB,QAAS,YACTC,QAAS,UAEVwC,OAAQ,CACPC,OAAQ,OACRC,MAAO,kBACPC,UAAW,cACXC,MAAO,iCAERC,UAAW,CACVjC,QAAS,CAAEkC,mBAAoB,IAAKC,aAAc,KAClDvC,OAAQ,CAAEwC,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGF,aAAc,QAC1FG,SAAU,CAAEF,iBAAkB,IAAKF,mBAAoB,IAAKG,cAAe,EAAGE,OAAQ,GAAIC,OAAQ,MAAOL,aAAc,QACvHlC,KAAM,CACLwC,SAAY,CACX,SAAU,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAC/C,YAAa,eAAgB,SAAU,QAAS,WAAY,SAAU,UAEvEC,WAAY,CACX,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7E,UAAW,OAAQ,SAAU,WAAY,MAAO,WAAY,SAAU,WAAY,WAAY,cAAe,WAAY,YAE1HC,KAAM,CAAC,GAAI,GAAI,GAAI,IACnBC,EAAG,WAAc,MAAO,IACxBC,UAAW,QACXC,UAAW,QACXC,MAAO,CACNC,UAAW,QACXC,SAAU,WACVC,aAAc,iBACdC,SAAU,MACVC,UAAW,MACXC,SAAU,QACVC,UAAW,UAKfxG,EAAEyG,MAAQzG,EAAEyG,OAAS,GACrBzG,EAAE0G,QAAO,EAAM1G,EAAEyG,MAAO,CACvBlG,SAAU,CACToG,OAAQ,MAETC,QAAS,CAMRC,GAAI7G,EAAE0G,OAAO,GAAIrG,EAAS,CAAEyG,KAAM,SAAUC,YAAa,WACzDC,QAAShH,EAAE0G,OAAO,GAAIrG,EAAS,CAAEyG,KAAM,kBAAmBC,YAAa","file":"grid.locale-pl.js"}prewikka-5.2.0/prewikka/htdocs/js/locales/jqgrid/grid.locale-pt.js0000644000000000000000000001050213726165107025060 0ustar rootroot00000000000000/** * @license jqGrid Portuguese Translation * Tradução da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html **/ !function(r){"use strict";"function"==typeof define&&define.amd?define(["jquery"],r):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e||window)),r(t),t}:r(jQuery)}(function(e){"use strict";var t={isRTL:!1,defaults:{recordtext:"View {0} - {1} of {2}",emptyrecords:"No records to view",loadtext:"A carregar...",pgtext:"Página {0} de {1}",pgfirst:"First Page",pglast:"Last Page",pgnext:"Next Page",pgprev:"Previous Page",pgrecs:"Records per Page",showhide:"Toggle Expand Collapse Grid",savetext:"A guardar..."},search:{caption:"Busca...",Find:"Procurar",Reset:"Limpar",odata:[{oper:"eq",text:"equal"},{oper:"ne",text:"not equal"},{oper:"lt",text:"less"},{oper:"le",text:"less or equal"},{oper:"gt",text:"greater"},{oper:"ge",text:"greater or equal"},{oper:"bw",text:"begins with"},{oper:"bn",text:"does not begin with"},{oper:"in",text:"is in"},{oper:"ni",text:"is not in"},{oper:"ew",text:"ends with"},{oper:"en",text:"does not end with"},{oper:"cn",text:"contains"},{oper:"nc",text:"does not contain"},{oper:"nu",text:"is null"},{oper:"nn",text:"is not null"}],groupOps:[{op:"AND",text:"all"},{op:"OR",text:"any"}],addGroupTitle:"Add subgroup",deleteGroupTitle:"Delete group",addRuleTitle:"Add rule",deleteRuleTitle:"Delete rule",operandTitle:"Click to select search operation.",resetTitle:"Reset Search Value"},edit:{addCaption:"Adicionar Registo",editCaption:"Modificar Registo",bSubmit:"Submeter",bCancel:"Cancelar",bClose:"Fechar",saveData:"Data has been changed! Save changes?",bYes:"Yes",bNo:"No",bExit:"Cancel",msg:{required:"Campo obrigatório",number:"Por favor, introduza um numero",minValue:"O valor deve ser maior ou igual que",maxValue:"O valor deve ser menor ou igual a",email:"Não é um endereço de email válido",integer:"Por favor, introduza um numero inteiro",url:"is not a valid URL. Prefix required ('http://' or 'https://')",nodefined:" is not defined!",novalue:" return value is required!",customarray:"Custom function should return array!",customfcheck:"Custom function should be present in case of custom checking!"}},view:{caption:"View Record",bClose:"Close"},del:{caption:"Eliminar",msg:"Deseja eliminar o(s) registo(s) seleccionado(s)?",bSubmit:"Eliminar",bCancel:"Cancelar"},nav:{edittext:"",edittitle:"Modificar registo seleccionado",addtext:"",addtitle:"Adicionar novo registo",deltext:"",deltitle:"Eliminar registo seleccionado",searchtext:"",searchtitle:"Procurar",refreshtext:"",refreshtitle:"Actualizar",alertcap:"Aviso",alerttext:"Por favor, seleccione um registo",viewtext:"",viewtitle:"View selected row",savetext:"",savetitle:"Save row",canceltext:"",canceltitle:"Cancel row editing"},col:{caption:"Mostrar/Ocultar Colunas",bSubmit:"Enviar",bCancel:"Cancelar"},errors:{errcap:"Erro",nourl:"Não especificou um url",norecords:"Não existem dados para processar",model:"Tamanho do colNames <> colModel!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0.00"},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0.00"},date:{dayNames:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb","Domingo","Segunda-Feira","Terça-Feira","Quarta-Feira","Quinta-Feira","Sexta-Feira","Sábado"],monthNames:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],AmPm:["am","pm","AM","PM"],S:function(e){return e<11||131)?"s":""},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1)?"s":""},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1)?"s":""},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})();prewikka-5.2.0/prewikka/htdocs/js/locales/select2/it.js0000644000000000000000000000155413726165107022760 0ustar rootroot00000000000000/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})();prewikka-5.2.0/prewikka/htdocs/js/locales/select2/pl.js0000644000000000000000000000163513726165107022757 0ustar rootroot00000000000000/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})();prewikka-5.2.0/prewikka/htdocs/js/locales/select2/pt.js0000644000000000000000000000153313726165107022764 0ustar rootroot00000000000000/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})();prewikka-5.2.0/prewikka/htdocs/js/locales/select2/ru.js0000644000000000000000000000214713726165107022771 0ustar rootroot00000000000000/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})();prewikka-5.2.0/prewikka/htdocs/js/EventSource.js0000644000000000000000000001516413726165107021625 0ustar rootroot00000000000000/* Copyright (c) 2010 Remy Sharp, http://remysharp.com * * 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. */ ;(function (global) { if ("EventSource" in global) return; var reTrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g; var EventSource = function (url) { var eventsource = this, interval = 500, // polling interval lastEventId = null, cache = ''; if (!url || typeof url != 'string') { throw new SyntaxError('Not enough arguments'); } this.URL = url; this.readyState = this.CONNECTING; this._pollTimer = null; this._xhr = null; function pollAgain(interval) { eventsource._pollTimer = setTimeout(function () { poll.call(eventsource); }, interval); } function poll() { try { // force hiding of the error message... insane? if (eventsource.readyState == eventsource.CLOSED) return; // NOTE: IE7 and upwards support var xhr = new XMLHttpRequest(); xhr.open('GET', eventsource.URL, true); xhr.setRequestHeader('Accept', 'text/event-stream'); xhr.setRequestHeader('Cache-Control', 'no-cache'); // we must make use of this on the server side if we're working with Android - because they don't trigger // readychange until the server connection is closed xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); if (lastEventId != null) xhr.setRequestHeader('Last-Event-ID', lastEventId); cache = ''; xhr.timeout = 50000; xhr.onreadystatechange = function () { if (this.readyState == 3 || (this.readyState == 4 && this.status == 200)) { // on success if (eventsource.readyState == eventsource.CONNECTING) { eventsource.readyState = eventsource.OPEN; eventsource.dispatchEvent('open', { type: 'open' }); } var responseText = ''; try { responseText = this.responseText || ''; } catch (e) {} // process this.responseText var parts = responseText.substr(cache.length).split("\n"), eventType = 'message', data = [], i = 0, line = ''; cache = responseText; // TODO handle 'event' (for buffer name), retry for (; i < parts.length; i++) { line = parts[i].replace(reTrim, ''); if (line.indexOf('event') == 0) { eventType = line.replace(/event:?\s*/, ''); } else if (line.indexOf('retry') == 0) { retry = parseInt(line.replace(/retry:?\s*/, '')); if(!isNaN(retry)) { interval = retry; } } else if (line.indexOf('data') == 0) { data.push(line.replace(/data:?\s*/, '')); } else if (line.indexOf('id:') == 0) { lastEventId = line.replace(/id:?\s*/, ''); } else if (line.indexOf('id') == 0) { // this resets the id lastEventId = null; } else if (line == '') { if (data.length) { var event = new MessageEvent(data.join('\n'), eventsource.url, lastEventId); eventsource.dispatchEvent(eventType, event); data = []; eventType = 'message'; } } } if (this.readyState == 4) pollAgain(interval); // don't need to poll again, because we're long-loading } else if (eventsource.readyState !== eventsource.CLOSED) { if (this.readyState == 4) { // and some other status // dispatch error eventsource.readyState = eventsource.CONNECTING; eventsource.dispatchEvent('error', { type: 'error' }); pollAgain(interval); } else if (this.readyState == 0) { // likely aborted pollAgain(interval); } else { } } }; xhr.send(); setTimeout(function () { if (true || xhr.readyState == 3) xhr.abort(); }, xhr.timeout); eventsource._xhr = xhr; } catch (e) { // in an attempt to silence the errors eventsource.dispatchEvent('error', { type: 'error', data: e.message }); // ??? } }; poll(); // init now }; EventSource.prototype = { close: function () { // closes the connection - disabling the polling this.readyState = this.CLOSED; clearInterval(this._pollTimer); this._xhr.abort(); }, CONNECTING: 0, OPEN: 1, CLOSED: 2, dispatchEvent: function (type, event) { var handlers = this['_' + type + 'Handlers']; if (handlers) { for (var i = 0; i < handlers.length; i++) { handlers[i].call(this, event); } } if (this['on' + type]) { this['on' + type].call(this, event); } }, addEventListener: function (type, handler) { if (!this['_' + type + 'Handlers']) { this['_' + type + 'Handlers'] = []; } this['_' + type + 'Handlers'].push(handler); }, removeEventListener: function (type, handler) { var handlers = this['_' + type + 'Handlers']; if (!handlers) { return; } for (var i = handlers.length - 1; i >= 0; --i) { if (handlers[i] === handler) { handlers.splice(i, 1); break; } } }, onerror: null, onmessage: null, onopen: null, readyState: 0, URL: '' }; var MessageEvent = function (data, origin, lastEventId) { this.data = data; this.origin = origin; this.lastEventId = lastEventId || ''; }; MessageEvent.prototype = { data: null, type: 'message', lastEventId: '', origin: '' }; if ('module' in global) module.exports = EventSource; global.EventSource = EventSource; })(this); prewikka-5.2.0/prewikka/htdocs/js/LAB.min.js0000644000000000000000000001256213726165107020542 0ustar rootroot00000000000000/*! LAB.js (LABjs :: Loading And Blocking JavaScript) v2.0.3 (c) Kyle Simpson MIT License */ (function(o){var K=o.$LAB,y="UseLocalXHR",z="AlwaysPreserveOrder",u="AllowDuplicates",A="CacheBust",B="BasePath",C=/^[^?#]*\//.exec(location.href)[0],D=/^\w+\:\/\/\/?[^\/]+/.exec(C)[0],i=document.head||document.getElementsByTagName("head"),L=(o.opera&&Object.prototype.toString.call(o.opera)=="[object Opera]")||("MozAppearance"in document.documentElement.style),q=document.createElement("script"),E=typeof q.preload=="boolean",r=E||(q.readyState&&q.readyState=="uninitialized"),F=!r&&q.async===true,M=!r&&!F&&!L;function G(a){return Object.prototype.toString.call(a)=="[object Function]"}function H(a){return Object.prototype.toString.call(a)=="[object Array]"}function N(a,c){var b=/^\w+\:\/\//;if(/^\/\/\/?/.test(a)){a=location.protocol+a}else if(!b.test(a)&&a.charAt(0)!="/"){a=(c||"")+a}return b.test(a)?a:((a.charAt(0)=="/"?D:C)+a)}function s(a,c){for(var b in a){if(a.hasOwnProperty(b)){c[b]=a[b]}}return c}function O(a){var c=false;for(var b=0;b0){for(var a=0;a=0;){d=n.shift();a=a[d.type].apply(null,d.args)}return a},noConflict:function(){o.$LAB=K;return m},sandbox:function(){return J()}};return m}o.$LAB=J();(function(a,c,b){if(document.readyState==null&&document[a]){document.readyState="loading";document[a](c,b=function(){document.removeEventListener(c,b,false);document.readyState="complete"},false)}})("addEventListener","DOMContentLoaded")})(this);prewikka-5.2.0/prewikka/htdocs/js/ajax.js0000644000000000000000000002763313726165107020312 0ustar rootroot00000000000000"use strict"; var PrewikkaAjaxTarget = Object.freeze({"AUTO": 1, "TAB": 2, "LAYOUT": 3}); $(function() { $.xhrPool = function() { var that = {}; that.pool = []; that.active = 0; that.push = function(xhr, settings) { if ( settings.prewikka.target == PrewikkaAjaxTarget.LAYOUT ) return; that.active++; xhr._pool_index = that.pool.push(xhr) - 1; }; that.done = function(xhr) { if ( xhr._pool_index == undefined || xhr._aborted ) /* LAYOUT target */ return; that.pool[xhr._pool_index] = null; if ( --that.active == 0 ) that.pool = []; }; that.abortAll = function() { $(that.pool).each(function(idx, xhr) { if ( xhr ) { xhr._aborted = true; xhr.abort(); xhr.onreadystatechange = null; } }); that.active = 0; that.pool = []; }; return that; }(); $.eventSourcePool = function() { var that = {}; that.pool = []; that.active = 0; that.push = function(stream) { that.active++; stream._pool_index = that.pool.push(stream) - 1; }; that.done = function(stream) { if ( stream._pool_index == undefined ) return; that.pool[stream._pool_index] = null; if ( --that.active == 0 ) that.pool = []; }; that.abortAll = function() { $(that.pool).each(function(idx, stream) { if ( stream ) { stream.close(); } }); that.active = 0; that.pool = []; }; return that; }(); $.ajaxSetup({ prewikka: { spinner: true, error: true, target: PrewikkaAjaxTarget.AUTO, history: true, bypass: false } }); $(document).ajaxSend(function(event, xhr, settings) { if ( ! _csrf_safe_method(settings.type) && check_same_origin(settings.url) ); xhr.setRequestHeader("X-CSRFToken", get_cookie("CSRF_COOKIE")); if ( settings.prewikka.spinner ) $("#ajax-spinner").show(); $.xhrPool.push(xhr, settings); }); $(document).ajaxSuccess(function(event, xhr, settings, data) { $.xhrPool.done(xhr); if ( ! settings.prewikka.bypass ) prewikka_process_ajax_response(settings, data, xhr); }); $(document).ajaxComplete(function(event, xhr, settings) { if ( settings.prewikka.spinner ) $("#ajax-spinner").hide(); }); $(document).ajaxError(function(event, xhr, settings) { $.xhrPool.done(xhr); /* * User aborted the request or no error handling required */ if ( xhr._aborted || ! settings.prewikka.error ) return; if ( ! xhr.responseText ) $("#prewikka-dialog-connection-error").modal(); else if ( xhr.getResponseHeader("content-type") == "application/json" ) prewikka_json_dialog(JSON.parse(xhr.responseText)); else prewikka_json_dialog({content: xhr.responseText, error: true}); }); $(window).on('resize', prewikka_resizeTopMenu); }); function prewikka_location() { return window.history.location || window.location; } function _mergedict(obj1, obj2) { var obj3 = {}; for ( var attrname in obj1 ) { obj3[attrname] = obj1[attrname]; } for ( var attrname in obj2 ) { obj3[attrname] = obj2[attrname]; } return obj3; } function _initialize_components(container) { $(container).find('[data-toggle="tooltip"]').tooltip(); $(container).find('[data-toggle="popover"]').popover(); $(container).find('[data-title-url]').ajaxTooltip(); $(container).find('[autofocus]').focus(); $(container).find('.form-control-select2').select2_container(); } function _destroy_components(container) { $(container).find('[data-toggle="tooltip"]').tooltip("destroy"); $(container).find('[data-toggle="popover"]').popover("destroy"); $(container).find('[data-title-url]').tooltip("destroy"); $(container).find('.form-control-select2').select2("destroy"); } function _csrf_safe_method(method) { return /^(GET|HEAD|OPTIONS|TRACE)$/.test(method); } function get_cookie(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } function prewikka_drawTab(data) { var form; var content = $(data.content); if ( ! data.content ) return; $.eventSourcePool.abortAll(); $.xhrPool.abortAll(); /* * Check self and descendant */ form = $(content).find("form").addBack("form").first(); if ( ! form.length ) form = content = content.wrapAll('
').parent(); if ( ! _csrf_safe_method(form.attr("method")) ) form.prepend(''); form.prepend(data._extensions.menu); prewikka_resource_destroy($("#main")); $("#main").off().html(content); $("#topmenu_right .prewikka-help-button").data("href", data._extensions.help).prop("disabled", data._extensions.help ? false : true); $("#topmenu_right .prewikka-config-button").prop("disabled", $("#main .prewikka-view-config").length == 0); prewikka_resizeTopMenu(); _initialize_components("#main"); window.scrollTo(0, 0); } function _update_browser_title(title) { /* Update the document's title according to the names of the section*/ if ( ! document.orig_title ) document.orig_title = document.title; document.title = document.orig_title + " - " + title; } function _split_url(url) { var idx = url.indexOf('#'); var frag = ''; if ( idx != -1 ) { frag = url.substr(idx); url = url.substr(0, idx); } return [url, frag]; } /* Update the tab's menu according to the url */ function _url_update(xhr, settings) { var redirect = false; var url = _split_url(settings.url); var fragment = url[1]; url = url[0]; var newurl = xhr.getResponseHeader("X-responseURL"); if ( newurl && newurl != url ) { url = newurl; redirect = true; } var tab = $("#topmenu .topmenu_item a[href='" + url.split("?")[0] + fragment + "']"); if ( redirect || (settings.prewikka.history && (settings.type || "").toUpperCase() != "POST") ) { var params = settings['data']; if ( params && ! redirect ) { if ( typeof(params) != 'string' ) params = $.param(params); url += "?" + params; } url += fragment; history.pushState(url, document.title, url); } if ( tab.length > 0 ) { $("#topmenu ul.topmenu_section").hide(); $(tab).parent().parent().show(); $("#topmenu .active").toggleClass("active", false); $(tab).parent().toggleClass("active", true); _update_browser_title($("#topmenu .active").closest("ul").data("section-title")); } } function _process_widget(data, widget) { widget.attr("tabindex", -1); $(widget).wrapInner(''); if ( data._extensions.help ) { var help = $("").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,l,h,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(l=document.documentElement.clientWidth,h=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+c,h/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),p===n&&(p=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,l,h=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):h?"all"===i?t.extend({},h.settings):this._get(h,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),h&&(this._curInst===h&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(h,"min"),l=this._getMinMaxDate(h,"max"),a(h.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(h.settings.minDate=this._formatDate(h,r)),null!==l&&void 0!==n.dateFormat&&void 0===n.maxDate&&(h.settings.maxDate=this._formatDate(h,l)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),h),this._autoSize(h),this._setDate(h,o),this._updateAlternate(h),this._updateDatepicker(h)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,l,h,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),l={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),l=t.datepicker._checkOffset(s,l,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:l.left+"px",top:l.top+"px"}),s.inline||(h=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?s.dpDiv.show(h,t.datepicker._get(s,"showOptions"),c):s.dpDiv[h||"show"](h?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))}},_updateDatepicker:function(e){this.maxRows=4,p=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,l=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),h=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>l&&l>n?Math.abs(i.left+n-l):0),i.top-=Math.min(i.top,i.top+o>h&&h>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,l=0,h=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof h?h:(new Date).getFullYear()%100+parseInt(h,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(l).match(o);if(!a)throw"Missing number at position "+l;return l+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(l,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],l+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+l},x=function(){if(i.charAt(l)!==e.charAt(n))throw"Unexpected literal at position "+l;l++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>l&&(a=i.substr(l),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,l=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},h=function(t,e,i){var s=""+e;if(l(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return l(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||l("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=h("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=h("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=h("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=l("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":l("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),l=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,h=l.exec(i);h;){switch(h[2]||"d"){case"d":case"D":r+=parseInt(h[1],10);break;case"w":case"W":r+=7*parseInt(h[1],10);break;case"m":case"M":a+=parseInt(h[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(h[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}h=l.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,T,I,M,P,S,N,H,A,z,O,E,W,F,L,R=new Date,Y=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),B=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),X=this._get(t,"stepMonths"),$=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),J=this._getMinMaxDate(t,"min"),Q=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),Q)for(e=this._daylightSavingAdjust(new Date(Q.getFullYear(),Q.getMonth()-U[0]*U[1]+1,Q.getDate())),e=J&&J>e?J:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-X,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"
"+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+X,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:Y,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,l=t.inline?"":"",h=j?"
"+(B?l:"")+(this._isInRange(t,r)?"":"")+(B?"":l)+"
":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),T=" ui-corner-all",I="",$){if(I+="
"}for(I+="
"+(/all|left/.test(T)&&0===k?B?o:s:"")+(/all|right/.test(T)&&0===k?B?s:o:"")+this._generateMonthYearHeader(t,Z,te,J,Q,k>0||C>0,f,g)+"
"+"",M=u?"":"",w=0;7>w;w++)P=(w+c)%7,M+="";for(I+=M+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),N=(this._getFirstDayOfMonth(te,Z)-c+7)%7,H=Math.ceil((N+S)/7),A=$?this.maxRows>H?this.maxRows:H:H,this.maxRows=A,z=this._daylightSavingAdjust(new Date(te,Z,1-N)),O=0;A>O;O++){for(I+="",E=u?"":"",w=0;7>w;w++)W=m?m.apply(t.input?t.input[0]:null,[z]):[!0,""],F=z.getMonth()!==Z,L=F&&!v||!W[0]||J&&J>z||Q&&z>Q,E+="",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);I+=E+""}Z++,Z>11&&(Z=0,te++),I+="
"+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[P]+"
"+this._get(t,"calculateWeek")(z)+""+(F&&!_?" ":L?""+z.getDate()+"":""+z.getDate()+"")+"
"+($?"
"+(U[0]>0&&C===U[1]-1?"
":""):""),x+=I}y+=x}return y+=h,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
",y="";if(o||!m)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,l=this._get(t,"yearRange");return l&&(i=l.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),l=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(l>=0?"+":"")+l,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),l=t(s).closest("li"),h=l.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=l.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),h&&l.data("ui-tabs-aria-controls",h),l.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,l=r?t():this._getPanelForTab(o),h=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:h,newTab:r?t():o,newPanel:l};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),h.length||l.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),l.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},l=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),l(n,e)},1)}).fail(function(t,e){setTimeout(function(){l(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){h.of=t,a.is(":hidden")||a.position(h)}var o,a,r,l,h=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),l=t("
").html(a.find(".ui-tooltip-content").html()),l.removeAttr("name").find("[name]").removeAttr("name"),l.removeAttr("id").find("[id]").removeAttr("id"),l.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(h.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e] }),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
").attr("role","tooltip"),s=t("
").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip;var f="ui-effects-",g="ui-effects-style",m="ui-effects-animated",_=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=h(),n=s._rgba=[];return i=i.toLowerCase(),f(l,function(t,o){var a,r=o.re.exec(i),l=r&&o.parse(r),h=o.space||"rgba";return l?(a=s[h](l),s[c[h].cache]=a[c[h].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],h=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=h.support={},p=t("

")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),h.fn=t.extend(h.prototype,{parse:function(n,a,r,l){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,l],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof h?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=h(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=h(t),n=s._space(),o=c[n],a=0===this.alpha()?h("transparent"):this,r=a[o.cache]||o.to(a._rgba),l=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],h=s[o],c=u[n.type]||{};null!==h&&(null===a?l[o]=h:(c.mod&&(h-a>c.mod/2?a+=c.mod:a-h>c.mod/2&&(a-=c.mod)),l[o]=i((h-a)*e+a,n)))}),this[n](l)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=h(e)._rgba;return h(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),h.fn.parse.prototype=h.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),l=Math.min(s,n,o),h=r-l,c=r+l,u=.5*c;return e=l===r?0:s===r?60*(n-o)/h+360:n===r?60*(o-s)/h+120:60*(s-n)/h+240,i=0===h?0:.5>=u?h/c:h/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,l=n.to,c=n.from;h.fn[s]=function(s){if(l&&!this[a]&&(this[a]=l(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=h(c(d)),n[a]=d,n):h(d)},f(o,function(e,i){h.fn[e]||(h.fn[e]=function(n){var o,a=t.type(n),l="alpha"===e?this._hsla?"hsla":"rgba":s,h=this[l](),c=h[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),h[i.idx]=n,this[l](h)))})})}),h.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=h(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(l){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=h(e.elem,i),e.end=h(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},h.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(_),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(_.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var l=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",h=l.children?a.find("*").addBack():a;h=h.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),h=h.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),h=h.map(function(){var e=this,i=t.Deferred(),s=t.extend({},l,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,h.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),l.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(m)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(f+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(f+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(g,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(g)||"",t.removeData(g)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(f+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=f+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(m),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(l)&&l.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[h](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===h:"show"===h)?(r[h](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",l=s.complete,h=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,h)||o;i.data(m,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?h?this[h](s.duration,l):this.each(function(){l&&l.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,l=o?a.scrollLeft():0,h=n.offset(),c={top:h.top-r,left:h.left-l,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-l,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var v=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},l=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),l&&l.css(t.effects.clipToBox(r)),r.clip=a),l&&l.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,l="hide"===r,h="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(h||l?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),h&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),l&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=l?2*u:u/2;l&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,l=r||"horizontal"===a,h=r||"vertical"===a;s=o.cssClip(),n.clip={top:h?(s.bottom-s.top)/2:s.top,right:l?(s.right-s.left)/2:s.right,bottom:h?(s.bottom-s.top)/2:s.bottom,left:l?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r?"-=":"+=",c="+="===h?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,u[l]=h+s,a&&(n.css(u),u[l]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,l,h,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(l=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,h=a-(d-1)/2,p.clone().appendTo("body").wrap("
").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?h*_:0),top:l+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:h*_),top:l+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,l=/([0-9]+)%/.exec(r),h=!!e.horizFirst,c=h?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;l&&(r=parseInt(l[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],l=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,l,n.from.y,_),v=t.effects.setTransition(a,l,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,h,n.from.x,_),v=t.effects.setTransition(a,h,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(l=l.concat(["marginTop","marginBottom"]).concat(r),h=h.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,l,n.from.y,o),a=t.effects.setTransition(i,l,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,h,n.from.x,o),a=t.effects.setTransition(i,h,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,l=2*(e.times||5)+(r?1:0),h=e.duration/l,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);l>u;u++)s.animate({opacity:c},h,e.easing),c=1-c;s.animate({opacity:c},h,e.easing),s.queue(i),t.effects.unshift(s,d,l+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,l=2*r+1,h=Math.round(e.duration/l),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,h,e.easing);r>s;s++)n.animate(p,h,e.easing).animate(f,h,e.easing);n.animate(p,h,e.easing).animate(d,h/2,e.easing).queue(i),t.effects.unshift(n,g,l+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l,u=e.distance||o["top"===h?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[h],d[h]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[l][1]]=d.clip[a[l][0]],"show"===r&&(o.cssClip(d.clip),o.css(h,d[h]),d.clip=s,d[h]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var v;t.uiBackCompat!==!1&&(v=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)}))});prewikka-5.2.0/prewikka/htdocs/js/jquery.jeditable.js0000644000000000000000000005745413726165107022634 0ustar rootroot00000000000000/* * Jeditable - jQuery in place edit plugin * * Copyright (c) 2006-2009 Mika Tuupola, Dylan Verheul * * Licensed under the MIT license: * http://www.opensource.org/licenses/mit-license.php * * Project home: * http://www.appelsiini.net/projects/jeditable * * Based on editable by Dylan Verheul : * http://www.dyve.net/jquery/?editable * */ /** * Version 1.7.1 * * ** means there is basic unit tests for this parameter. * * @name Jeditable * @type jQuery * @param String target (POST) URL or function to send edited content to ** * @param Hash options additional options * @param String options[method] method to use to send edited content (POST or PUT) ** * @param Function options[callback] Function to run after submitting edited content ** * @param String options[name] POST parameter name of edited content * @param String options[id] POST parameter name of edited div id * @param Hash options[submitdata] Extra parameters to send when submitting edited content. * @param String options[type] text, textarea or select (or any 3rd party input type) ** * @param Integer options[rows] number of rows if using textarea ** * @param Integer options[cols] number of columns if using textarea ** * @param Mixed options[height] 'auto', 'none' or height in pixels ** * @param Mixed options[width] 'auto', 'none' or width in pixels ** * @param String options[loadurl] URL to fetch input content before editing ** * @param String options[loadtype] Request type for load url. Should be GET or POST. * @param String options[loadtext] Text to display while loading external content. * @param Mixed options[loaddata] Extra parameters to pass when fetching content before editing. * @param Mixed options[data] Or content given as paramameter. String or function.** * @param String options[indicator] indicator html to show when saving * @param String options[tooltip] optional tooltip text via title attribute ** * @param String options[event] jQuery event such as 'click' of 'dblclick' ** * @param String options[submit] submit button value, empty means no button ** * @param String options[cancel] cancel button value, empty means no button ** * @param String options[cssclass] CSS class to apply to input form. 'inherit' to copy from parent. ** * @param String options[style] Style to apply to input form 'inherit' to copy from parent. ** * @param String options[select] true or false, when true text is highlighted ?? * @param String options[placeholder] Placeholder text or html to insert when element is empty. ** * @param String options[onblur] 'cancel', 'submit', 'ignore' or function ?? * * @param Function options[onsubmit] function(settings, original) { ... } called before submit * @param Function options[onreset] function(settings, original) { ... } called before reset * @param Function options[onerror] function(settings, original, xhr) { ... } called on error * * @param Hash options[ajaxoptions] jQuery Ajax options. See docs.jquery.com. * */ (function($) { $.fn.editable = function(target, options) { if ('disable' == target) { $(this).data('disabled.editable', true); return; } if ('enable' == target) { $(this).data('disabled.editable', false); return; } if ('destroy' == target) { $(this) .unbind($(this).data('event.editable')) .removeData('disabled.editable') .removeData('event.editable'); return; } var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options); /* setup some functions */ var plugin = $.editable.types[settings.type].plugin || function() { }; var submit = $.editable.types[settings.type].submit || function() { }; var buttons = $.editable.types[settings.type].buttons || $.editable.types['defaults'].buttons; var content = $.editable.types[settings.type].content || $.editable.types['defaults'].content; var element = $.editable.types[settings.type].element || $.editable.types['defaults'].element; var reset = $.editable.types[settings.type].reset || $.editable.types['defaults'].reset; var callback = settings.callback || function() { }; var onedit = settings.onedit || function() { }; var onsubmit = settings.onsubmit || function() { }; var onreset = settings.onreset || function() { }; var onerror = settings.onerror || reset; /* show tooltip */ if (settings.tooltip) { $(this).attr('title', settings.tooltip); } settings.autowidth = 'auto' == settings.width; settings.autoheight = 'auto' == settings.height; return this.each(function() { /* save this to self because this changes when scope changes */ var self = this; /* inlined block elements lose their width and height after first edit */ /* save them for later use as workaround */ var savedwidth = $(self).width(); var savedheight = $(self).height(); /* save so it can be later used by $.editable('destroy') */ $(this).data('event.editable', settings.event); /* if element is empty add something clickable (if requested) */ if (!$.trim($(this).html())) { $(this).html(settings.placeholder); } $(this).bind(settings.event, function(e) { /* abort if disabled for this element */ if (true === $(this).data('disabled.editable')) { return; } /* prevent throwing an exeption if edit field is clicked again */ if (self.editing) { return; } /* abort if onedit hook returns false */ if (false === onedit.apply(this, [settings, self])) { return; } /* prevent default action and bubbling */ e.preventDefault(); e.stopPropagation(); /* remove tooltip */ if (settings.tooltip) { $(self).removeAttr('title'); } /* figure out how wide and tall we are, saved width and height */ /* are workaround for http://dev.jquery.com/ticket/2190 */ if (0 == $(self).width()) { //$(self).css('visibility', 'hidden'); settings.width = savedwidth; settings.height = savedheight; } else { if (settings.width != 'none') { settings.width = settings.autowidth ? $(self).width() : settings.width; } if (settings.height != 'none') { settings.height = settings.autoheight ? $(self).height() : settings.height; } } //$(this).css('visibility', ''); /* remove placeholder text, replace is here because of IE */ if ($(this).html().toLowerCase().replace(/(;|")/g, '') == settings.placeholder.toLowerCase().replace(/(;|")/g, '')) { $(this).html(''); } self.editing = true; self.revert = $(self).html(); $(self).html(''); /* create the form object */ var form = $('
'); /* apply css or style or both */ if (settings.cssclass) { if ('inherit' == settings.cssclass) { form.attr('class', $(self).attr('class')); } else { form.attr('class', settings.cssclass); } } if (settings.style) { if ('inherit' == settings.style) { form.attr('style', $(self).attr('style')); /* IE needs the second line or display wont be inherited */ form.css('display', $(self).css('display')); } else { form.attr('style', settings.style); } } /* add main input element to form and store it in input */ var input = element.apply(form, [settings, self]); /* set input content via POST, GET, given data or existing value */ var input_content; if (settings.loadurl) { var t = setTimeout(function() { input.disabled = true; content.apply(form, [settings.loadtext, settings, self]); }, 100); var loaddata = {}; loaddata[settings.id] = self.id; if ($.isFunction(settings.loaddata)) { $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings])); } else { $.extend(loaddata, settings.loaddata); } $.ajax({ type : settings.loadtype, url : settings.loadurl, data : loaddata, async : false, success: function(result) { window.clearTimeout(t); input_content = result; input.disabled = false; } }); } else if (settings.data) { input_content = settings.data; if ($.isFunction(settings.data)) { input_content = settings.data.apply(self, [self.revert, settings]); } } else { input_content = self.revert; } content.apply(form, [input_content, settings, self]); input.attr('name', settings.name); /* add buttons to the form */ buttons.apply(form, [settings, self]); /* add created form to self */ $(self).append(form); /* attach 3rd party plugin if requested */ plugin.apply(form, [settings, self]); /* focus to first visible form element */ $(':input:visible:enabled:first', form).focus(); /* highlight input contents when requested */ if (settings.select) { input.select(); } /* discard changes if pressing esc */ input.keydown(function(e) { if (e.keyCode == 27) { e.preventDefault(); //self.reset(); reset.apply(form, [settings, self]); } }); /* discard, submit or nothing with changes when clicking outside */ /* do nothing is usable when navigating with tab */ var t; if ('cancel' == settings.onblur) { input.blur(function(e) { /* prevent canceling if submit was clicked */ t = setTimeout(function() { reset.apply(form, [settings, self]); }, 500); }); } else if ('submit' == settings.onblur) { input.blur(function(e) { /* prevent double submit if submit was clicked */ t = setTimeout(function() { form.submit(); }, 200); }); } else if ($.isFunction(settings.onblur)) { input.blur(function(e) { settings.onblur.apply(self, [input.val(), settings]); }); } else { input.blur(function(e) { /* TODO: maybe something here */ }); } form.submit(function(e) { if (t) { clearTimeout(t); } /* do no submit */ e.preventDefault(); /* call before submit hook. */ /* if it returns false abort submitting */ if (false !== onsubmit.apply(form, [settings, self])) { /* custom inputs call before submit hook. */ /* if it returns false abort submitting */ if (false !== submit.apply(form, [settings, self])) { /* check if given target is function */ if ($.isFunction(settings.target)) { var str = settings.target.apply(self, [input.val(), settings]); $(self).html(str); self.editing = false; callback.apply(self, [self.innerHTML, settings]); /* TODO: this is not dry */ if (!$.trim($(self).html())) { $(self).html(settings.placeholder); } } else { /* add edited content and id of edited element to POST */ var submitdata = {}; submitdata[settings.name] = input.val(); submitdata[settings.id] = self.id; /* add extra data to be POST:ed */ if ($.isFunction(settings.submitdata)) { $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings])); } else { $.extend(submitdata, settings.submitdata); } /* quick and dirty PUT support */ if ('PUT' == settings.method) { submitdata['_method'] = 'put'; } /* show the saving indicator */ $(self).html(settings.indicator); /* defaults for ajaxoptions */ var ajaxoptions = { type : 'POST', data : submitdata, dataType: 'html', url : settings.target, success : function(result, status) { if (ajaxoptions.dataType == 'html') { $(self).html(result); } self.editing = false; callback.apply(self, [result, settings]); if (!$.trim($(self).html())) { $(self).html(settings.placeholder); } }, error : function(xhr, status, error) { onerror.apply(form, [settings, self, xhr]); } }; /* override with what is given in settings.ajaxoptions */ $.extend(ajaxoptions, settings.ajaxoptions); $.ajax(ajaxoptions); } } } /* show tooltip again */ $(self).attr('title', settings.tooltip); return false; }); }); /* privileged methods */ this.reset = function(form) { /* prevent calling reset twice when blurring */ if (this.editing) { /* before reset hook, if it returns false abort reseting */ if (false !== onreset.apply(form, [settings, self])) { $(self).html(self.revert); self.editing = false; if (!$.trim($(self).html())) { $(self).html(settings.placeholder); } /* show tooltip again */ if (settings.tooltip) { $(self).attr('title', settings.tooltip); } } } }; }); }; $.editable = { types: { defaults: { element : function(settings, original) { var input = $(''); $(this).append(input); return(input); }, content : function(string, settings, original) { $(':input:first', this).val(string); }, reset : function(settings, original) { original.reset(this); }, buttons : function(settings, original) { var form = this; if (settings.submit) { /* if given html string use that */ if (settings.submit.match(/>$/)) { var submit = $(settings.submit).click(function() { if (submit.attr("type") != "submit") { form.submit(); } }); /* otherwise use button with given string as text */ } else { var submit = $('
").appendTo(this.availableContainer),this.selectedList=c('
').bind("selectstart",function(){return!1}).appendTo(this.selectedContainer),this.availableList=c('
').bind("selectstart",function(){return!1}).appendTo(this.availableContainer);var i=this;this.container.width(this.element.width()+1),this.selectedContainer.width(Math.floor(this.element.width()*this.options.dividerLocation)),this.availableContainer.width(Math.floor(this.element.width()*(1-this.options.dividerLocation))),this.selectedList.height(Math.max(this.element.height()-this.selectedActions.height(),1)),this.availableList.height(Math.max(this.element.height()-this.availableActions.height(),1)),this.options.animated||(this.options.show="show",this.options.hide="hide"),this._populateLists(this.element.find("option")),this.options.sortable&&this.selectedList.sortable({placeholder:"ui-state-highlight",axis:"y",update:function(e,t){i.selectedList.find("li").each(function(){c(this).data("optionLink")&&c(this).data("optionLink").remove().appendTo(i.element)})},receive:function(e,t){t.item.data("optionLink").prop("selected",!0),i.count+=1,i._updateCount(),i.selectedList.children(".ui-draggable").each(function(){c(this).removeClass("ui-draggable"),c(this).data("optionLink",t.item.data("optionLink")),c(this).data("idx",t.item.data("idx")),i._applyItemState(c(this),!0)}),setTimeout(function(){t.item.remove()},1)}}),this.options.searchable?this._registerSearchEvents(this.availableContainer.find("input.search")):c(".search").hide(),this.container.find(".remove-all").click(function(){return i._populateLists(i.element.find("option").prop("selected",!1)),!1}),this.container.find(".add-all").click(function(){var t=i.element.find("option").not(":selected");return 1'+e.text()+'').hide();return t.data("optionLink",e),t},_cloneWithData:function(e){var t=e.clone(!1,!1);return t.data("optionLink",e.data("optionLink")),t.data("idx",e.data("idx")),t},_setSelected:function(e,t){if(e.data("optionLink").prop("selected",t),t){var i=this._cloneWithData(e);return e[this.options.hide](this.options.animated,function(){c(this).remove()}),i.appendTo(this.selectedList).hide()[this.options.show](this.options.animated),this._applyItemState(i,!0),i}var s=this.availableList.find("li"),n=this.options.nodeComparator,a=null,o=e.data("idx"),l=n(e,c(s[o]));if(l){for(;0<=o&&o=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); //# sourceMappingURL=underscore-min.mapprewikka-5.2.0/prewikka/htdocs/js/underscore-min.map0000644000000000000000000006570513726165107022464 0ustar rootroot00000000000000{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WA4KC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+ZtD,QAASO,GAA2Bd,GAClC,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAASW,EAAUH,GACnBT,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAsBZ,QAASa,GAAkBnB,EAAKoB,EAAeC,GAC7C,MAAO,UAASN,EAAOO,EAAMC,GAC3B,GAAIC,GAAI,EAAGjB,EAASW,EAAUH,EAC9B,IAAkB,gBAAPQ,GACLvB,EAAM,EACNwB,EAAID,GAAO,EAAIA,EAAME,KAAKC,IAAIH,EAAMhB,EAAQiB,GAE5CjB,EAASgB,GAAO,EAAIE,KAAKE,IAAIJ,EAAM,EAAGhB,GAAUgB,EAAMhB,EAAS,MAE9D,IAAIc,GAAeE,GAAOhB,EAE/B,MADAgB,GAAMF,EAAYN,EAAOO,GAClBP,EAAMQ,KAASD,EAAOC,GAAO,CAEtC,IAAID,IAASA,EAEX,MADAC,GAAMH,EAAcQ,EAAMC,KAAKd,EAAOS,EAAGjB,GAASK,EAAEkB,OAC7CP,GAAO,EAAIA,EAAMC,GAAK,CAE/B,KAAKD,EAAMvB,EAAM,EAAIwB,EAAIjB,EAAS,EAAGgB,GAAO,GAAWhB,EAANgB,EAAcA,GAAOvB,EACpE,GAAIe,EAAMQ,KAASD,EAAM,MAAOC,EAElC,QAAQ,GAqPZ,QAASQ,GAAoB7B,EAAKG,GAChC,GAAI2B,GAAaC,EAAmB1B,OAChC2B,EAAchC,EAAIgC,YAClBC,EAASvB,EAAEwB,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFI3B,EAAE4B,IAAItC,EAAKqC,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAAOlC,EAAKqC,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQrC,IAAOA,EAAIqC,KAAUJ,EAAMI,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAChElC,EAAKqC,KAAKH,GA74BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAK/B,EAG1BkC,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9Bd,EAAmBkB,EAAWlB,MAC9BuB,EAAmBb,EAASa,SAC5BC,EAAmBd,EAASc,eAK5BC,EAAqBN,MAAMO,QAC3BC,EAAqBP,OAAO3C,KAC5BmD,EAAqBP,EAAUQ,KAC/BC,EAAqBV,OAAOW,OAG1BC,EAAO,aAGPhD,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB0C,eAAgBhC,QACtBgC,KAAKiB,SAAW3D,GADiB,GAAIU,GAAEV,GAOlB,oBAAZ4D,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUlD,GAE7BkD,QAAQlD,EAAIA,GAEZ+B,EAAK/B,EAAIA,EAIXA,EAAEoD,QAAU,OAKZ,IAAItD,GAAa,SAASuD,EAAMxD,EAASyD,GACvC,GAAIzD,QAAiB,GAAG,MAAOwD,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKpC,KAAKpB,EAAS0D,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOC,GAC7B,MAAOH,GAAKpC,KAAKpB,EAAS0D,EAAOC,GAEnC,KAAK,GAAG,MAAO,UAASD,EAAO7D,EAAO+D,GACpC,MAAOJ,GAAKpC,KAAKpB,EAAS0D,EAAO7D,EAAO+D,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaH,EAAO7D,EAAO+D,GACjD,MAAOJ,GAAKpC,KAAKpB,EAAS6D,EAAaH,EAAO7D,EAAO+D,IAGzD,MAAO,YACL,MAAOJ,GAAKM,MAAM9D,EAASI,aAO3BI,EAAK,SAASkD,EAAO1D,EAASyD,GAChC,MAAa,OAATC,EAAsBvD,EAAE4D,SACxB5D,EAAEwB,WAAW+B,GAAezD,EAAWyD,EAAO1D,EAASyD,GACvDtD,EAAE6D,SAASN,GAAevD,EAAE8D,QAAQP,GACjCvD,EAAE+D,SAASR,GAEpBvD,GAAET,SAAW,SAASgE,EAAO1D,GAC3B,MAAOQ,GAAGkD,EAAO1D,EAASmE,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAAS7E,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD0E,GAASnE,UAAUP,GACnBD,EAAOyE,EAASE,GAChBC,EAAI5E,EAAKE,OACJiB,EAAI,EAAOyD,EAAJzD,EAAOA,IAAK,CAC1B,GAAI0D,GAAM7E,EAAKmB,EACVuD,IAAiB7E,EAAIgF,SAAc,KAAGhF,EAAIgF,GAAOF,EAAOE,IAGjE,MAAOhF,KAKPiF,EAAa,SAAS9C,GACxB,IAAKzB,EAAE6D,SAASpC,GAAY,QAC5B,IAAIqB,EAAc,MAAOA,GAAarB,EACtCuB,GAAKvB,UAAYA,CACjB,IAAI+C,GAAS,GAAIxB,EAEjB,OADAA,GAAKvB,UAAY,KACV+C,GAGLT,EAAW,SAASO,GACtB,MAAO,UAAShF,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIgF,KAQlCG,EAAkB5D,KAAK6D,IAAI,EAAG,IAAM,EACpCpE,EAAYyD,EAAS,UACrBhE,EAAc,SAAS0D,GACzB,GAAI9D,GAASW,EAAUmD,EACvB,OAAwB,gBAAV9D,IAAsBA,GAAU,GAAe8E,GAAV9E,EASrDK,GAAE2E,KAAO3E,EAAE4E,QAAU,SAAStF,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAIe,GAAGjB,CACP,IAAII,EAAYT,GACd,IAAKsB,EAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC3CrB,EAASD,EAAIsB,GAAIA,EAAGtB,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAC5CrB,EAASD,EAAIG,EAAKmB,IAAKnB,EAAKmB,GAAItB,GAGpC,MAAOA,IAITU,EAAE6E,IAAM7E,EAAE8E,QAAU,SAASxF,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBoF,EAAU5C,MAAMxC,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtCqF,GAAQrF,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOyF,IA+BT/E,EAAEgF,OAAShF,EAAEiF,MAAQjF,EAAEkF,OAAS/F,EAAa,GAG7Ca,EAAEmF,YAAcnF,EAAEoF,MAAQjG,GAAc,GAGxCa,EAAEqF,KAAOrF,EAAEsF,OAAS,SAAShG,EAAKc,EAAWP,GAC3C,GAAIyE,EAMJ,OAJEA,GADEvE,EAAYT,GACRU,EAAEuF,UAAUjG,EAAKc,EAAWP,GAE5BG,EAAEwF,QAAQlG,EAAKc,EAAWP,GAE9ByE,QAAa,IAAKA,KAAS,EAAUhF,EAAIgF,GAA7C,QAKFtE,EAAEyF,OAASzF,EAAE0F,OAAS,SAASpG,EAAKc,EAAWP,GAC7C,GAAIkF,KAKJ,OAJA3E,GAAYC,EAAGD,EAAWP,GAC1BG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC7BvF,EAAUmD,EAAO7D,EAAOiG,IAAOZ,EAAQjD,KAAKyB,KAE3CwB,GAIT/E,EAAE4F,OAAS,SAAStG,EAAKc,EAAWP,GAClC,MAAOG,GAAEyF,OAAOnG,EAAKU,EAAE6F,OAAOxF,EAAGD,IAAaP,IAKhDG,EAAE8F,MAAQ9F,EAAE+F,IAAM,SAASzG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEgG,KAAOhG,EAAEiG,IAAM,SAAS3G,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAE6B,SAAW7B,EAAEkG,SAAWlG,EAAEmG,QAAU,SAAS7G,EAAKoB,EAAM0F,EAAWC,GAGnE,MAFKtG,GAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,KACd,gBAAb8G,IAAyBC,KAAOD,EAAY,GAChDpG,EAAEuG,QAAQjH,EAAKoB,EAAM0F,IAAc,GAI5CpG,EAAEwG,OAAS,SAASlH,EAAKmH,GACvB,GAAIC,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7B0G,EAAS3G,EAAEwB,WAAWiF,EAC1B,OAAOzG,GAAE6E,IAAIvF,EAAK,SAASiE,GACzB,GAAIF,GAAOsD,EAASF,EAASlD,EAAMkD,EACnC,OAAe,OAARpD,EAAeA,EAAOA,EAAKM,MAAMJ,EAAOmD,MAKnD1G,EAAE4G,MAAQ,SAAStH,EAAKgF,GACtB,MAAOtE,GAAE6E,IAAIvF,EAAKU,EAAE+D,SAASO,KAK/BtE,EAAE6G,MAAQ,SAASvH,EAAKwH,GACtB,MAAO9G,GAAEyF,OAAOnG,EAAKU,EAAE8D,QAAQgD,KAKjC9G,EAAE+G,UAAY,SAASzH,EAAKwH,GAC1B,MAAO9G,GAAEqF,KAAK/F,EAAKU,EAAE8D,QAAQgD,KAI/B9G,EAAEc,IAAM,SAASxB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,GAAUR,IAAUiD,GAAgBjD,GAExC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACR2C,EAAQiB,IACVA,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IAC9BqB,EAAWC,GAAgBD,KAAchD,KAAYQ,KAAYR,OACnEQ,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAITxE,EAAEe,IAAM,SAASzB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,EAASR,IAAUiD,EAAejD,GAEtC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACA4D,EAARjB,IACFiB,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IACnBsB,EAAXD,GAAwChD,MAAbgD,GAAoChD,MAAXQ,KACtDA,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAKTxE,EAAEkH,QAAU,SAAS5H,GAInB,IAAK,GAAe6H,GAHhBC,EAAMrH,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,GACxCK,EAASyH,EAAIzH,OACb0H,EAAWlF,MAAMxC,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCyH,EAAOnH,EAAEsH,OAAO,EAAG5H,GACfyH,IAASzH,IAAO2H,EAAS3H,GAAS2H,EAASF,IAC/CE,EAASF,GAAQC,EAAI1H,EAEvB,OAAO2H,IAMTrH,EAAEuH,OAAS,SAASjI,EAAKkI,EAAGnB,GAC1B,MAAS,OAALmB,GAAanB,GACVtG,EAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,IAC/BA,EAAIU,EAAEsH,OAAOhI,EAAIK,OAAS,KAE5BK,EAAEkH,QAAQ5H,GAAK0B,MAAM,EAAGH,KAAKC,IAAI,EAAG0G,KAI7CxH,EAAEyH,OAAS,SAASnI,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAE4G,MAAM5G,EAAE6E,IAAIvF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC/C,OACEpC,MAAOA,EACP7D,MAAOA,EACPgI,SAAUnI,EAASgE,EAAO7D,EAAOiG,MAElCgC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAKlI,MAAQmI,EAAMnI,QACxB,SAIN,IAAIsI,GAAQ,SAASC,GACnB,MAAO,UAAS3I,EAAKC,EAAUM,GAC7B,GAAI2E,KAMJ,OALAjF,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,GAC1B,GAAI4E,GAAM/E,EAASgE,EAAO7D,EAAOJ,EACjC2I,GAASzD,EAAQjB,EAAOe,KAEnBE,GAMXxE,GAAEkI,QAAUF,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,GAAKxC,KAAKyB,GAAaiB,EAAOF,IAAQf,KAKvEvD,EAAEmI,QAAUH,EAAM,SAASxD,EAAQjB,EAAOe,GACxCE,EAAOF,GAAOf,IAMhBvD,EAAEoI,QAAUJ,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5DtE,EAAEqI,QAAU,SAAS/I,GACnB,MAAKA,GACDU,EAAE0C,QAAQpD,GAAa0B,EAAMC,KAAK3B,GAClCS,EAAYT,GAAaU,EAAE6E,IAAIvF,EAAKU,EAAE4D,UACnC5D,EAAEsG,OAAOhH,OAIlBU,EAAEsI,KAAO,SAAShJ,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEuI,UAAY,SAASjJ,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAI2I,MAAWC,IAIf,OAHAzI,GAAE2E,KAAKrF,EAAK,SAASiE,EAAOe,EAAKhF,IAC9Bc,EAAUmD,EAAOe,EAAKhF,GAAOkJ,EAAOC,GAAM3G,KAAKyB,MAE1CiF,EAAMC,IAShBzI,EAAE0I,MAAQ1I,EAAE2I,KAAO3I,EAAE4I,KAAO,SAASzI,EAAOqH,EAAGnB,GAC7C,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAM,GAC9BH,EAAE6I,QAAQ1I,EAAOA,EAAMR,OAAS6H,IAMzCxH,EAAE6I,QAAU,SAAS1I,EAAOqH,EAAGnB,GAC7B,MAAOrF,GAAMC,KAAKd,EAAO,EAAGU,KAAKC,IAAI,EAAGX,EAAMR,QAAe,MAAL6H,GAAanB,EAAQ,EAAImB,MAKnFxH,EAAE8I,KAAO,SAAS3I,EAAOqH,EAAGnB,GAC1B,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAMA,EAAMR,OAAS,GAC7CK,EAAE+I,KAAK5I,EAAOU,KAAKC,IAAI,EAAGX,EAAMR,OAAS6H,KAMlDxH,EAAE+I,KAAO/I,EAAEgJ,KAAOhJ,EAAEiJ,KAAO,SAAS9I,EAAOqH,EAAGnB,GAC5C,MAAOrF,GAAMC,KAAKd,EAAY,MAALqH,GAAanB,EAAQ,EAAImB,IAIpDxH,EAAEkJ,QAAU,SAAS/I,GACnB,MAAOH,GAAEyF,OAAOtF,EAAOH,EAAE4D,UAI3B,IAAIuF,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAa7I,EAAM,EACdC,EAAI2I,GAAc,EAAG5J,EAASW,EAAU8I,GAAYzJ,EAAJiB,EAAYA,IAAK,CACxE,GAAI2C,GAAQ6F,EAAMxI,EAClB,IAAIb,EAAYwD,KAAWvD,EAAE0C,QAAQa,IAAUvD,EAAEyJ,YAAYlG,IAAS,CAE/D8F,IAAS9F,EAAQ4F,EAAQ5F,EAAO8F,EAASC,GAC9C,IAAII,GAAI,EAAGC,EAAMpG,EAAM5D,MAEvB,KADA6J,EAAO7J,QAAUgK,EACNA,EAAJD,GACLF,EAAO7I,KAAS4C,EAAMmG,SAEdJ,KACVE,EAAO7I,KAAS4C,GAGpB,MAAOiG,GAITxJ,GAAEmJ,QAAU,SAAShJ,EAAOkJ,GAC1B,MAAOF,GAAQhJ,EAAOkJ,GAAS,IAIjCrJ,EAAE4J,QAAU,SAASzJ,GACnB,MAAOH,GAAE6J,WAAW1J,EAAOa,EAAMC,KAAKhB,UAAW,KAMnDD,EAAE8J,KAAO9J,EAAE+J,OAAS,SAAS5J,EAAO6J,EAAUzK,EAAUM,GACjDG,EAAEiK,UAAUD,KACfnK,EAAUN,EACVA,EAAWyK,EACXA,GAAW,GAEG,MAAZzK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFD2E,MACA0F,KACKtJ,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAI2C,GAAQpD,EAAMS,GACdoG,EAAWzH,EAAWA,EAASgE,EAAO3C,EAAGT,GAASoD,CAClDyG,IACGpJ,GAAKsJ,IAASlD,GAAUxC,EAAO1C,KAAKyB,GACzC2G,EAAOlD,GACEzH,EACJS,EAAE6B,SAASqI,EAAMlD,KACpBkD,EAAKpI,KAAKkF,GACVxC,EAAO1C,KAAKyB,IAEJvD,EAAE6B,SAAS2C,EAAQjB,IAC7BiB,EAAO1C,KAAKyB,GAGhB,MAAOiB,IAKTxE,EAAEmK,MAAQ,WACR,MAAOnK,GAAE8J,KAAKX,EAAQlJ,WAAW,GAAM,KAKzCD,EAAEoK,aAAe,SAASjK,GAGxB,IAAK,GAFDqE,MACA6F,EAAapK,UAAUN,OAClBiB,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAIF,GAAOP,EAAMS,EACjB,KAAIZ,EAAE6B,SAAS2C,EAAQ9D,GAAvB,CACA,IAAK,GAAIgJ,GAAI,EAAOW,EAAJX,GACT1J,EAAE6B,SAAS5B,UAAUyJ,GAAIhJ,GADAgJ,KAG5BA,IAAMW,GAAY7F,EAAO1C,KAAKpB,IAEpC,MAAO8D,IAKTxE,EAAE6J,WAAa,SAAS1J,GACtB,GAAI4I,GAAOI,EAAQlJ,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEyF,OAAOtF,EAAO,SAASoD,GAC9B,OAAQvD,EAAE6B,SAASkH,EAAMxF,MAM7BvD,EAAEsK,IAAM,WACN,MAAOtK,GAAEuK,MAAMtK,YAKjBD,EAAEuK,MAAQ,SAASpK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEc,IAAIX,EAAOG,GAAWX,QAAU,EACpD6E,EAASrC,MAAMxC,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClC8E,EAAO9E,GAASM,EAAE4G,MAAMzG,EAAOT,EAEjC,OAAO8E,IAMTxE,EAAEwK,OAAS,SAAS7E,EAAMW,GAExB,IAAK,GADD9B,MACK5D,EAAI,EAAGjB,EAASW,EAAUqF,GAAWhG,EAAJiB,EAAYA,IAChD0F,EACF9B,EAAOmB,EAAK/E,IAAM0F,EAAO1F,GAEzB4D,EAAOmB,EAAK/E,GAAG,IAAM+E,EAAK/E,GAAG,EAGjC,OAAO4D,IAiBTxE,EAAEuF,UAAYrF,EAA2B,GACzCF,EAAEyK,cAAgBvK,GAA4B,GAI9CF,EAAES,YAAc,SAASN,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI0D,GAAQhE,EAASD,GACjBoL,EAAM,EAAGC,EAAOrK,EAAUH,GACjBwK,EAAND,GAAY,CACjB,GAAIE,GAAM/J,KAAKgK,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQrH,EAAOmH,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAgCT1K,EAAEuG,QAAUhG,EAAkB,EAAGP,EAAEuF,UAAWvF,EAAES,aAChDT,EAAE8K,YAAcvK,GAAmB,EAAGP,EAAEyK,eAKxCzK,EAAE+K,MAAQ,SAASC,EAAOC,EAAMC,GAClB,MAARD,IACFA,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDvL,GAASkB,KAAKC,IAAID,KAAKsK,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQ5I,MAAMxC,GAETgB,EAAM,EAAShB,EAANgB,EAAcA,IAAOqK,GAASE,EAC9CH,EAAMpK,GAAOqK,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWzL,EAAS0L,EAAgB7E,GAC1E,KAAM6E,YAA0BD,IAAY,MAAOD,GAAW1H,MAAM9D,EAAS6G,EAC7E,IAAI8E,GAAOjH,EAAW8G,EAAW5J,WAC7B+C,EAAS6G,EAAW1H,MAAM6H,EAAM9E,EACpC,OAAI1G,GAAE6D,SAASW,GAAgBA,EACxBgH,EAMTxL,GAAE6C,KAAO,SAASQ,EAAMxD,GACtB,GAAI+C,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWe,MAAMN,EAAMrC,EAAMC,KAAKhB,UAAW,GAChG,KAAKD,EAAEwB,WAAW6B,GAAO,KAAM,IAAIoI,WAAU,oCAC7C,IAAI/E,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7ByL,EAAQ,WACV,MAAON,GAAa/H,EAAMqI,EAAO7L,EAASmC,KAAM0E,EAAKiF,OAAO3K,EAAMC,KAAKhB,aAEzE,OAAOyL,IAMT1L,EAAE4L,QAAU,SAASvI,GACnB,GAAIwI,GAAY7K,EAAMC,KAAKhB,UAAW,GAClCyL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGnM,EAASkM,EAAUlM,OACjC+G,EAAOvE,MAAMxC,GACRiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B8F,EAAK9F,GAAKiL,EAAUjL,KAAOZ,EAAIC,UAAU6L,KAAcD,EAAUjL,EAEnE,MAAOkL,EAAW7L,UAAUN,QAAQ+G,EAAK5E,KAAK7B,UAAU6L,KACxD,OAAOV,GAAa/H,EAAMqI,EAAO1J,KAAMA,KAAM0E,GAE/C,OAAOgF,IAMT1L,EAAE+L,QAAU,SAASzM,GACnB,GAAIsB,GAA8B0D,EAA3B3E,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIqM,OAAM,wCACjC,KAAKpL,EAAI,EAAOjB,EAAJiB,EAAYA,IACtB0D,EAAMrE,UAAUW,GAChBtB,EAAIgF,GAAOtE,EAAE6C,KAAKvD,EAAIgF,GAAMhF,EAE9B,OAAOA,IAITU,EAAEiM,QAAU,SAAS5I,EAAM6I,GACzB,GAAID,GAAU,SAAS3H,GACrB,GAAI6H,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOvI,MAAM3B,KAAM/B,WAAaqE,EAE7D,OADKtE,GAAE4B,IAAIuK,EAAOC,KAAUD,EAAMC,GAAW/I,EAAKM,MAAM3B,KAAM/B,YACvDkM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKTjM,EAAEqM,MAAQ,SAAShJ,EAAMiJ,GACvB,GAAI5F,GAAO1F,EAAMC,KAAKhB,UAAW,EACjC,OAAOsM,YAAW,WAChB,MAAOlJ,GAAKM,MAAM,KAAM+C,IACvB4F,IAKLtM,EAAEwM,MAAQxM,EAAE4L,QAAQ5L,EAAEqM,MAAOrM,EAAG,GAOhCA,EAAEyM,SAAW,SAASpJ,EAAMiJ,EAAMI,GAChC,GAAI7M,GAAS6G,EAAMlC,EACfmI,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI9M,EAAE+M,MAC7CJ,EAAU,KACVnI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,MAEjC,OAAO,YACL,GAAIqG,GAAM/M,EAAE+M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA/M,GAAUmC,KACV0E,EAAOzG,UACU,GAAb+M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXvI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,OACrBiG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBxI,IAQXxE,EAAEmN,SAAW,SAAS9J,EAAMiJ,EAAMc,GAChC,GAAIT,GAASjG,EAAM7G,EAASwN,EAAW7I,EAEnCqI,EAAQ,WACV,GAAI/D,GAAO9I,EAAE+M,MAAQM,CAEVf,GAAPxD,GAAeA,GAAQ,EACzB6D,EAAUJ,WAAWM,EAAOP,EAAOxD,IAEnC6D,EAAU,KACLS,IACH5I,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,QAKrC,OAAO,YACL7G,EAAUmC,KACV0E,EAAOzG,UACPoN,EAAYrN,EAAE+M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACF9I,EAASnB,EAAKM,MAAM9D,EAAS6G,GAC7B7G,EAAU6G,EAAO,MAGZlC,IAOXxE,EAAEuN,KAAO,SAASlK,EAAMmK,GACtB,MAAOxN,GAAE4L,QAAQ4B,EAASnK,IAI5BrD,EAAE6F,OAAS,SAASzF,GAClB,MAAO,YACL,OAAQA,EAAUuD,MAAM3B,KAAM/B,aAMlCD,EAAEyN,QAAU,WACV,GAAI/G,GAAOzG,UACP+K,EAAQtE,EAAK/G,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIiB,GAAIoK,EACJxG,EAASkC,EAAKsE,GAAOrH,MAAM3B,KAAM/B,WAC9BW,KAAK4D,EAASkC,EAAK9F,GAAGK,KAAKe,KAAMwC,EACxC,OAAOA,KAKXxE,EAAE0N,MAAQ,SAASC,EAAOtK,GACxB,MAAO,YACL,QAAMsK,EAAQ,EACLtK,EAAKM,MAAM3B,KAAM/B,WAD1B,SAOJD,EAAE4N,OAAS,SAASD,EAAOtK,GACzB,GAAI7D,EACJ,OAAO,YAKL,QAJMmO,EAAQ,IACZnO,EAAO6D,EAAKM,MAAM3B,KAAM/B,YAEb,GAAT0N,IAAYtK,EAAO,MAChB7D,IAMXQ,EAAE6N,KAAO7N,EAAE4L,QAAQ5L,EAAE4N,OAAQ,EAM7B,IAAIE,KAAevL,SAAU,MAAMwL,qBAAqB,YACpD1M,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DrB,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIqD,EAAY,MAAOA,GAAWrD,EAClC,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAASU,EAAE4B,IAAItC,EAAKgF,IAAM7E,EAAKqC,KAAKwC,EAGpD,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEgO,QAAU,SAAS1O,GACnB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAAKG,EAAKqC,KAAKwC,EAG/B,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEsG,OAAS,SAAShH,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACd2G,EAASnE,MAAMxC,GACViB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B0F,EAAO1F,GAAKtB,EAAIG,EAAKmB,GAEvB,OAAO0F,IAKTtG,EAAEiO,UAAY,SAAS3O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACdoF,KAEKrF,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClBqF,EAAQnF,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOyF,IAIX/E,EAAEkO,MAAQ,SAAS5O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACduO,EAAQ/L,MAAMxC,GACTiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1BsN,EAAMtN,IAAMnB,EAAKmB,GAAItB,EAAIG,EAAKmB,IAEhC,OAAOsN,IAITlO,EAAEmO,OAAS,SAAS7O,GAGlB,IAAK,GAFDkF,MACA/E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAChD4D,EAAOlF,EAAIG,EAAKmB,KAAOnB,EAAKmB,EAE9B,OAAO4D,IAKTxE,EAAEoO,UAAYpO,EAAEqO,QAAU,SAAS/O,GACjC,GAAIgP,KACJ,KAAK,GAAIhK,KAAOhF,GACVU,EAAEwB,WAAWlC,EAAIgF,KAAOgK,EAAMxM,KAAKwC,EAEzC,OAAOgK,GAAM3G,QAIf3H,EAAEuO,OAAStK,EAAejE,EAAEgO,SAI5BhO,EAAEwO,UAAYxO,EAAEyO,OAASxK,EAAejE,EAAEP,MAG1CO,EAAEwF,QAAU,SAASlG,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmByE,GAApB7E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAEhD,GADA0D,EAAM7E,EAAKmB,GACPR,EAAUd,EAAIgF,GAAMA,EAAKhF,GAAM,MAAOgF,IAK9CtE,EAAE0O,KAAO,SAASlE,EAAQmE,EAAW9O,GACnC,GAA+BN,GAAUE,EAArC+E,KAAalF,EAAMkL,CACvB,IAAW,MAAPlL,EAAa,MAAOkF,EACpBxE,GAAEwB,WAAWmN,IACflP,EAAOO,EAAEgO,QAAQ1O,GACjBC,EAAWO,EAAW6O,EAAW9O,KAEjCJ,EAAO0J,EAAQlJ,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASgE,EAAOe,EAAKhF,GAAO,MAAOgF,KAAOhF,IACrDA,EAAM8C,OAAO9C,GAEf,KAAK,GAAIsB,GAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAAK,CACrD,GAAI0D,GAAM7E,EAAKmB,GACX2C,EAAQjE,EAAIgF,EACZ/E,GAASgE,EAAOe,EAAKhF,KAAMkF,EAAOF,GAAOf,GAE/C,MAAOiB,IAITxE,EAAE4O,KAAO,SAAStP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEwB,WAAWjC,GACfA,EAAWS,EAAE6F,OAAOtG,OACf,CACL,GAAIE,GAAOO,EAAE6E,IAAIsE,EAAQlJ,WAAW,GAAO,EAAO,GAAI4O,OACtDtP,GAAW,SAASgE,EAAOe,GACzB,OAAQtE,EAAE6B,SAASpC,EAAM6E,IAG7B,MAAOtE,GAAE0O,KAAKpP,EAAKC,EAAUM,IAI/BG,EAAE8O,SAAW7K,EAAejE,EAAEgO,SAAS,GAKvChO,EAAE+C,OAAS,SAAStB,EAAWsN,GAC7B,GAAIvK,GAASD,EAAW9C,EAExB,OADIsN,IAAO/O,EAAEwO,UAAUhK,EAAQuK,GACxBvK,GAITxE,EAAEgP,MAAQ,SAAS1P,GACjB,MAAKU,GAAE6D,SAASvE,GACTU,EAAE0C,QAAQpD,GAAOA,EAAI0B,QAAUhB,EAAEuO,UAAWjP,GADtBA,GAO/BU,EAAEiP,IAAM,SAAS3P,EAAK4P,GAEpB,MADAA,GAAY5P,GACLA,GAITU,EAAEmP,QAAU,SAAS3E,EAAQ1D,GAC3B,GAAIrH,GAAOO,EAAEP,KAAKqH,GAAQnH,EAASF,EAAKE,MACxC,IAAc,MAAV6K,EAAgB,OAAQ7K,CAE5B,KAAK,GADDL,GAAM8C,OAAOoI,GACR5J,EAAI,EAAOjB,EAAJiB,EAAYA,IAAK,CAC/B,GAAI0D,GAAM7E,EAAKmB,EACf,IAAIkG,EAAMxC,KAAShF,EAAIgF,MAAUA,IAAOhF,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI8P,GAAK,SAAStH,EAAGC,EAAGsH,EAAQC,GAG9B,GAAIxH,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAa9H,KAAG8H,EAAIA,EAAE7E,UACtB8E,YAAa/H,KAAG+H,EAAIA,EAAE9E,SAE1B,IAAIsM,GAAYhN,EAAStB,KAAK6G,EAC9B,IAAIyH,IAAchN,EAAStB,KAAK8G,GAAI,OAAO,CAC3C,QAAQwH,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKzH,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAIyH,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL1H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI0H,GAAQ3H,EAAExG,YAAaoO,EAAQ3H,EAAEzG,WACrC,IAAImO,IAAUC,KAAW1P,EAAEwB,WAAWiO,IAAUA,YAAiBA,IACxCzP,EAAEwB,WAAWkO,IAAUA,YAAiBA,KACzC,eAAiB5H,IAAK,eAAiBC,GAC7D,OAAO,EAQXsH,EAASA,MACTC,EAASA,KAET,KADA,GAAI3P,GAAS0P,EAAO1P,OACbA,KAGL,GAAI0P,EAAO1P,KAAYmI,EAAG,MAAOwH,GAAO3P,KAAYoI,CAQtD,IAJAsH,EAAOvN,KAAKgG,GACZwH,EAAOxN,KAAKiG,GAGRyH,EAAW,CAGb,GADA7P,EAASmI,EAAEnI,OACPA,IAAWoI,EAAEpI,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKyP,EAAGtH,EAAEnI,GAASoI,EAAEpI,GAAS0P,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBhL,GAAlB7E,EAAOO,EAAEP,KAAKqI,EAGlB,IAFAnI,EAASF,EAAKE,OAEVK,EAAEP,KAAKsI,GAAGpI,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADA2E,EAAM7E,EAAKE,IACLK,EAAE4B,IAAImG,EAAGzD,KAAQ8K,EAAGtH,EAAExD,GAAMyD,EAAEzD,GAAM+K,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAIT3P,GAAE4P,QAAU,SAAS9H,EAAGC,GACtB,MAAOqH,GAAGtH,EAAGC,IAKf/H,EAAE6P,QAAU,SAASvQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE0C,QAAQpD,IAAQU,EAAE8P,SAASxQ,IAAQU,EAAEyJ,YAAYnK,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE+P,UAAY,SAASzQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAI0Q,WAKvBhQ,EAAE0C,QAAUD,GAAiB,SAASnD,GACpC,MAA8B,mBAAvBiD,EAAStB,KAAK3B,IAIvBU,EAAE6D,SAAW,SAASvE,GACpB,GAAI2Q,SAAc3Q,EAClB,OAAgB,aAAT2Q,GAAgC,WAATA,KAAuB3Q,GAIvDU,EAAE2E,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAASuL,GACxFlQ,EAAE,KAAOkQ,GAAQ,SAAS5Q,GACxB,MAAOiD,GAAStB,KAAK3B,KAAS,WAAa4Q,EAAO,OAMjDlQ,EAAEyJ,YAAYxJ,aACjBD,EAAEyJ,YAAc,SAASnK,GACvB,MAAOU,GAAE4B,IAAItC,EAAK,YAMJ,kBAAP,KAAyC,gBAAb6Q,aACrCnQ,EAAEwB,WAAa,SAASlC,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEoQ,SAAW,SAAS9Q,GACpB,MAAO8Q,UAAS9Q,KAAS4B,MAAMmP,WAAW/Q,KAI5CU,EAAEkB,MAAQ,SAAS5B,GACjB,MAAOU,GAAEsQ,SAAShR,IAAQA,KAASA,GAIrCU,EAAEiK,UAAY,SAAS3K,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBiD,EAAStB,KAAK3B,IAIxDU,EAAEuQ,OAAS,SAASjR,GAClB,MAAe,QAARA,GAITU,EAAEwQ,YAAc,SAASlR,GACvB,MAAOA,SAAa,IAKtBU,EAAE4B,IAAM,SAAStC,EAAKgF,GACpB,MAAc,OAAPhF,GAAekD,EAAevB,KAAK3B,EAAKgF,IAQjDtE,EAAEyQ,WAAa,WAEb,MADA1O,GAAK/B,EAAIiC,EACFD,MAIThC,EAAE4D,SAAW,SAASL,GACpB,MAAOA,IAITvD,EAAE0Q,SAAW,SAASnN,GACpB,MAAO,YACL,MAAOA,KAIXvD,EAAE2Q,KAAO,aAET3Q,EAAE+D,SAAWA,EAGb/D,EAAE4Q,WAAa,SAAStR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASgF,GAC3C,MAAOhF,GAAIgF,KAMftE,EAAE8D,QAAU9D,EAAE6Q,QAAU,SAAS/J,GAE/B,MADAA,GAAQ9G,EAAEwO,aAAc1H,GACjB,SAASxH,GACd,MAAOU,GAAEmP,QAAQ7P,EAAKwH,KAK1B9G,EAAE2N,MAAQ,SAASnG,EAAGjI,EAAUM,GAC9B,GAAIiR,GAAQ3O,MAAMtB,KAAKC,IAAI,EAAG0G,GAC9BjI,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAIe,GAAI,EAAO4G,EAAJ5G,EAAOA,IAAKkQ,EAAMlQ,GAAKrB,EAASqB,EAChD,OAAOkQ,IAIT9Q,EAAEsH,OAAS,SAASvG,EAAKD,GAKvB,MAJW,OAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAMF,KAAKgK,MAAMhK,KAAKyG,UAAYxG,EAAMC,EAAM,KAIvDf,EAAE+M,IAAMgE,KAAKhE,KAAO,WAClB,OAAO,GAAIgE,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAcxR,EAAEmO,OAAO8C,GAGvBQ,EAAgB,SAAS5M,GAC3B,GAAI6M,GAAU,SAASC,GACrB,MAAO9M,GAAI8M,IAGTvN,EAAS,MAAQpE,EAAEP,KAAKoF,GAAK+M,KAAK,KAAO,IACzCC,EAAaC,OAAO1N,GACpB2N,EAAgBD,OAAO1N,EAAQ,IACnC,OAAO,UAAS4N,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9EhS,GAAEmS,OAASV,EAAcR,GACzBjR,EAAEoS,SAAWX,EAAcD,GAI3BxR,EAAEwE,OAAS,SAASgG,EAAQzG,EAAUsO,GACpC,GAAI9O,GAAkB,MAAViH,MAAsB,GAAIA,EAAOzG,EAI7C,OAHIR,SAAe,KACjBA,EAAQ8O,GAEHrS,EAAEwB,WAAW+B,GAASA,EAAMtC,KAAKuJ,GAAUjH,EAKpD,IAAI+O,GAAY,CAChBtS,GAAEuS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCzS,EAAE0S,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxB3R,GAAEqT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWvT,EAAE8O,YAAayE,EAAUvT,EAAE0S,iBAGtC,IAAI5O,GAAUgO,SACXyB,EAASpB,QAAUU,GAASzO,QAC5BmP,EAASX,aAAeC,GAASzO,QACjCmP,EAASZ,UAAYE,GAASzO,QAC/BwN,KAAK,KAAO,KAAM,KAGhBlS,EAAQ,EACR0E,EAAS,QACbkP,GAAKpB,QAAQpO,EAAS,SAAS6N,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZArP,IAAUkP,EAAKtS,MAAMtB,EAAO+T,GAAQvB,QAAQR,EAAS0B,GACrD1T,EAAQ+T,EAAS9B,EAAMhS,OAEnBwS,EACF/N,GAAU,cAAgB+N,EAAS,iCAC1BS,EACTxO,GAAU,cAAgBwO,EAAc,uBAC/BD,IACTvO,GAAU,OAASuO,EAAW,YAIzBhB,IAETvN,GAAU,OAGLmP,EAASG,WAAUtP,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIuP,GAAS,GAAIrR,UAASiR,EAASG,UAAY,MAAO,IAAKtP,GAC3D,MAAOwP,GAEP,KADAA,GAAExP,OAASA,EACLwP,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO1S,KAAKe,KAAM6R,EAAM7T,IAI7B8T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAASjP,OAAS,YAAc0P,EAAW,OAAS1P,EAAS,IAEtDiP,GAITrT,EAAE+T,MAAQ,SAASzU,GACjB,GAAI0U,GAAWhU,EAAEV,EAEjB,OADA0U,GAASC,QAAS,EACXD,EAUT,IAAIxP,GAAS,SAASwP,EAAU1U,GAC9B,MAAO0U,GAASC,OAASjU,EAAEV,GAAKyU,QAAUzU,EAI5CU,GAAEkU,MAAQ,SAAS5U,GACjBU,EAAE2E,KAAK3E,EAAEoO,UAAU9O,GAAM,SAAS4Q,GAChC,GAAI7M,GAAOrD,EAAEkQ,GAAQ5Q,EAAI4Q,EACzBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAIxJ,IAAQ1E,KAAKiB,SAEjB,OADAnB,GAAK6B,MAAM+C,EAAMzG,WACVuE,EAAOxC,KAAMqB,EAAKM,MAAM3D,EAAG0G,QAMxC1G,EAAEkU,MAAMlU,GAGRA,EAAE2E,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAASuL,GAChF,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAI5Q,GAAM0C,KAAKiB,QAGf,OAFAwD,GAAO9C,MAAMrE,EAAKW,WACJ,UAATiQ,GAA6B,WAATA,GAAqC,IAAf5Q,EAAIK,cAAqBL,GAAI,GACrEkF,EAAOxC,KAAM1C,MAKxBU,EAAE2E,MAAM,SAAU,OAAQ,SAAU,SAASuL,GAC3C,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,MAAO1L,GAAOxC,KAAMyE,EAAO9C,MAAM3B,KAAKiB,SAAUhD,eAKpDD,EAAEyB,UAAU8B,MAAQ,WAClB,MAAOvB,MAAKiB,UAKdjD,EAAEyB,UAAU0S,QAAUnU,EAAEyB,UAAU2S,OAASpU,EAAEyB,UAAU8B,MAEvDvD,EAAEyB,UAAUc,SAAW,WACrB,MAAO,GAAKP,KAAKiB,UAUG,kBAAXoR,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOrU,OAGXiB,KAAKe"}prewikka-5.2.0/prewikka/locale/0000755000000000000000000000000013726165110016347 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/de/0000755000000000000000000000000013726165110016737 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/de/LC_MESSAGES/0000755000000000000000000000000013726165110020524 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/de/LC_MESSAGES/prewikka.po0000644000000000000000000023436613726165107022725 0ustar rootroot00000000000000# German Translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # Bjoern Weiland , 2007. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Bjoern Weiland \n" "Language-Team: German\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Zugriff verweigert" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "Konfigurationsfehler" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Stündlich" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Täglich" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Wöchentlich" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Monatlich" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Jährlich" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Maßgeschneidert" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Deaktiviert" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 #, fuzzy msgid "Invalid job extension" msgstr "Session ungültig" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Session ungültig" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 msgid "Invalid schedule" msgstr "Ungültiger Zeitplan" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Maßgeschneidert (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "Datenbanksfehler" #: prewikka/database.py:50 msgid "Database schema error" msgstr "Datenbankschema Fehler" #: prewikka/database.py:293 msgid "database installation required" msgstr "" #: prewikka/database.py:296 msgid "database activation required" msgstr "" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 #, fuzzy msgid "Database configuration error" msgstr "Konfigurationsfehler" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m.%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d.%m.%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d.%m.%Y %H:00" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d.%m.%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d.%m.%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "%(days)dT %(hours)dS %(minutes)d'" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "Prewikka %(vPre)s benötigt libprelude %(vLib)s oder höher" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "Prewikka %(vPre)s benötigt libpreludedb %(vLib)s oder höher" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Heute" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Gestern" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Diese Woche" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "Letzte Woche" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Diesen Monat" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "Letzten Monat" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d Woche" msgstr[1] "%d Wochen" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d Monat" msgstr[1] "%d Monate" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d Jahr" msgstr[1] "%d Jahre" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d Sekunde" msgstr[1] "%d Sekunden" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d Minute" msgstr[1] "%d Minuten" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Inaktiv" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 msgid "None" msgstr "Kein" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 msgid "Menu error" msgstr "Menü Fehler" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "" "Zugang zur Aussicht '%(view)s' verboten. Erforderliche Berechtigungen: " "%(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "Erforderliche Berechtigungen: %s" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "Parameter-Normalisierung fehlgeschlagen" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "Parameter '%s' is nicht gültig" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "" #: prewikka/view.py:95 msgid "Invalid method" msgstr "Ungültige Methode" #: prewikka/view.py:102 msgid "Invalid view" msgstr "Ungültige Aussicht" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "Die Aussicht '%s' existiert nicht" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Authentifizierung fehlgeschlagen" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Gleich" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Gleich (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Nicht gleich" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Nicht gleich (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Regulärer Ausdruck" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Regulärer Ausdruck (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "Nicht regulärer Ausdruck" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "Nicht regulärer Ausdruck (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Weniger als" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Kleiner oder gleich" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Größer als" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Größer oder gleich" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Teilstring" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Teilstring (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "Nicht Teilstring" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "Nicht Teilstring (Groß-/Kleinschreibung egal)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "Umwandlungsfehler" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "Backendfehler" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "Syntaxfehler" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "Unbekannter Pfad: %s" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 #, fuzzy msgid "Could not parse input" msgstr "Wählen Sie einen Filter" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Hoch" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Mittel" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Niedrig" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Informationell" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Alarme" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Klassifikation" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "Quell-IP" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Quellport" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "Ziel-IP" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Zielport" #: prewikka/dataprovider/idmef.py:170 msgid "Analyzer name" msgstr "Analysator Name" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Alarm-Liste" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Heartbeats" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Heartbeat-Liste" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Logs" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "Nachricht" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Host" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Programm" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "Zeitstempel" #: prewikka/dataprovider/utils.py:50 #, fuzzy msgid "Invalid operation" msgstr "Session ungültig" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 #, fuzzy msgid "Invalid configuration" msgstr "Konfiguration" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 #, fuzzy msgid "Missing configuration" msgstr "Konfiguration" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 #, fuzzy msgid "Request error" msgstr "Menü Fehler" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 #, fuzzy msgid "The specified Elasticsearch index does not exist" msgstr "Die spezifierte Zeitzone existiert nicht" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 #, fuzzy msgid "Dataprovider error" msgstr "Rendererfehler" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 #, fuzzy msgid "Lucene emulation error" msgstr "Konfigurationsfehler" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 #, fuzzy msgid "Filters management page" msgstr "Nach Agent filtern" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Vorlieben" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filter" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filter %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "Filterfehler" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "Der Filter '%s' existiert nicht" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 #, fuzzy msgid "Could not save filter" msgstr "Wählen Sie einen Filter" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Neuer Filter" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Name:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Filtername" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Kategorie:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Beschreibung:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Abbrechen" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Sichern" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Name" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Kategorie" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Beschreibung" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Erstellen" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Duplizieren" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "Diese Filter löschen?" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Löschen" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filter:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Verfügbare Filter" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Kein Filter" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Keine Kategorie" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "Wählen Sie ein Pfad..." #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "Standardpfade" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "Alle Pfade" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "Operator verändern" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "Wert" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "Bedingung löschen" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "UND" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "ODER" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "Bedingung hinzufügen" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "Gruppe hinzufügen" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "Gruppe löschen" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "OK" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "Rendererfehler" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Session ungültig" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Session abgelaufen" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Ausgeloggt" #: prewikka/session/anonymous/anonymous.py:31 #, fuzzy msgid "Anonymous authentication" msgstr "Authentifizierung" #: prewikka/session/loginform/__init__.py:35 #, fuzzy msgid "Login/Password authentication" msgstr "Authentifizierung" #: prewikka/session/loginform/templates/loginform.mak:17 msgid "User authentication" msgstr "Authentifizierung" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Login" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Passwort" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Login" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "Aussichtsoptionen" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "Aussichtshilfe" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "Diese App war deaktiviert oder konnte nicht geladen werden." #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "Name" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "Über" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "Sind Sie sicher, sich ausloggen zu wollen?" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Ausloggen" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Detail" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "Anmelden" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "Zurück" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "Wiederholen" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "Zur Hauptseite umleiten" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Erfrischen:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "Aktualisierungsfrequenz der aktuellen Seite" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Periode:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Visualisierungsperiode" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Anfang:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "Anfang" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Anfangsdatum" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Ende:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "Ende" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Endesdatum" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "Bitte bestätigen" #: prewikka/templates/toplayout.mak:73 #, fuzzy msgid "Prelude Dialog" msgstr "Prelude interner Fehler" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "Verbindungsfehler" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Offline" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Unbekannt" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Vermisst" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Online" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "Prelude SIEM Version %s" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "Prelude SIEM ist ein \"Security Information and Event Management\" System" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" "{prelude} ist ein Sicherheitsmanagement-Lösung, die sammelt, " "normalisiert, korreliert, speichert und archiviert Daten aus " "verschiedenen Quellen von Ihrem Informationssystem. Aus allen diesen " "Informationen Prelude SIEM kann eine globale Vision der Sicherheitsstufe " "Ihres Systems bieten und daher Angriffe und Virusinfektionen verhindern." #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "Vigilo NMS ist ein \"Network Management System\"" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" "{vigilo} ist eine komplette Leistungsüberwachung-Lösung, die mittlere und" " große Systeme (Netzwerk - Server - Anwendungen) behandeln kann, aufgrund" " seiner verteilten und modularen Architektur. Vigilo NMS bietet alle " "erforderlichen Funktionen für Leistungsüberwachung: Verwaltung von " "Zustanden und Alarmen, Metrologie, Kartographie, Ereigniskorrelation und " "Berichterstattung." #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" "Prelude SIEM und Vigilo NMS werden von der Firma %s entwickelt, " "Entwerfer, Integrator und Operator von kritischen Systemen." #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Kontakt" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Telefon:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Fax:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Quellport" #: prewikka/views/about/templates/about.mak:55 msgid "Community" msgstr "Gemeinschaft" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Schließen" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "Apps: API" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "Apps: Aussicht" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 msgid "Apps: Authentication" msgstr "Apps: Authentifizierung" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "Apps: Identifizierung" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Apps" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "FEHLER" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 #, fuzzy msgid "Update failed" msgstr "fehlgeschlagen" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 #, fuzzy msgid "Update Dialog" msgstr "fehlgeschlagen" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "Plugin" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 msgid "Script" msgstr "Skript" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "Ergebnis" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Version" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "Aktuelle Datenbankversion" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Installierte Apps" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Datenbankversion" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Aktiv" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "Die ausgewählten Apps aktualisieren?" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Aktualisieren" #: prewikka/views/agents/__init__.py:12 #, fuzzy msgid "Agents status information page" msgstr "Adress Informationen" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agenten" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Knotenname n/a" #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "Betriebssystem Version n/a" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Betriebssystem n/a" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Knoten Standort n/a" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Alarm-Liste" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "Heartbeat-Liste" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Heartbeat-Analyse" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Überwachung" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "Normaler Sensor-Start" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "Unerwarteter Sensor-Neustart" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "Unerwartetes Heartbeat-Intervall: %(delta)s" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "Normaler Sensor-Halt" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "Der Sensor ist vermisst seit %s" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" "Keine Anomalie in der %(count)d letzten Heartbeats (ein Heartbeatalle " "%(delta)s durchschnittlich)" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "Alles einblenden/ausblenden" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "Suchen:" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Standort" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Knoten" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Modell" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Klasse" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Neuster Heartbeat" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Status" #: prewikka/views/agents/templates/agents.mak:90 #, fuzzy msgid "Delete the alerts of the selected agent(s)" msgstr "Diese Heartbeats löschen?" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 #, fuzzy msgid "OS" msgstr "TOS" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Knotenname" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Knoten Standort" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Knotenadresse" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "Aktueller Status" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Ereignisse" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Nach Agent filtern" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Konfiguration" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "Planung" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "SYSTEM" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "Anstehend" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Fehler" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "Zeitplan:" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "maßgeschneidert" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "deaktiviert" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Minute:" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Stunde:" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "Tag:" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Monat:" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "Wochentag:" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "Geplante Aufgaben" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "Zeitplan" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Benutzer" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "Letzte Ausführung" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "Nächste Ausführung" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "Deaktivieren" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "Aktivieren" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Alarm-Liste" #: prewikka/views/datasearch/alert.py:124 msgid "Aggregated alerts" msgstr "Aggregierte Alarme" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Heftigkeit" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Datum" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Quelle" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Ziel" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analysator" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 #, fuzzy msgid "Low severity" msgstr "Heftigkeit" #: prewikka/views/datasearch/alert.py:228 #, fuzzy msgid "Medium severity" msgstr "Heftigkeit" #: prewikka/views/datasearch/alert.py:229 #, fuzzy msgid "High severity" msgstr "Heftigkeit" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "Minute" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "Stunde" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "Tag" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "Monat" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "Jahr" #: prewikka/views/datasearch/datasearch.py:189 #, fuzzy msgid "Time group error" msgstr "Menü Fehler" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "General" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Heartbeat-Liste" #: prewikka/views/datasearch/heartbeat.py:53 msgid "Aggregated heartbeats" msgstr "Aggregierte Heartbeat" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agent" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "Diese Heartbeats löschen?" #: prewikka/views/datasearch/idmef.py:46 msgid "See IDMEF details" msgstr "IDMEF Detail sehen" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Alarm-Liste" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "Aggregierte Logs" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 #, fuzzy msgid "View logs" msgstr "Aussichten" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Log" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "Archiv" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Kontext" #: prewikka/views/datasearch/log.py:116 #, fuzzy msgid "Syslog export" msgstr "%s Bericht" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Gruppieren nach %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "Zur Suche hinzufügen" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "Von der Suche ausschließen" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "Felder" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "Abfrageverlauf" #: prewikka/views/datasearch/templates/forensic.mak:34 msgid "Count" msgstr "Zählung" #: prewikka/views/datasearch/templates/forensic.mak:79 msgid "Chart type" msgstr "Grafiktyp" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Grenze" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "Aktionmodus" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "Kondensierter Modus" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "Expertenmodus" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "Suchmodus" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "Suchen" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "Die Suche zurückstellen" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Gruppieren nach" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 #, fuzzy msgid "Time values" msgstr "Wert" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 msgid "Timeline" msgstr "Zeitleiste" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "Neue Suche" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Aktionen" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informationen" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "Feld" #: prewikka/views/datasearch/templates/infos.mak:9 #, fuzzy msgid "Occurrence" msgstr "Quelle" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Hilfe" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "Kinder" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "Korrelierte Alarme" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "Attribute" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "Stichwort" #: prewikka/views/messagesummary/__init__.py:13 #, fuzzy msgid "Detailed alert and heartbeat page" msgstr "Generisch (Alarm und Heartbeat)" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Code" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Datenlänge" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Daten" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(Sensor Lokalzeit: %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Erstellungszeit" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Detektionszeit" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Analysator Zeit" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Prozess" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Prozess Pfad" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "Prozess PID" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Knotenname (aufgelöst)" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "Analysator-ID" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Hersteller" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Betriebssystem" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Analysator Pfad (%d nicht gezeigt)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Analysator #%d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Zusätzliche Daten" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Bedeutung" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Wert" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Headerlänge" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "TOS" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Länge" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "Id" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "Ip Offset" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "TTL" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Protokoll" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Prüfsumme" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Quelladresse" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Zieladresse" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Reserviert" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Fenster" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "URP" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Typ" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "Seq #" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Maske" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "Gatewayadresse" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "Numadresse" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "Wpa" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Lifetime" #: prewikka/views/messagesummary/messagesummary.py:600 msgid "Otime" msgstr "OZeit" #: prewikka/views/messagesummary/messagesummary.py:601 msgid "Rtime" msgstr "RZeit" #: prewikka/views/messagesummary/messagesummary.py:602 msgid "Ttime" msgstr "TZeit" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Payload" #: prewikka/views/messagesummary/messagesummary.py:661 msgid "Alert details" msgstr "Alarm Detail" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Korrelations-Alarm" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Korrelierte Alarme" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Quell Analysator" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Tool-Alarme" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Bezogene Alarme" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Text" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "Ident" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "Ursprung" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Beendigung" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Benutzer Kategorie" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Nummer" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "Tty" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Rechte:" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Änderungszeit" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "Inode Nummer" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "Ziel-Datei %s" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "Kategorie" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Pfad" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Änderungsdatum" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Zugriffsdatum" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Datengröße" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Plattengröße" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Web Service" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "Url" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "Cgi" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Http Methode" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Cgi Argument" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "SNMP Dienst" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "oid" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "Sicherheitsmodell" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "Sicherheitsname" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "Sicherheitslevel" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "KontextName" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "Kommando" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Port" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "Portliste" #: prewikka/views/messagesummary/messagesummary.py:935 #, fuzzy msgid "ip_version" msgstr "Version" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Quelle(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Ziel(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Overflow Alarm" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Alarm" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "Netzwerkinformationen" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Heartbeat" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Zusammenfassung" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Heartbeat-Liste" #: prewikka/views/statistics/alertstats.py:35 msgid "Severities" msgstr "Heftigkeiten" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 #, fuzzy msgid "Top {limit} Source Addresses" msgstr "Quelladresse" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 #, fuzzy msgid "Top {limit} Targeted Addresses" msgstr "Zieladresse" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 #, fuzzy msgid "Top {limit} Classifications" msgstr "Klassifikation" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "" #: prewikka/views/statistics/alertstats.py:226 #, fuzzy msgid "Alert: Severity" msgstr "Heftigkeit" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 #, fuzzy msgid "Number of source addresses" msgstr "Quelladresse" #: prewikka/views/statistics/alertstats.py:321 #, fuzzy msgid "Number of target addresses" msgstr "Zieladresse" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:347 #, fuzzy msgid "Number of correlation alerts" msgstr "Korrelations-Alarm" #: prewikka/views/statistics/alertstats.py:354 #, fuzzy msgid "Number of machines/devices" msgstr "Quelladresse" #: prewikka/views/statistics/alertstats.py:361 #, fuzzy msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "Quelladresse" #: prewikka/views/statistics/alertstats.py:368 msgid "Categorizations" msgstr "Kategorien" #: prewikka/views/statistics/alertstats.py:369 msgid "Sources" msgstr "Quellen" #: prewikka/views/statistics/alertstats.py:370 msgid "Targets" msgstr "Ziele" #: prewikka/views/statistics/alertstats.py:371 msgid "Analyzers" msgstr "Analysatoren" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Metrologie" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Statistiken" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "Titel" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Statistiken" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "Invalid widget" msgstr "Ungültige Aussicht" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "The widget category does not exist" msgstr "Der Filter '%s' existiert nicht" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 #, fuzzy msgid "Delete this widget?" msgstr "Wählen Sie eine Aussicht" #: prewikka/views/usermanagement/__init__.py:14 #, fuzzy msgid "User and group management pages" msgstr "Korrelations-Alarm" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Zugangskontrolle" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Benutzer" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Gruppen" #: prewikka/views/usermanagement/usermanagement.py:94 #, fuzzy, python-format msgid "Edit user %s" msgstr "Filter" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Invalid user" msgstr "Ungültiger Benutzer" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "Der spezifierte Benutzer existiert nicht" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Ungültige Sprache" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "Die spezifierte Sprache existiert nicht" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "Ungültige Zeitzone" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "Die spezifierte Zeitzone existiert nicht" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 #, fuzzy msgid "Password error" msgstr "Passwort:" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 #, fuzzy msgid "Could not create user" msgstr "Wählen Sie einen Filter" #: prewikka/views/usermanagement/usermanagement.py:294 msgid "Username required" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Mein Konto" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "Ungültiger Benutzer" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "Der Benutzer '%s' existiert nicht" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 #, fuzzy msgid "Could not create group" msgstr "Gruppe erstellen" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Benutzer erstellen" #: prewikka/views/usermanagement/templates/userlisting.mak:7 msgid "Delete the selected users?" msgstr "Die ausgewählten Benutzer löschen?" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Gruppenname" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Gruppe erstellen" #: prewikka/views/usermanagement/templates/userlisting.mak:11 msgid "Delete the selected groups?" msgstr "Die ausgewählten Gruppen löschen?" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Kontoinformationen" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Login:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Gruppen:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Gruppeninformation" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Gruppenname:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Mitglieder:" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "info" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "Email:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "Email" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Sprache:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Thema:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Zeitzone:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Rechte:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Alles wählen" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Aktuelles Passwort:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Aktuelles Passwort" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Neues Passwort:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Neues Passwort" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Neues Passwort bestätigen:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Neues Passwort bestätigen" #: scripts/prewikka-cli:60 #, fuzzy msgid "Unknown command" msgstr "Kommando" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/en/0000755000000000000000000000000013726165110016751 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/en/LC_MESSAGES/0000755000000000000000000000000013726165110020536 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/en/LC_MESSAGES/prewikka.po0000644000000000000000000021473013726165107022730 0ustar rootroot00000000000000# English Translation for Prewikka # Copyright (C) 2012-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: FULL NAME \n" "Language-Team: English\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "" #: prewikka/crontab.py:38 msgid "Daily" msgstr "" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 msgid "Invalid job extension" msgstr "" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 msgid "Invalid CronJob" msgstr "" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 msgid "Invalid schedule" msgstr "" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "" #: prewikka/database.py:43 msgid "Database error" msgstr "" #: prewikka/database.py:50 msgid "Database schema error" msgstr "" #: prewikka/database.py:293 msgid "database installation required" msgstr "" #: prewikka/database.py:296 msgid "database activation required" msgstr "" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 msgid "Database configuration error" msgstr "" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "" #: prewikka/mainmenu.py:263 #, fuzzy msgid "Last week" msgstr "" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "" #: prewikka/mainmenu.py:265 #, fuzzy msgid "Last month" msgstr "" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 msgid "None" msgstr "" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 msgid "Menu error" msgstr "" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "" #: prewikka/view.py:95 msgid "Invalid method" msgstr "" #: prewikka/view.py:102 msgid "Invalid view" msgstr "" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 msgid "Could not parse input" msgstr "" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "" #: prewikka/dataprovider/idmef.py:170 msgid "Analyzer name" msgstr "" #: prewikka/dataprovider/idmef.py:173 msgid "Alert deletion" msgstr "" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:205 msgid "Heartbeat deletion" msgstr "" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "" #: prewikka/dataprovider/utils.py:50 msgid "Invalid operation" msgstr "" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 msgid "Invalid configuration" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 msgid "Missing configuration" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 msgid "Request error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 msgid "The specified Elasticsearch index does not exist" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 msgid "Dataprovider error" msgstr "" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 msgid "Lucene emulation error" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 msgid "Filters management page" msgstr "" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "" #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "" #: prewikka/session/anonymous/anonymous.py:31 msgid "Anonymous authentication" msgstr "" #: prewikka/session/loginform/__init__.py:35 msgid "Login/Password authentication" msgstr "" #: prewikka/session/loginform/templates/loginform.mak:17 msgid "User authentication" msgstr "" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "" #: prewikka/session/loginform/templates/loginform.mak:43 msgid "Log in" msgstr "" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "" #: prewikka/views/about/templates/about.mak:49 msgid "Corporate" msgstr "" #: prewikka/views/about/templates/about.mak:55 msgid "Community" msgstr "" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "USER MANAGEMENET" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 msgid "Apps: Authentication" msgstr "" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 msgid "Update failed" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 msgid "Update Dialog" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 msgid "Script" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "" #: prewikka/views/agents/__init__.py:12 msgid "Agents status information page" msgstr "" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "" #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "IDMEF VIEW" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "IDMEF ALTER" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 msgid "OS" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 msgid "Scheduled jobs management page" msgstr "" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 msgid "Alert listing page" msgstr "" #: prewikka/views/datasearch/alert.py:124 msgid "Aggregated alerts" msgstr "" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 msgid "Low severity" msgstr "" #: prewikka/views/datasearch/alert.py:228 msgid "Medium severity" msgstr "" #: prewikka/views/datasearch/alert.py:229 msgid "High severity" msgstr "" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "" #: prewikka/views/datasearch/datasearch.py:189 msgid "Time group error" msgstr "" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "" #: prewikka/views/datasearch/heartbeat.py:48 msgid "Heartbeat listing page" msgstr "" #: prewikka/views/datasearch/heartbeat.py:53 msgid "Aggregated heartbeats" msgstr "" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "" #: prewikka/views/datasearch/idmef.py:46 msgid "See IDMEF details" msgstr "" #: prewikka/views/datasearch/log.py:44 msgid "Log listing page" msgstr "" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "" #: prewikka/views/datasearch/log.py:116 msgid "Syslog export" msgstr "" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 msgid "Count" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:79 msgid "Chart type" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 msgid "Time values" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 msgid "Timeline" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "" #: prewikka/views/datasearch/templates/infos.mak:9 msgid "Occurrence" msgstr "" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 msgid "Aggregates" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "Analyzer ID" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:600 msgid "Otime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:601 msgid "Rtime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:602 msgid "Ttime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:661 msgid "Alert details" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:935 msgid "ip_version" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 msgid "Statistics pages" msgstr "" #: prewikka/views/statistics/alertstats.py:35 msgid "Severities" msgstr "" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 msgid "Top {limit} Source Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 msgid "Top {limit} Classifications" msgstr "" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "" #: prewikka/views/statistics/alertstats.py:226 msgid "Alert: Severity" msgstr "" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 msgid "Number of source addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:321 msgid "Number of target addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:347 msgid "Number of correlation alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:354 msgid "Number of machines/devices" msgstr "" #: prewikka/views/statistics/alertstats.py:361 msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "" #: prewikka/views/statistics/alertstats.py:368 msgid "Categorizations" msgstr "" #: prewikka/views/statistics/alertstats.py:369 msgid "Sources" msgstr "" #: prewikka/views/statistics/alertstats.py:370 msgid "Targets" msgstr "" #: prewikka/views/statistics/alertstats.py:371 #, fuzzy msgid "Analyzers" msgstr "Analyzer ID" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "" #: prewikka/views/statistics/statistics.py:131 msgid "Statistics error" msgstr "" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 msgid "Invalid widget" msgstr "" #: prewikka/views/statistics/statistics.py:180 msgid "The widget category does not exist" msgstr "" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 msgid "Delete this widget?" msgstr "" #: prewikka/views/usermanagement/__init__.py:14 msgid "User and group management pages" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:94 #, python-format msgid "Edit user %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Invalid user" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Password error" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 msgid "Could not create user" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 msgid "Username required" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 msgid "Could not create group" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:7 msgid "Delete the selected users?" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:11 msgid "Delete the selected groups?" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "" #: scripts/prewikka-cli:60 msgid "Unknown command" msgstr "" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/es/0000755000000000000000000000000013726165110016756 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/es/LC_MESSAGES/0000755000000000000000000000000013726165110020543 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/es/LC_MESSAGES/prewikka.po0000644000000000000000000022712513726165107022737 0ustar rootroot00000000000000# Spanish translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # Carlo G. Añez M. , 2007. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Carlo Anez \n" "Language-Team: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Permiso Denegado" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 #, fuzzy msgid "Configuration error" msgstr "Alerta de correlación" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Cada hora" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Diario" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Semanal" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Mensual" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Anual" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Personalizado" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Desactivado" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 msgid "Invalid job extension" msgstr "" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Zona horaria no válida" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 #, fuzzy msgid "Invalid schedule" msgstr "Idioma:" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Personalizado (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "" #: prewikka/database.py:50 msgid "Database schema error" msgstr "" #: prewikka/database.py:293 msgid "database installation required" msgstr "" #: prewikka/database.py:296 msgid "database activation required" msgstr "" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 #, fuzzy msgid "Database configuration error" msgstr "Alerta de correlación" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m/%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d/%m/%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d/%m/%Y %Hh" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d/%m/%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d/%m/%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Hoy" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Ayer" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Esta semana" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "La semana pasada" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Este mes" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "El mes pasado" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d semana" msgstr[1] "%d semanas" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mes" msgstr[1] "%d meses" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d año" msgstr[1] "%d años" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Inactivo" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 #, fuzzy msgid "None" msgstr "Telefono:" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 #, fuzzy msgid "Menu error" msgstr "Alerta de correlación" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "El acceso a la vista '%(view)s' esta prohibida: %(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "La normalización de los parámetros falló" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "" #: prewikka/view.py:95 #, fuzzy msgid "Invalid method" msgstr "Zona horaria no valido" #: prewikka/view.py:102 #, fuzzy msgid "Invalid view" msgstr "Idioma:" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Autenticación fallida" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Igual" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Igual (insensible)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Diferente" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Diferente (insensible)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Expresión regular" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Expresión regular (insensible)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "No expresión regular" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "No expresión regular (insensible)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Menor que" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Menor o igual" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Mayor que" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Mayor o igual" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Subcadena" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Subcadena (insensible)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "No subcadena" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "No subcadena (insensible)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "Error de conversión" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "Error de backend" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "Error de sintaxis" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "Camino desconocido: %s" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 msgid "Could not parse input" msgstr "" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Alta" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Mediana" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Baja" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Informativa" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Alertas" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Clasificación" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "IP de origen" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Puerto de origen" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "IP de destino" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Puerto de destino" #: prewikka/dataprovider/idmef.py:170 msgid "Analyzer name" msgstr "Nombre del analizador" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Lista de alertas" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Pulsos" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Lista de pulsos" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Registros" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "Mensaje" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Host" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Programa" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "Marca de tiempo" #: prewikka/dataprovider/utils.py:50 #, fuzzy msgid "Invalid operation" msgstr "Lista de alertas" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 #, fuzzy msgid "Invalid configuration" msgstr "Configuración" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 #, fuzzy msgid "Missing configuration" msgstr "Configuración" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 #, fuzzy msgid "Request error" msgstr "Alerta de correlación" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 msgid "The specified Elasticsearch index does not exist" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 #, fuzzy msgid "Dataprovider error" msgstr "Error de renderizador" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 #, fuzzy msgid "Lucene emulation error" msgstr "Alerta de correlación" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 #, fuzzy msgid "Filters management page" msgstr "Filtrar por agente" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Preferencias" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filtros" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filtro %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "Error de filtro" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Nuevo filtro" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Nombre:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Nombre del filtro" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Categoría:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Descripción:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Cancelar" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Guardar" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Nombre" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Categoría" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Descripción" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Crear" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Duplicar" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Borrar" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filtro:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Filtros disponibles" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Sin filtro" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Sin categoría" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "" #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "Todos los caminos" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "Cambiar el operador" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "valor" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "Borrar condición" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "Y" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "O" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "Añadir condición" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "Añadir grupo" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "Borrar grupo" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "OK" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "Error de renderizador" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Sesión expirada" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Desconectado" #: prewikka/session/anonymous/anonymous.py:31 #, fuzzy msgid "Anonymous authentication" msgstr "Autenticación fallida" #: prewikka/session/loginform/__init__.py:35 #, fuzzy msgid "Login/Password authentication" msgstr "Autenticación fallida" #: prewikka/session/loginform/templates/loginform.mak:17 #, fuzzy msgid "User authentication" msgstr "Autenticación fallida" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Usuario" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Contraseña" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Usuario" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "Opciones de vista" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "Ayuda de vista" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "nombre" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "Información" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Desconectarse" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Detalle" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "Error: {0}" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Refrescar:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "Frecuencia de actualización de la página actual" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Período:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Período para visualizar" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Comienzo:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "comienzo" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Fecha de inicio" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Fin:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "fin" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Fecha final" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "Error de conexión" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Desconectado" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Desconocido" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Desaparecido" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Conectado" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Contacto" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Telefono:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Fax:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Puerto de origen" #: prewikka/views/about/templates/about.mak:55 msgid "Community" msgstr "" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Cerrar" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 #, fuzzy msgid "Apps: Authentication" msgstr "Autenticación fallida" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Apps" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "ERROR" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 #, fuzzy msgid "Update failed" msgstr "fallido" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 #, fuzzy msgid "Update Dialog" msgstr "fallido" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 #, fuzzy msgid "Script" msgstr "Descripción" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "Resultado" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Versión" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "Versión actual de la base de datos" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Apps instaladas" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Versión de la base de datos" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Activo" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Actualizar" #: prewikka/views/agents/__init__.py:12 #, fuzzy msgid "Agents status information page" msgstr "Información de la dirección" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agentes" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Nombre del nodo n/a" #: prewikka/views/agents/agents.py:111 #, fuzzy msgid "OS version n/a" msgstr "Sesión invalida" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Lugar del nodo n/a" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Lista de alertas" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "Lista de pulsos" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Análisis de pulsos" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Supervisión" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "Buscar:" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Localización" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Nodo" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Modelo" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Categoría" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Hora de último pulso" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Estado" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 #, fuzzy msgid "OS" msgstr "SO" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Nombre del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Lugar del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Dirección del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "Estado actual" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Eventos" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Filtrar por agente" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Configuración" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "Programación" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "SISTEMA" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "Pendiente" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Error" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "Programa:" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "personalizado" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "desactivado" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Minuto:" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Hora:" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "Día:" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Mes:" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "Día de la semana:" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "Tareas programadas" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "Programa" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Usuario" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "Última ejecución" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "Próxima ejecución" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "Desactivar" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "Activar" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Lista de alertas" #: prewikka/views/datasearch/alert.py:124 msgid "Aggregated alerts" msgstr "Alertas agregadas" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Severidad" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Fecha" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Origen" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Destino" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analizador" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 #, fuzzy msgid "Low severity" msgstr "Severidad" #: prewikka/views/datasearch/alert.py:228 #, fuzzy msgid "Medium severity" msgstr "Severidad" #: prewikka/views/datasearch/alert.py:229 #, fuzzy msgid "High severity" msgstr "Severidad" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "minuto" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "hora" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "día" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "mes" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "año" #: prewikka/views/datasearch/datasearch.py:189 #, fuzzy msgid "Time group error" msgstr "Alerta de correlación" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "Salpicadero" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "General" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Lista de pulsos" #: prewikka/views/datasearch/heartbeat.py:53 #, fuzzy msgid "Aggregated heartbeats" msgstr "Hora de último pulso" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agente" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "" #: prewikka/views/datasearch/idmef.py:46 #, fuzzy msgid "See IDMEF details" msgstr "Alertas" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Lista de alertas" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Registro" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Contexto" #: prewikka/views/datasearch/log.py:116 #, fuzzy msgid "Syslog export" msgstr "Completado:" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Agrupar por %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "Añadir a la búsqueda" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "Excluir de la búsqueda" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "Campos" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 #, fuzzy msgid "Count" msgstr "Mi cuenta" #: prewikka/views/datasearch/templates/forensic.mak:79 #, fuzzy msgid "Chart type" msgstr "Fecha de inicio" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Límite" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "Buscar" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "Reiniciar búsqueda" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Agrupar por" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 #, fuzzy msgid "Time values" msgstr "valor" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 #, fuzzy msgid "Timeline" msgstr "Hora" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "Nueva búsqueda" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Acciones" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informationes" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "Campo" #: prewikka/views/datasearch/templates/infos.mak:9 #, fuzzy msgid "Occurrence" msgstr "Origen" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Ayuda" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "Alertas de correlación" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(hora local del sensor: %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Tiempo de creación" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Tiempo de detección" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Tiempo del analizador" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Nombre del nodo (resuelto)" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Fabricante" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Sistema operativo" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Sentido" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Valor" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:545 #, fuzzy msgid "TOS" msgstr "SO" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Dirección de origen" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Dirección de destino" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:575 #, fuzzy msgid "Window" msgstr "informacion" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Tipo" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:596 #, fuzzy msgid "Gateway Address" msgstr "Dirección del nodo" #: prewikka/views/messagesummary/messagesummary.py:597 #, fuzzy msgid "Num address" msgstr "Dirección del nodo" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:600 #, fuzzy msgid "Otime" msgstr "Hora" #: prewikka/views/messagesummary/messagesummary.py:601 #, fuzzy msgid "Rtime" msgstr "Hora" #: prewikka/views/messagesummary/messagesummary.py:602 #, fuzzy msgid "Ttime" msgstr "Hora" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:661 #, fuzzy msgid "Alert details" msgstr "Alertas" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Alerta de correlación" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Alertas de correlación" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Alerta de herramienta" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Texto" #: prewikka/views/messagesummary/messagesummary.py:723 #, fuzzy msgid "Ident" msgstr "Agente:" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Terminación" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Número" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Permiso" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:835 #, fuzzy msgid "Inode Number" msgstr "Nombre del nodo" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 #, fuzzy, python-format msgid "Target file %s" msgstr "Destino" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "categoría" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Camino" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:896 #, fuzzy msgid "contextName" msgstr "Nombre del nodo" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:935 #, fuzzy msgid "ip_version" msgstr "Permisos:" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Origen(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Destino(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Alerta de desborde" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Alerta" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 #, fuzzy msgid "Network centric information" msgstr "Información sobre cuentas" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Pulso" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Resumen" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Lista de pulsos" #: prewikka/views/statistics/alertstats.py:35 #, fuzzy msgid "Severities" msgstr "Severidad" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 #, fuzzy msgid "Top {limit} Source Addresses" msgstr "Dirección de origen" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 #, fuzzy msgid "Top {limit} Classifications" msgstr "Clasificación" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "" #: prewikka/views/statistics/alertstats.py:226 #, fuzzy msgid "Alert: Severity" msgstr "Severidad" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 #, fuzzy msgid "Number of source addresses" msgstr "Dirección de origen" #: prewikka/views/statistics/alertstats.py:321 #, fuzzy msgid "Number of target addresses" msgstr "Dirección de destino" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:347 #, fuzzy msgid "Number of correlation alerts" msgstr "Alerta de correlación" #: prewikka/views/statistics/alertstats.py:354 msgid "Number of machines/devices" msgstr "" #: prewikka/views/statistics/alertstats.py:361 msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "" #: prewikka/views/statistics/alertstats.py:368 #, fuzzy msgid "Categorizations" msgstr "categoría" #: prewikka/views/statistics/alertstats.py:369 #, fuzzy msgid "Sources" msgstr "Origen" #: prewikka/views/statistics/alertstats.py:370 #, fuzzy msgid "Targets" msgstr "Destino" #: prewikka/views/statistics/alertstats.py:371 #, fuzzy msgid "Analyzers" msgstr "Analizador" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Metrología" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Estadísticas" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "título" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Estadísticas" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "Invalid widget" msgstr "Idioma:" #: prewikka/views/statistics/statistics.py:180 msgid "The widget category does not exist" msgstr "" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 #, fuzzy msgid "Delete this widget?" msgstr "Borrar usuario" #: prewikka/views/usermanagement/__init__.py:14 #, fuzzy msgid "User and group management pages" msgstr "Alerta de correlación" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Control de acceso" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Usuarios" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Grupos" #: prewikka/views/usermanagement/usermanagement.py:94 #, fuzzy, python-format msgid "Edit user %s" msgstr "Filtros" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 #, fuzzy msgid "Invalid user" msgstr "Idioma:" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Idioma no válido" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "Zona horaria no válida" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 #, fuzzy msgid "Password error" msgstr "Nueva contraseña:" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 #, fuzzy msgid "Could not create user" msgstr "Crear usuario" #: prewikka/views/usermanagement/usermanagement.py:294 msgid "Username required" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Mi cuenta" #: prewikka/views/usermanagement/usermanagement.py:324 #, fuzzy msgid "Invalid User" msgstr "Idioma:" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 #, fuzzy msgid "Could not create group" msgstr "Crear grupo" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Crear usuario" #: prewikka/views/usermanagement/templates/userlisting.mak:7 #, fuzzy msgid "Delete the selected users?" msgstr "Borrar usuario" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Nombre del grupo" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Crear grupo" #: prewikka/views/usermanagement/templates/userlisting.mak:11 #, fuzzy msgid "Delete the selected groups?" msgstr "Borrar usuario" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Información de la cuenta" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Ingreso:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Grupos:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Información del grupo" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Nombre del grupo:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Miembros:" #: prewikka/views/usermanagement/templates/usersettings.mak:63 #, fuzzy msgid "info" msgstr "informacion" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "E-mail:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "E-mail" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Idioma:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Tema:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Zona horaria:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Permisos:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Seleccionar todos" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Contraseña actual:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Contraseña actual" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Nueva contraseña:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Nueva contraseña" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Confirmar nueva contraseña:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Confirmar nueva contraseña" #: scripts/prewikka-cli:60 msgid "Unknown command" msgstr "" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/fr/0000755000000000000000000000000013726165110016756 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/fr/LC_MESSAGES/0000755000000000000000000000000013726165110020543 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/fr/LC_MESSAGES/prewikka.po0000644000000000000000000026130413726165107022734 0ustar rootroot00000000000000# French Translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # sebastien.tricaud@wengo.com, 2007. msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Girard \n" "Language-Team: French\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Accès refusé" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "Permission manquante pour accéder au fichier spécifié" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "Erreur de configuration" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "Erreur de parsing dans \"%(txt)s\" à la ligne %(line)d de %(file)s" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "Valeur invalide '%(value)s' pour le paramètre '%(name)s'" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "Valeur manquante pour le paramètre '%(name)s'" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Toutes les heures" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Quotidien" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Hebdomadaire" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Mensuel" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Annuel" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Personnalisé" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Désactivé" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "Échec de l'exécution de la tâche planifiée" #: prewikka/crontab.py:146 msgid "Invalid job extension" msgstr "Extension de tâche invalide" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "Tâche planifiée avec type d'extension invalide '%s'" #: prewikka/crontab.py:216 msgid "Invalid CronJob" msgstr "Tâche planifiée invalide" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "Tâche planifiée avec id=%d introuvable dans la base" #: prewikka/crontab.py:267 msgid "Invalid schedule" msgstr "Planification invalide" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "La planification spécifiée pour la tâche est invalide" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Personnalisé (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "Erreur de base de données" #: prewikka/database.py:50 msgid "Database schema error" msgstr "Erreur de schéma de base de données" #: prewikka/database.py:293 msgid "database installation required" msgstr "installation de base de données nécessaire" #: prewikka/database.py:296 msgid "database activation required" msgstr "activation de base de données nécessaire" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" "branche %(required)s du schéma de base de données nécessaire (%(current)s" " trouvée)" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" "version %(required)s du schéma de base de données nécessaire (%(current)s" " trouvée)" #: prewikka/database.py:372 msgid "Database installation error" msgstr "Erreur d'installation de base de données" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" "Aucun script d'installation de base de données trouvé pour le module " "%(module)s, version %(version)s" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "Erreur de migration de base de données" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" "Aucun script de migration de base de données trouvé pour le module " "%(module)s, transition de branche %(current)s -> %(required)s" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" "Aucun script de migration linéaire trouvé pour le module %(module)s " "%(version1)s -> %(version2)s" #: prewikka/database.py:841 msgid "Database configuration error" msgstr "Erreur de configuration de base de données" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" "Seules les bases de données MySQL et PostgreSQL sont supportées " "actuellement" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "Une erreur inattendue s'est produite" #: prewikka/error.py:148 msgid "Not implemented" msgstr "Non implémenté" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "Le backend n'implémente pas cette opération" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "Suppression de l'historique de recherche" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m/%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d/%m/%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d/%m/%Y %Hh" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d/%m/%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d/%m/%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "n/a" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "%(days)dj %(hours)dh %(minutes)d'" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "Erreur d'initialisation" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "Erreur de version requise" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "Prewikka %(vPre)s requiert libprelude %(vLib)s ou supérieure" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "Prewikka %(vPre)s requiert libpreludedb %(vLib)s ou supérieure" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" "Impossible d'utiliser le mode '%(name)s' de type '%(type)s', veuillez " "contacter votre administrateur local." #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "La session '%s' n'accepte pas de module d'authentification" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "Une erreur inattendue s'est produite au chargement de %s" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "%S.%.6f" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "%S.%.3f" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Aujourd'hui" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Hier" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Cette semaine" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "La semaine dernière" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Ce mois" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "Le mois dernier" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d semaine" msgstr[1] "%d semaines" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d mois" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ans" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Inactif" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 msgid "None" msgstr "Aucun" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 msgid "Menu error" msgstr "Erreur du menu" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "Le menu YAML fourni est invalide" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "Menu vide" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "Menu non nommé dans %s" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "Plusieurs menus par défaut" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "Plusieurs vues par défaut" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "Dépendances circulaires détectées : %s" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "Dépendance manquante : %s" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" "Résolution DNS asynchrone désactivée : twisted.names et twisted.internet " "requis : %s" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "Accès à la vue '%(view)s' interdit. Permissions requises : %(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "Accès à la vue '%s' interdit" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "Permissions requises : %s" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "Échec de normalisation des paramètres" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "Le paramètre '%s' est invalide" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "Le paramètre requis '%s' est manquant" #: prewikka/view.py:95 msgid "Invalid method" msgstr "Méthode invalide" #: prewikka/view.py:102 msgid "Invalid view" msgstr "Vue invalide" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "La méthode '%(method)s' n'est pas autorisée pour la vue '%(view)s'" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "La vue '%s' n'existe pas" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Échec de l'authentification" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "Authentification via la base de données locale d'utilisateurs/groupes" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "Erreur d'initialisation DBAuth" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "Identifiant non renseigné" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Égal" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Égal (insensible à la casse)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Différent" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Non égal (insensible à la casse)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Expression régulière" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Expression régulière (insensible à la casse)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "Non expression régulière" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "Non expression régulière (insensible à la casse)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Plus petit que" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Plus petit ou égal" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Plus grand que" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Plus grand ou égal" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Sous-chaîne" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Sous-chaîne (insensible à la casse)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "Non sous-chaîne" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "Non sous-chaîne (insensible à la casse)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "Erreur de conversion" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "La valeur %(value)r ne peut pas être convertie en %(type)s" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "Erreur de backend" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "Aucun gestionnaire disponible pour le type de données '%s'" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "Erreur de syntaxe" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "Chemin inconnu : %s" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 msgid "Could not parse input" msgstr "Impossible d'interpréter la saisie" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "Aucun gestionnaire configuré pour le type de données '%s'" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "Seulement un manager doit être configuré pour le backend '%s'" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Haute" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Moyenne" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Basse" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Informationnel" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "Fournit une API pour accéder aux alertes IDMEF" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Alertes" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Classification" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "IP source" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Port source" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "IP cible" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Port cible" #: prewikka/dataprovider/idmef.py:170 msgid "Analyzer name" msgstr "Nom de l'analyseur" #: prewikka/dataprovider/idmef.py:173 msgid "Alert deletion" msgstr "Suppression des alertes" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "Fournit une API pour accéder aux pulsations IDMEF" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Pulsations" #: prewikka/dataprovider/idmef.py:205 msgid "Heartbeat deletion" msgstr "Suppression des pulsations" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "Fournit une API pour accéder aux journaux" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Journaux" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "Message" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Hôte" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Programme" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "Horodatage" #: prewikka/dataprovider/utils.py:50 msgid "Invalid operation" msgstr "Opération invalide" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "L'extraction n'est supportée que pour les champs date" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 msgid "Invalid configuration" msgstr "Configuration invalide" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "L'instance Elasticsearch doit être nommée" #: prewikka/dataprovider/helpers/elasticsearch.py:96 msgid "Missing configuration" msgstr "Configuration manquante" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" "Impossible de trouver une configuration valide pour le type %s " "Elasticsearch." #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "Elasticsearch version %s n'est pas supporté." #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 msgid "Request error" msgstr "Erreur de requête" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" "Impossible de naviguer au-delà de ces résultats. Veuillez utiliser un " "filtre plus spécifique." #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "Erreur de requête avec code HTTP %d." #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "Requête mal formée." #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "Erreur de requête avec code HTTP %d. Raison : %s" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "Erreur de requête avec code HTTP %d. Raison inconnue" #: prewikka/dataprovider/helpers/elasticsearch.py:232 msgid "The specified Elasticsearch index does not exist" msgstr "L'index Elasticsearch spécifié n'existe pas" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "Erreur d'opérateur de la base Elasticsearch" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" "L'opérateur '%s' que vous tentez d'utiliser n'est pas supporté par " "Prelude pour le champ '%s'." #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "Seul un champ _raw_query peut être spécifié pour la sélection" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "Erreur de sélection de chemin de la base Elasticsearch" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" "Dans votre instance Elasticsearch, la correspondance des champs est mal " "configurée." #: prewikka/dataprovider/helpers/sql.py:174 msgid "Dataprovider error" msgstr "Erreur de collecte de données" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "Impossible de trouver les bornes temporelles dans la requête CTE" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 msgid "Lucene emulation error" msgstr "Erreur d'émulation Lucene" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" "Cette expression Lucene ne peut pas être émulée correctement par le " "backend Criterion" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "Plugin pour accéder aux alertes IDMEF de la base de données Prelude" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "Plugin pour accéder aux pulsations IDMEF de la base de données Prelude" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "Plugin pour accéder aux journaux stockés dans Elasticsearch" #: prewikka/plugins/filter/__init__.py:14 msgid "Filters management page" msgstr "Page de gestion des filtres" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Préférences" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filtres" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filtre %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "Erreur de filtre" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "Le filtre '%s' n'existe pas" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "Impossible de sauvegarder le filtre" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "Nom du filtre non renseigné" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "Le nom du filtre ne peut pas commencer par un slash" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "Le nom du filtre est déjà utilisé par un autre filtre" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Nouveau filtre" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Nom :" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Nom du filtre" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Catégorie :" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Description :" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Annuler" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Enregistrer" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Nom" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Catégorie" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Description" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Créer" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Dupliquer" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "Supprimer les filtres sélectionnés ?" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Effacer" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filtre :" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Filtres disponibles" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Pas de filtre" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Pas de catégorie" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "Sélectionner un chemin..." #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "Chemins par défaut" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "Tous les chemins" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "Modifier l'opérateur" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "valeur" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "Supprimer la condition" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "ET" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "OU" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "Ajouter une condition" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "Ajouter un groupe" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "Supprimer le groupe" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "Message d'avertissement de Prelude" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "AVERTISSEMENT" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "Prelude OSS est la version open-source de Prelude SIEM" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" "Cette version OSS possède des performances moindres et moins de fonctionnalités que la version " "commerciale." #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" "Elle est destinée aux tests et aux petits environnements et ne doit pas " "être utilisée dans des environnements critiques." #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "Prelude OSS est distribué sous la %s." #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" "Tout produit dérivé de modules Prelude OSS est donc soumis aux termes de " "la GPLv2." #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "OK" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "Aucune donnée à afficher." #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "Erreur de rendu" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "Aucun backend ne supporte le type de rendu '%s'" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "Aucun backend nommé '%s'" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "Le backend '%(backend)s' ne supporte pas le type de rendu '%(type)s'" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "Backend de rendu ChartJS" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "Type de rendu ChartJS/Histogramme" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "Type de rendu ChartJS/Camembert" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "Type de rendu ChartJS/Anneau" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "Type de rendu ChartJS/Chronologie" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "Type de rendu ChartJS/Chronologie (barres)" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Session invalide" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "Le cookie de session de votre navigateur est invalide" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Session expirée" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" "Votre session a expiré : veuillez vous réauthentifier pour continuer " "d'utiliser Prelude" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Session terminée" #: prewikka/session/anonymous/anonymous.py:31 msgid "Anonymous authentication" msgstr "Authentification anonyme" #: prewikka/session/loginform/__init__.py:35 msgid "Login/Password authentication" msgstr "Authentification login/mot de passe" #: prewikka/session/loginform/templates/loginform.mak:17 msgid "User authentication" msgstr "Authentification utilisateur" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Identifiant" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Mot de passe" #: prewikka/session/loginform/templates/loginform.mak:43 msgid "Log in" msgstr "S'authentifier" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "Options de la vue" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "Aide de la vue" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "Cette app a été désactivée ou est impossible à charger" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "nom" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "À propos" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "Êtes-vous sûr de vouloir vous déconnecter ?" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Déconnexion" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Détail" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "Copier dans le presse papier" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "Erreur : {0}" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "Cela pourrait être dû à une ou plusieurs des raisons suivantes :" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "Vous n'avez pas les permissions requises." #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" "Les apps nécessaires sont désactivées. Voir la page %s pour plus de " "détails." #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "S'authentifier" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "Retour" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "Réessayer" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "Page principale" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Rafraîchir :" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "Fréquence de rafraîchissement de la page" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Période :" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Période à visualiser" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Début :" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "début" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Date de début" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Fin :" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "fin" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Date de fin" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "Veuillez confirmer" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "Dialogue Prelude" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "Erreur de connexion" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" "Connexion échouée, il peut s'agir d'un problème côté serveur ou de " "problèmes réseau." #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Déconnecté" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Inconnu" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Manquant" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Connecté" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "Page d'à propos de Prelude" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "Prelude SIEM version %s" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" "Prelude SIEM est un système de \"Security Information and Event " "Management\"" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" "{prelude} est une solution de supervision de sécurité qui collecte, " "filtre, normalise, corrèle, stocke et archive les informations issues de " "sources disparates sur votre système d'information. À partir de " "l'ensemble de ces données Prelude SIEM peut fournir une vision globale du" " niveau de sécurité de votre système et ainsi prévenir les attaques, " "intrusions et autres infections virales." #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "Vigilo NMS est un \"Network Management System\"" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" "{vigilo} est une solution complète de supervision de performances capable" " de gérer des systèmes de moyenne et grande envergure (réseau - serveurs " "- applications) grâce à une architecture répartie et modulaire. Vigilo " "NMS offre toutes les fonctions nécessaires à la supervision de " "performances : la gestion des états et des alarmes, la métrologie, la " "cartographie, la corrélation d'événements et le reporting." #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" "Prelude SIEM et Vigilo NMS sont développés par la société %s, concepteur," " intégrateur et opérateur de systèmes critiques." #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Contact" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Téléphone :" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Fax :" #: prewikka/views/about/templates/about.mak:49 msgid "Corporate" msgstr "Corporate" #: prewikka/views/about/templates/about.mak:55 msgid "Community" msgstr "Communauté" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Fermer" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "Page de gestion des plugins" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "USER MANAGEMENT" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "Apps : API" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "Apps : Vues" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "Apps : Moteur de collecte de données" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "Apps : Type de collecte de données" #: prewikka/views/aboutplugin/__init__.py:47 msgid "Apps: Authentication" msgstr "Apps : Authentification" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "Apps : Identification" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "Apps : Moteur de rendu" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "Apps : Type de rendu" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "list plugin : lister les plugins installés" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Apps" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "sync plugin : initialiser les schémas de base de données des plugins" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "Application de %(module)s %(script)s..." #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "Toutes les mises à jour appliquées" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "ERREUR" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 msgid "Update failed" msgstr "Mise à jour échouée" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 msgid "Update Dialog" msgstr "Dialogue de mise à jour" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "Plugin" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 msgid "Script" msgstr "Script" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "Résultat" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "Maintenance des modules" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" "Les apps suivantes doivent être mises à jour avant d'être chargées dans " "le système" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Version" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "Version actuelle de base de données" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "Mise à jour de base de données nécessaire" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "Installer mise à jour" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Apps installées" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Version de base de données" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Actif" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "Mettre à jour les apps sélectionnées ?" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Mettre à jour" #: prewikka/views/agents/__init__.py:12 msgid "Agents status information page" msgstr "Page d'information sur l'état des agents" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agents" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Nom du nœud inconnu" #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "Version système inconnu" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Type du système inconnu" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Emplacement inconnu" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Liste des alertes" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "Liste des pulsations" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Analyse des pulsations" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "IDMEF VIEW" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Supervision" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "IDMEF ALTER" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "Démarrage normal de la sonde" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "Redémarrage inopiné de la sonde" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "Intervalle de pulsation inopiné : %(delta)s" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "Arrêt normal de la sonde" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "Sonde déconnectée depuis %s" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" "Pas d'anomalie au cours des %(count)d dernières pulsations (une pulsation" " toutes les %(delta)s en moyenne)" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "Afficher/Cacher tout" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "Recherche :" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Emplacement" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Nœud" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Modèle" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Classe" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Dernière pulsation" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "État" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "Supprimer les alertes des agents sélectionnés ?" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "Supprimer les pulsations des agents sélectionnés ?" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "Supprimer les messages IDMEF sélectionnés ?" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 msgid "OS" msgstr "OS" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Nom du nœud" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Emplacement du nœud" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Adresse du nœud" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "État actuel" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Événements" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "Gestion de la planification" #: prewikka/views/crontab/__init__.py:35 msgid "Scheduled jobs management page" msgstr "Page de gestion des tâches planifiées" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Configuration" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "Planification" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "SYSTÈME" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "En attente" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Erreur" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "Planification :" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "personnalisé" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "désactivé" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Minute :" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Heure :" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "Jour :" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Mois :" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "Jour de la semaine :" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "Éditer la tâche" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "Tâches planifiées" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "Planification" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Utilisateur" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "Dernière exécution" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "Prochaine exécution" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "Désactiver" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "Activer" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "Intégration de sites web externes" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "Impossible de charger les onglets" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "Une URL doit être définie pour chaque onglet" #: prewikka/views/datasearch/alert.py:119 msgid "Alert listing page" msgstr "Page des alertes" #: prewikka/views/datasearch/alert.py:124 msgid "Aggregated alerts" msgstr "Alertes agrégées" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Gravité" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Date" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Source" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Cible" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analyseur" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "Supprimer les alertes sélectionnées ?" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "Gravité minimale" #: prewikka/views/datasearch/alert.py:227 msgid "Low severity" msgstr "Gravité faible" #: prewikka/views/datasearch/alert.py:228 msgid "Medium severity" msgstr "Gravité moyenne" #: prewikka/views/datasearch/alert.py:229 msgid "High severity" msgstr "Gravité haute" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "minute" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "heure" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "jour" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "mois" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "année" #: prewikka/views/datasearch/datasearch.py:189 msgid "Time group error" msgstr "Erreur de groupe temporel" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" "Seule une unité temporelle peut être spécifiée dans une requête " "d'agrégation" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "Forensic" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "Tableau de bord" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "Export CSV" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "Général" #: prewikka/views/datasearch/heartbeat.py:48 msgid "Heartbeat listing page" msgstr "Page des pulsations" #: prewikka/views/datasearch/heartbeat.py:53 msgid "Aggregated heartbeats" msgstr "Pulsations agrégées" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agent" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "Supprimer les pulsations sélectionnées ?" #: prewikka/views/datasearch/idmef.py:46 msgid "See IDMEF details" msgstr "Voir les détails IDMEF" #: prewikka/views/datasearch/log.py:44 msgid "Log listing page" msgstr "Page des journaux" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "LOG VIEW" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "Journaux agrégés" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "Chercher dans les journaux" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "Voir les journaux" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Journal" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "Archive" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Contexte" #: prewikka/views/datasearch/log.py:116 msgid "Syslog export" msgstr "Export syslog" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Grouper par %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "Ajouter à la recherche" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "Exclure de la recherche" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "Champs" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "Historique des requêtes" #: prewikka/views/datasearch/templates/forensic.mak:34 msgid "Count" msgstr "Total" #: prewikka/views/datasearch/templates/forensic.mak:79 msgid "Chart type" msgstr "Type de graphe" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Limite" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "Mode action" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "Mode condensé" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "Mode expert" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "Mode de recherche" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "Rechercher" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "Réinitialiser la recherche" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Grouper par" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "Sélectionner votre champ" #: prewikka/views/datasearch/templates/forensic.mak:151 msgid "Time values" msgstr "Valeurs temporelles" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "Champs %s" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 msgid "Timeline" msgstr "Chronologie" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "Nouvelle recherche" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Actions" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informations" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "Champ" #: prewikka/views/datasearch/templates/infos.mak:9 msgid "Occurrence" msgstr "Occurrence" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "Navigateur IDMEF" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Aide" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "Enfants" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 msgid "Aggregates" msgstr "Agrégats" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "Attributs" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "Rang" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "Mot-clé" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "Page détaillée d'alerte et pulsation" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Code" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Taille des données" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Données" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(heure locale de la sonde : %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Heure de création" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Heure de détection" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Heure de l'analyseur" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Processus" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Chemin du processus" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "ID du processus" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Nom du nœud (résolu)" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "ID de l'analyseur" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Fabricant" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Système d'Exploitation" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Chemin vers l'analyseur (%d non visibles)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Analyseur #%d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Données Additionnelles" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Signification" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Valeur" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Taille de l'en-tête" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "TOS" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Taille" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "Id" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "Décalage ip" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "TTL" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Protocole" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Somme de contrôle" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Adresse source" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Adresse cible" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Réservé" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Fenêtre" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "URP" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Type" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "Seq #" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Masque" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "Adresse de la Passerelle" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "Adresse" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "Wpa" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Durée de vie" #: prewikka/views/messagesummary/messagesummary.py:600 msgid "Otime" msgstr "OTemps" #: prewikka/views/messagesummary/messagesummary.py:601 msgid "Rtime" msgstr "Temps" #: prewikka/views/messagesummary/messagesummary.py:602 msgid "Ttime" msgstr "Temps" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Charge utile" #: prewikka/views/messagesummary/messagesummary.py:661 msgid "Alert details" msgstr "Détails de l'alerte" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "%d alertes liées manquantes (probablement effacées)" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "%d alertes liées omises" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Alerte de Corrélation" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Alertes corrélées" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Analyseur Source" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Alerte d'Outil" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Alertes liées" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Texte" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "Identité" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "Origine" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Accomplissement" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Catégorie d'utilisateur" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Nombre" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "Tty" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Permission" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Modifier le temps" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "Numéro de l'Inode" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "Périphérique majeur" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "Périphérique mineur" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "Périphérique majeur C" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "Périphérique mineur C" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "Fichier cible %s" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "catégorie" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Chemin" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Temps de modification" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Temps d'accès" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Taille des données" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Taille du disque" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Service Web" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "Url" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "Cgi" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Méthode http" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Argument CGI" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "Service SNMP" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "oid" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "modèleParcoursMessage" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "modèleSécurité" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "nomSécurité" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "niveauSécurité" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "nomContexte" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "IDmoteurContexte" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "commande" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Port" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "Liste des ports" #: prewikka/views/messagesummary/messagesummary.py:935 msgid "ip_version" msgstr "Version IP" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Source(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Cible(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Alerte de débordement" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Alerte" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "MessageID" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "Informations réseau" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "Charge utile ASCII" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Pulsation" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "JSON" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Résumé" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "Synthèse du risque" #: prewikka/views/statistics/__init__.py:10 msgid "Statistics pages" msgstr "Page de statistiques" #: prewikka/views/statistics/alertstats.py:35 msgid "Severities" msgstr "Gravité" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" "Ce graphe montre les sévérités des alertes remontées. Il existe 5 " "sévérités : n/a, info, basse, moyenne et haute." #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "Top {limit} des localisations d'analyseur" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" "Ce graphe montre les localisations les plus récurrentes des analyseurs " "remontant une alerte." #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "Ce graphe montre l'évolution des sévérités d'alertes au fil du temps." #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 msgid "Top {limit} Source Addresses" msgstr "Top {limit} des adresses sources" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" "Ce graphe montre les adresses IP source les plus communes dans les " "alertes." #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "Top {limit} des adresses ciblées" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "Ce graphe montre les adresses IP cible les plus communes dans les alertes." #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 msgid "Top {limit} Classifications" msgstr "Top {limit} des classifications" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" "Ce graphe montre les classifications les plus récurrentes des alertes " "remontées. La classification est une courte description de l'alerte." #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "Top {limit} des classifications (tendance)" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" "Ce graphe montre l'évolution des classifications d'alertes au fil du " "temps." #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "Top {limit} des classes d'analyseurs" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" "Ce graphe montre les types les plus récurrents d'analyseurs remontant une" " alerte. Pour plus de détails sur les types existants, veuillez visiter " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "Top {limit} des classes d'analyseurs (tendance)" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" "Ce graphe montre l'évolution des types d'analyseurs remontant une alerte " "au fil du temps." #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "Service inconnu" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "Page de statistiques sur les alertes" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "Top {limit} des références d'alertes" #: prewikka/views/statistics/alertstats.py:226 msgid "Alert: Severity" msgstr "Alerte : Sévérité" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "Top {limit} des types d'impacts d'alertes" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "Top {limit} des sources (tendance)" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "Top {limit} des utilisateurs sources" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "Top {limit} des ports ciblés" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "Top {limit} des utilisateurs ciblés" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "Top {limit} des processus ciblés" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "Top {limit} des analyseurs" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "Top {limit} des modèles d'analyseurs" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "Top {limit} des adresses des nœuds d'analyseurs" #: prewikka/views/statistics/alertstats.py:314 msgid "Number of source addresses" msgstr "Nombre d'adresses sources" #: prewikka/views/statistics/alertstats.py:321 msgid "Number of target addresses" msgstr "Nombre d'adresses cibles" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "Nombre d'alertes simples" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "Nombre d'alertes par type d'analyseur" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "Nombre d'alertes" #: prewikka/views/statistics/alertstats.py:347 msgid "Number of correlation alerts" msgstr "Nombre d'alertes de corrélation" #: prewikka/views/statistics/alertstats.py:354 msgid "Number of machines/devices" msgstr "Nombre de machines/équipements" #: prewikka/views/statistics/alertstats.py:361 msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "Nombre de machines/équipements par type d'analyseur (HIDS, NIDS)" #: prewikka/views/statistics/alertstats.py:368 msgid "Categorizations" msgstr "Catégories" #: prewikka/views/statistics/alertstats.py:369 msgid "Sources" msgstr "Sources" #: prewikka/views/statistics/alertstats.py:370 msgid "Targets" msgstr "Cibles" #: prewikka/views/statistics/alertstats.py:371 msgid "Analyzers" msgstr "Analyseurs" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Métrologie" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Statistiques" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "titre" #: prewikka/views/statistics/statistics.py:131 msgid "Statistics error" msgstr "Erreur de statistiques" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "Impossible de trouver la classe de graphe : %s" #: prewikka/views/statistics/statistics.py:180 msgid "Invalid widget" msgstr "Widget invalide" #: prewikka/views/statistics/statistics.py:180 msgid "The widget category does not exist" msgstr "La catégorie de widget n'existe pas" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "Échec à l'import du tableau de bord." #: prewikka/views/statistics/templates/widget.mak:12 msgid "Delete this widget?" msgstr "Supprimer ce widget ?" #: prewikka/views/usermanagement/__init__.py:14 msgid "User and group management pages" msgstr "Pages de gestion des utilisateurs et des groupes" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Contrôle d'accès" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Utilisateurs" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "GROUP MANAGEMENT" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Groupes" #: prewikka/views/usermanagement/usermanagement.py:94 #, python-format msgid "Edit user %s" msgstr "Éditer l'utilisateur %s" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "Accès refusé à la modification d'utilisateurs" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "Éditer le groupe %s" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "Accès refusé à la modification de groupes" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Invalid user" msgstr "Utilisateur invalide" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "L'utilisateur spécifié n'existe pas" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "Impossible de modifier les paramètres d'autres utilisateurs" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Langue invalide" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "La langue spécifiée n'existe pas" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "Fuseau horaire invalide" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "Le fuseau horaire spécifié n'existe pas" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Password error" msgstr "Erreur de mot de passe" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "Non-correspondance de mot de passe" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "Mot de passe spécifié invalide" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 msgid "Could not create user" msgstr "Impossible de créer l'utilisateur" #: prewikka/views/usermanagement/usermanagement.py:294 msgid "Username required" msgstr "Nom d'utilisateur requis" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "Le nom d'utilisateur ne peut pas commencer par un slash" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "L'utilisateur %s existe déjà" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Mon compte" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "Utilisateur invalide" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "L'utilisateur '%s' n'existe pas" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "Accès refusé aux paramètres d'autres utilisateurs" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "Accès refusé aux paramètres des groupes" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 msgid "Could not create group" msgstr "Impossible de créer le groupe" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "Nom du groupe non renseigné" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "Le nom du groupe ne peut pas commencer par un slash" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "Le groupe %s existe déjà" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Créer un utilisateur" #: prewikka/views/usermanagement/templates/userlisting.mak:7 msgid "Delete the selected users?" msgstr "Supprimer les utilisateurs sélectionnés ?" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Nom du groupe" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Créer un groupe" #: prewikka/views/usermanagement/templates/userlisting.mak:11 msgid "Delete the selected groups?" msgstr "Supprimer les groupes sélectionnés ?" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Informations sur le compte" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Identifiant :" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Groupes :" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Informations sur le groupe" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Nom du groupe :" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Membres :" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "info" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "Email :" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "Email" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Langue :" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Thème :" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Fuseau horaire :" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Permissions :" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Cocher tout" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Mot de passe actuel :" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Mot de passe actuel" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Nouveau mot de passe :" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Nouveau mot de passe" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Confirmation du mot de passe :" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Confirmation du mot de passe" #: scripts/prewikka-cli:60 msgid "Unknown command" msgstr "Commande inconnue" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "Une erreur inattendue s'est produite : %s" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "Créer un objet du type spécifié" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "Supprimer un objet du type spécifié" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "Importer des objets du type spécifié à partir de fichiers" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "Lister les objets du type spécifié" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "Synchroniser les objets du type spécifié" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "Mettre à jour des objets du type spécifié" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "Outil Prewikka en ligne de commande" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "nom de l'utilisateur" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "fichier de configuration (défaut : %(default)s)" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "commande à exécuter" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "active la sortie de débogage" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "prewikka-cli doit être exécuté en tant qu'utilisateur prewikka" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "Outil Prewikka en ligne de commande (%s)" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "Taper \"help\" ou \"?\" pour lister les commandes" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "lancer en arrière-plan" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "afficher ce message d'aide et quitter" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "afficher le numéro de version du programme et quitter" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "racine où le serveur est accessible" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "IP d'écoute (défaut : %(default)s)" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "numéro de port (défaut : %(default)d)" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "clé privée SSL (défaut : pas de SSL)" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "certificat SSL (défaut : pas de SSL)" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" "nombre de processus. La valeur par défaut correspond au nombre de CPU " "disponibles (ici %d)" prewikka-5.2.0/prewikka/locale/it/0000755000000000000000000000000013726165110016763 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/it/LC_MESSAGES/0000755000000000000000000000000013726165110020550 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/it/LC_MESSAGES/prewikka.po0000644000000000000000000024110413726165107022735 0ustar rootroot00000000000000# Italian Translation for Prewikka # Copyright (C) 2012-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: FULL NAME \n" "Language-Team: Italian\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Accesso negato" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "Errore di configurazione" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "Errore di parsing in \"%(txt)s\" alla linea %(line)d di %(file)s" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "Valore invalido '%(value)s' per il parametro '%(name)s'" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "Valore mancante per il parametro '%(name)s'" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Ogni ora" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Quotidiano" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Settimanale" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Mensile" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Annuale" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Personalizzato" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Disabilitato" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "Esecuzione dell'operazione pianificata fallita" #: prewikka/crontab.py:146 msgid "Invalid job extension" msgstr "Estensione di operazione invalida" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "Operazione pianificata con tipo di estensione invalido '%s'" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Sessione invalida" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 msgid "Invalid schedule" msgstr "Pianificazione non valida" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "L'operazione pianificata è invalida" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Personalizzato (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "Errore di database" #: prewikka/database.py:50 msgid "Database schema error" msgstr "Errore di schema del database" #: prewikka/database.py:293 msgid "database installation required" msgstr "installazione del database richiesta" #: prewikka/database.py:296 msgid "database activation required" msgstr "attivazione del database richiesta" #: prewikka/database.py:299 #, fuzzy, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "attivazione del database richiesta" #: prewikka/database.py:305 #, fuzzy, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "attivazione del database richiesta" #: prewikka/database.py:372 msgid "Database installation error" msgstr "Errore di installazione del database" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "Errore di migrazione del database" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 msgid "Database configuration error" msgstr "Errore di configurazione del database" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "Solamente MySQL e PostgreSQL sono supportati in questo momento" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "Si è verificato un errore imprevisto" #: prewikka/error.py:148 msgid "Not implemented" msgstr "Non implementato" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "Il backend non implementa questa operazione" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m/%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d/%m/%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d/%m/%Y %H:00" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d/%m/%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d/%m/%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "%(days)dg %(hours)do %(minutes)d'" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "Errore di inizializzazione" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "Errore di requisito di versione" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "Prewikka %(vPre)s richiede libprelude %(vLib)s o successiva" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "Prewikka %(vPre)s richiede libpreludedb %(vLib)s o successiva" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "Si è verificato un errore imprevisto durante il tentativo di caricare %s" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Oggi" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Ieri" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Questa settimana" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "La settimana scorsa" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Questo mese" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "Lo scorso mese" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ora" msgstr[1] "%d ore" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d giorno" msgstr[1] "%d giorni" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d settimana" msgstr[1] "%d settimane" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mese" msgstr[1] "%d mesi" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d anno" msgstr[1] "%d anni" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d secondo" msgstr[1] "%d secondi" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minuti" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Inattivo" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 msgid "None" msgstr "Nessun" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 msgid "Menu error" msgstr "Errore di menu" #: prewikka/menu.py:71 #, fuzzy msgid "The provided YAML menu is invalid" msgstr "L'operazione pianificata è invalida" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "Menu vuoto" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "Menu senza nome in %s" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "Menu predefiniti multipli" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "Viste predefinite multiple" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "Dipendenze circolari rilevate: %s" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "Dipendenza mancante: %s" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" "Risoluzione DNS asincrona disabile: twisted.names et twisted.internet " "richiesti: %s" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "" "Accesso vietato alla vista '%(view)s'. Autorizzazioni richiesti: " "%(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "Accesso vietato alla vista '%s'" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "Autorizzazioni richiesti: %s" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "Fallimento di normalizzazione dei parametri" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "Il parametro '%s' non è valido" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "Il parametro richiesto '%s' è mancante" #: prewikka/view.py:95 msgid "Invalid method" msgstr "Metodo non valido" #: prewikka/view.py:102 msgid "Invalid view" msgstr "Vista invalida" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "Il metodo '%(method)s' non è permesso per la vista '%(view)s'" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "La vista '%s' non esiste" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Autenticazione fallita" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "Errore di inizializzazione DBAuth" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Uguale" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Uguale (case-insensitive)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Diverso" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Diverso (case-insensitive)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Espressione regolare" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Espressione regolare (case-insensitive)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "Non espressione regolare" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "Non espressione regolare (case-insensitive)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Minore di" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Minore o uguale" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Maggiore di" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Maggiore o uguale" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Sottostringa" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Sottastringa (case-insensitive)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "Non sottostringa" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "Non sottastringa (case-insensitive)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "Errore di conversione" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "Valore %(value)r non può essere convertito in %(type)s" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "Errore di backend" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "Errore di sintassi" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "Percorso sconosciuto: %s" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 #, fuzzy msgid "Could not parse input" msgstr "Impossibile salvare il filtro" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Alta" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Media" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Bassa" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Informativo" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Allerte" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Classificazione" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "IP di origine" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Porta di origine" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "IP di destinazione" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Porta di destinazione" #: prewikka/dataprovider/idmef.py:170 msgid "Analyzer name" msgstr "Nome dell'analizzatore" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Elenco delle allerte" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Pulsazioni" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Elenco delle pulsazioni" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Logs" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "Messaggio" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Host" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Programma" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "Timestamp" #: prewikka/dataprovider/utils.py:50 msgid "Invalid operation" msgstr "Operazione invalida" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 msgid "Invalid configuration" msgstr "Configurazione invalida" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 msgid "Missing configuration" msgstr "Configurazione mancante" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 msgid "Request error" msgstr "Errore di richiesta" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 #, fuzzy msgid "The specified Elasticsearch index does not exist" msgstr "Il fuso orario specificato non esiste" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 msgid "Dataprovider error" msgstr "Errore di dataprovider" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 #, fuzzy msgid "Lucene emulation error" msgstr "Errore di normalizzazione del backend" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 #, fuzzy msgid "Filters management page" msgstr "Filtrare sull'agente" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Preferenze" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filtri" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filtro %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "Errore di filtro" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "Il filtro '%s' non esiste" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "Impossibile salvare il filtro" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "Nome del filtro mancante" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "Il nome del filtro è già usato da un altro filtro" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Nuovo filtro" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Nome:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Nome del filtro" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Categoria:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Descrizione:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Annullare" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Salvare" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Nome" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Categoria" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Descrizione" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Creare" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Duplicare" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "Rimovuere i filtri selezionati?" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Rimovuere" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filtro:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Filtri disponibili" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Nessun filtro" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Nessuna categoria" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "Selezionare un percorso..." #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "Percorsi predefiniti" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "Tutti i percorsi" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "Cambiare l'operatore" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "valore" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "Rimovuere condizione" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "E" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "O" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "Aggiungere condizione" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "Aggiungere gruppo" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "Rimuovere gruppo" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "AVVERTTIMENTO" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "OK" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "Nessun dato da visualizzare." #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "Errore di rendering" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Sessione invalida" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "Il cookie di sessione del browser non è valido" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Sessione scaduta" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" "La tua sessione è scaduta: accedi nuovamente per continuare ad usare " "Prelude" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Sessione finita" #: prewikka/session/anonymous/anonymous.py:31 msgid "Anonymous authentication" msgstr "Autenticazione anonima" #: prewikka/session/loginform/__init__.py:35 #, fuzzy msgid "Login/Password authentication" msgstr "Autenticazione utente" #: prewikka/session/loginform/templates/loginform.mak:17 msgid "User authentication" msgstr "Autenticazione utente" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Login" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Password" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Login" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "Opzioni di vista" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "Aiuto di vista" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "Questo app è stato disabilitato o non è riuscito a caricare." #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "nome" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "Circa" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "È sicuro di voler disconnettersi?" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Sconnessione" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Dettaglio" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "Copiare negli appunti" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "Errore: {0}" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "Autenticare" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "Ritorno" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "Riprovare" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "Reindirizzare alla pagina principale" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Rinfrescare:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "Frequenza di aggiornamento della pagina attuale" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Periodo:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Periodo da visualizzare" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Inizio:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "inizio" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Data d'inizio" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Fine:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "fine" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Data di fine" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "Si prega di confermare" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "Dialogo Prelude" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "Errore di connessione" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Offline" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Sconosciuto" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Mancante" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Online" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "Prelude SIEM versione %s" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "Prelude SIEM è un sistema \"Security Information and Event Management\"" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" "{prelude} è una soluzione di supervisione di sicurezza che raccoglie, " "filtra, normalizza, correla, memorizza et archivia informazioni da fonti " "disparate sul vostro sistema informatico. Da tutti questi dati Prelude " "SIEM può fornire una panoramica del livello di sicurizza del vostro " "sistema e così prevenire gli attachi, intrusioni e altri infezioni " "virali." #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "Vigilo NMS è un \"Network Management System\"" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" "{vigilo} è una soluzione completa di supervisione di prestazioni capace " "di gestire sistemi di scala media e grande (rete - server - applicazioni)" " attraverso un'architettura distribuita et componibile. Vigilo NMS offre " "tutte le funzioni necessarie alla supervisione di prestazioni: la " "gestione degli stati e delle allarmi, la metrologia, la cartografia, la " "correlazione degli eventi e la reportistica." #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" "Prelude SIEM e Vigilo NMS sono sviluppati dalla società %s, progettista, " "integratore e operatore di sistemi critici." #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Contatto" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Telefono:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Fax:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Porta di origine" #: prewikka/views/about/templates/about.mak:55 msgid "Community" msgstr "Comunità" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Chiudere" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "Apps: API" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "Apps: Vista" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 msgid "Apps: Authentication" msgstr "Apps: Autenticazione" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "Apps: Identificazione" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Apps" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "Tutti gli aggiornamenti applicati" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "ERRORE" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 msgid "Update failed" msgstr "Aggiornamento non riuscito" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 msgid "Update Dialog" msgstr "Dialogo di aggiornamento" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 #, fuzzy msgid "Script" msgstr "Descrizione" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "Risultato" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "Manutenzione dei moduli" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Versione" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "Versione attuale di database" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Apps installate" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Versione di database" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Attivo" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "Aggiornare le apps selezionate?" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Aggiornare" #: prewikka/views/agents/__init__.py:12 #, fuzzy msgid "Agents status information page" msgstr "Informazioni sull'indirizzo" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agenti" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Nome del nodo sconosciuto" #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "Versione sistema sconosciuta" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Tipo del systema sconosciuto" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Posizione sconosciuta" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Elenco delle allerte" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "Elenco delle pulsazioni" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Analisi delle pulsazioni" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Supervisione" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "Inizio normale del sensore" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "Nuovo inizio inaspettato del sensore" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "Intervallo di pulsazione inaspettato: %(delta)s" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "Fermata normale del sensore" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "Il sensore è mancante da %s" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" "No anomalia nelle %(count)d scorse pulsazioni (una pulsazione ogni " "%(delta)s in media)" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "Mostrare/Nascondere tutto" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "Ricerca:" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Luogo" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Nodo" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Modello" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Classe" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Pulsazione scorsa" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Stato" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "Rimovuere le allerte degli agenti selezionati?" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "Rimovuere le pulsazioni degli agenti selezionati?" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "Rimovuere i messaggi IDMEF selezionati?" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 msgid "OS" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Nome del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Posizione del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Indirizzo del nodo" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "Stato attuale" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Eventi" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Filtrare sull'agente" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Configurazione" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "Pianificazione" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "SISTEMA" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "In attesa" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Errore" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "Pianificazione:" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "personalizzato" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "disabilitato" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Minuto:" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Ora:" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "Giorno:" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Mese:" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "Giorno della settimana:" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "Modificare l'operazione" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "Operazioni pianificate" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "Pianificazione" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Utente" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "Esecuzione scorsa" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "Esecuzione prossima" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "Disattivare" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "Attivare" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Elenco delle allerte" #: prewikka/views/datasearch/alert.py:124 msgid "Aggregated alerts" msgstr "Allerte aggregate" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Gravità" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Data" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Fonte" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Obiettivo" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analizzatore" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "Rimovuere le allerte selezionate?" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "Gravità minima" #: prewikka/views/datasearch/alert.py:227 msgid "Low severity" msgstr "Gravità bassa" #: prewikka/views/datasearch/alert.py:228 msgid "Medium severity" msgstr "Gravità media" #: prewikka/views/datasearch/alert.py:229 msgid "High severity" msgstr "Gravità alta" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "minuto" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "ora" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "giorno" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "mese" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "anno" #: prewikka/views/datasearch/datasearch.py:189 #, fuzzy msgid "Time group error" msgstr "Errore di menu" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "Cruscotto" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "Generale" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Elenco delle pulsazioni" #: prewikka/views/datasearch/heartbeat.py:53 msgid "Aggregated heartbeats" msgstr "Pulsazioni aggregate" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agente" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "Rimovuere le pulsazioni selezionate?" #: prewikka/views/datasearch/idmef.py:46 msgid "See IDMEF details" msgstr "Vedere i dettagli IDMEF" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Elenco delle allerte" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "Logs aggregati" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "Cercare in logs" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "Vedere i logs" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Log" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "Archivio" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Contesto" #: prewikka/views/datasearch/log.py:116 #, fuzzy msgid "Syslog export" msgstr "Rapporto %s" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Raggrupa per %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "Aggiungere alla ricerca" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "Escludere della ricerca" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "Campi" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 msgid "Count" msgstr "Conto" #: prewikka/views/datasearch/templates/forensic.mak:79 msgid "Chart type" msgstr "Tipo di grafico" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Limite" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "Modo azione" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "Modo condensato" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "Modo esperto" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "Modo di ricerca" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "Cercare" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "Azzerare la ricerca" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Raggrupa per" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "Scegli il campo" #: prewikka/views/datasearch/templates/forensic.mak:151 msgid "Time values" msgstr "Valori temporali" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "Campi %s" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 msgid "Timeline" msgstr "Cronologia" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "Nuova ricerca" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Azioni" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informazioni" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "Campo" #: prewikka/views/datasearch/templates/infos.mak:9 msgid "Occurrence" msgstr "Occorrenze" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Aiuto" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "Allerte aggregate" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 #, fuzzy msgid "Detailed alert and heartbeat page" msgstr "Generico (Allerta e Pulsazione)" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Codice" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Lunghezza dei dati" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Dati" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(ora locale della sonda: %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Data di creazione" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Data di rivelazione" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Data dell'analizzatore" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Processo" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Percorso del processo" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "ID del processo" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Nome del nodo (risolto)" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "ID dell'analizzatore" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Fabbricante" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Sistema Operativo" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Percorso verso l'analizzatore (%d non illustrati)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Analizzatore #%d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Dati aggiuntivi" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Significato" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Valore" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Lunghezza dell'intestazione" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Lunghezza" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Protocollo" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Checksum" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Indirizzo sorgente" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Indirizzo destinazione" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Riservato" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Finestra" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Tipo" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Maschera" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "Indirizzo del Gateway" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Durata della vita" #: prewikka/views/messagesummary/messagesummary.py:600 #, fuzzy msgid "Otime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:601 #, fuzzy msgid "Rtime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:602 #, fuzzy msgid "Ttime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Carico utile" #: prewikka/views/messagesummary/messagesummary.py:661 msgid "Alert details" msgstr "Dettaglio dell'allerta" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "%d allerte collegate mancanti (probabilmente cancellate)" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "%d allerte collegate omesse" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Allerta di Correlazione" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Allerte correlate" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Analizzatore di fonte" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Allerta di Strumento" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Allerte collegate" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Testo" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "Identità" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "Origine" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Completamento" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Categoria di utente" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Numero" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Autorizzazione" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Modificare il tempo" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "Numero dell'Inode" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "Dispositivo maggiore" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "Dispositivo minore" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "File di destinazione %s" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "categoria" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Percorso" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Data di modifica" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Data di accesso" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Dimensioni dei dati" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Dimensioni del disco" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Web Service" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Metodo http" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Argumento CGI" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "SNMP Service" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "comando" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Porta" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:935 msgid "ip_version" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Fonte(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Obiettivo(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Allerta di overflow" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Allerta" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "Informazioni sulla rete" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "Carica utile ASCII" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Pulsazione" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Sommario" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Elenco delle pulsazioni" #: prewikka/views/statistics/alertstats.py:35 #, fuzzy msgid "Severities" msgstr "Gravità" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 #, fuzzy msgid "Top {limit} Source Addresses" msgstr "Indirizzo sorgente" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 #, fuzzy msgid "Top {limit} Classifications" msgstr "Classificazione" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "Servizio sconosciuto" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 #, fuzzy msgid "Top {limit} Alert References" msgstr "Riferimenti" #: prewikka/views/statistics/alertstats.py:226 #, fuzzy msgid "Alert: Severity" msgstr "Gravità" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 #, fuzzy msgid "Number of source addresses" msgstr "Indirizzo sorgente" #: prewikka/views/statistics/alertstats.py:321 #, fuzzy msgid "Number of target addresses" msgstr "Indirizzo destinazione" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 #, fuzzy msgid "Number of alerts" msgstr "Allerte di Correlazione" #: prewikka/views/statistics/alertstats.py:347 #, fuzzy msgid "Number of correlation alerts" msgstr "Allerte di Correlazione" #: prewikka/views/statistics/alertstats.py:354 #, fuzzy msgid "Number of machines/devices" msgstr "Indirizzo sorgente" #: prewikka/views/statistics/alertstats.py:361 #, fuzzy msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "Indirizzo sorgente" #: prewikka/views/statistics/alertstats.py:368 msgid "Categorizations" msgstr "Categorie" #: prewikka/views/statistics/alertstats.py:369 msgid "Sources" msgstr "Fonti" #: prewikka/views/statistics/alertstats.py:370 msgid "Targets" msgstr "Obiettivi" #: prewikka/views/statistics/alertstats.py:371 msgid "Analyzers" msgstr "Analizzatori" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Metrologia" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Statistiche" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "titolo" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Statistiche" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 msgid "Invalid widget" msgstr "Widget invalido" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "The widget category does not exist" msgstr "Il filtro '%s' non esiste" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 msgid "Delete this widget?" msgstr "Rimovuere questo widget?" #: prewikka/views/usermanagement/__init__.py:14 #, fuzzy msgid "User and group management pages" msgstr "Allerte di Correlazione" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Controllo di accesso" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Utenti" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Gruppi" #: prewikka/views/usermanagement/usermanagement.py:94 #, python-format msgid "Edit user %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Invalid user" msgstr "Utente non valido" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "L'utente specificato non esiste" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Lingua invalida" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "La lingua specificata non esiste" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "Fuso orario non valido" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "Il fuso orario specificato non esiste" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Password error" msgstr "Errore di password" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "Password specificato invalido" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 msgid "Could not create user" msgstr "Impossibile creare l'utente" #: prewikka/views/usermanagement/usermanagement.py:294 #, fuzzy msgid "Username required" msgstr "Nome del nodo (risolto)" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "L'utente %s esiste già" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Il mio account" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "Utente non valido" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "Utente richiesto '%s' non esiste" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 msgid "Could not create group" msgstr "Impossibile creare il gruppo" #: prewikka/views/usermanagement/usermanagement.py:415 #, fuzzy msgid "No group name provided" msgstr "Nome del nodo (risolto)" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "Il gruppo %s esiste già" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Creare un utente" #: prewikka/views/usermanagement/templates/userlisting.mak:7 msgid "Delete the selected users?" msgstr "Rimovuere gli utenti selezionati?" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Nome del gruppo" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Creare un gruppo" #: prewikka/views/usermanagement/templates/userlisting.mak:11 msgid "Delete the selected groups?" msgstr "Rimovuere i gruppi selezionati?" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Informazioni sull'account" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Accesso:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Gruppi:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Informazioni sul gruppo" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Nome del gruppo:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Membri:" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "info" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "E-mail:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "E-mail" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Lingua:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Tema:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Fuso orario:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Autorizzazioni:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Selezionare tutto" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Password attuale:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Password attuale" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Nuovo password:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Nuovo password" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Confermare il password:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Confermare il password" #: scripts/prewikka-cli:60 #, fuzzy msgid "Unknown command" msgstr "comando" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/pl/0000755000000000000000000000000013726165110016762 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/pl/LC_MESSAGES/0000755000000000000000000000000013726165110020547 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/pl/LC_MESSAGES/prewikka.po0000644000000000000000000023010313726165107022731 0ustar rootroot00000000000000# Polish Translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Konrad Kosmowski \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && " "(n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Odmowa dostępu" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 #, fuzzy msgid "Configuration error" msgstr "Alert korelacji" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "" #: prewikka/crontab.py:37 #, fuzzy msgid "Hourly" msgstr "%d godzina" #: prewikka/crontab.py:38 #, fuzzy msgid "Daily" msgstr "Dzisiaj" #: prewikka/crontab.py:39 #, fuzzy msgid "Weekly" msgstr "%d tydzień" #: prewikka/crontab.py:40 #, fuzzy msgid "Monthly" msgstr "%d miesiąc" #: prewikka/crontab.py:41 #, fuzzy msgid "Yearly" msgstr "%d rok" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Dostosowane" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 #, fuzzy msgid "Invalid job extension" msgstr "Nieprawidłowa sesja" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Nieprawidłowa sesja" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 #, fuzzy msgid "Invalid schedule" msgstr "Nieprawidłowa sesja" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "" #: prewikka/database.py:43 msgid "Database error" msgstr "" #: prewikka/database.py:50 msgid "Database schema error" msgstr "" #: prewikka/database.py:293 msgid "database installation required" msgstr "" #: prewikka/database.py:296 msgid "database activation required" msgstr "" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 #, fuzzy msgid "Database configuration error" msgstr "Alert korelacji" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%Y-%m" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%Y-%m-%d" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%Y-%m-%d %H:00" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%Y-%m-%d %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%Y-%m-%d %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Dzisiaj" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Wczoraj" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "W tym tygodniu" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "Zeszły tydzień" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Ten miesiąc" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "W zeszłym miesiącu" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d godzina" msgstr[1] "%d godziny" msgstr[2] "%d godzin" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dzień" msgstr[1] "%d dni" msgstr[2] "%d dni" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d tydzień" msgstr[1] "%d tygodnie" msgstr[2] "%d tygodni" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d miesiąc" msgstr[1] "%d miesiące" msgstr[2] "%d miesięcy" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d rok" msgstr[1] "%d lata" msgstr[2] "%d lat" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunda" msgstr[1] "%d sekundy" msgstr[2] "%d sekund" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuta" msgstr[1] "%d minuty" msgstr[2] "%d minut" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Nieaktywny" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 #, fuzzy msgid "None" msgstr "Telefon:" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 #, fuzzy msgid "Menu error" msgstr "Alert korelacji" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "Odmowa dostępu do widoku '%(view)s' : %(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "Normalizacja parametrów nie powiodła się" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "" #: prewikka/view.py:95 #, fuzzy msgid "Invalid method" msgstr "Nieprawidłowa sesja" #: prewikka/view.py:102 #, fuzzy msgid "Invalid view" msgstr "Nieprawidłowa sesja" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Błąd uwierzytelniania" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Równa się" #: prewikka/dataprovider/__init__.py:36 #, fuzzy msgid "Equal (case-insensitive)" msgstr "Wycinek frazy (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "" #: prewikka/dataprovider/__init__.py:38 #, fuzzy msgid "Not equal (case-insensitive)" msgstr "Wycinek frazy (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Wyrażenie regularne" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Wyrażenie regularne (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:41 #, fuzzy msgid "Not regular expression" msgstr "Wyrażenie regularne" #: prewikka/dataprovider/__init__.py:42 #, fuzzy msgid "Not regular expression (case-insensitive)" msgstr "Wyrażenie regularne (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Mniej niż" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Mniejszerówne niż" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Więcej niż" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Większerówne niż" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Wycinek frazy" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Wycinek frazy (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:49 #, fuzzy msgid "Not substring" msgstr "Wycinek frazy" #: prewikka/dataprovider/__init__.py:50 #, fuzzy msgid "Not substring (case-insensitive)" msgstr "Wycinek frazy (ignoruj wielkość liter)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 #, fuzzy msgid "Conversion error" msgstr "Alert korelacji" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 #, fuzzy msgid "Backend error" msgstr "Alert korelacji" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 #, fuzzy msgid "Syntax error" msgstr "Alert korelacji" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 msgid "Could not parse input" msgstr "" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "" #: prewikka/dataprovider/idmef.py:147 #, fuzzy msgid "Informational" msgstr "Info: %s" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Alerty" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Klasyfikacja" #: prewikka/dataprovider/idmef.py:166 #, fuzzy msgid "Source IP" msgstr "Port źródłowy" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Port źródłowy" #: prewikka/dataprovider/idmef.py:168 #, fuzzy msgid "Target IP" msgstr "Port docelowy" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Port docelowy" #: prewikka/dataprovider/idmef.py:170 #, fuzzy msgid "Analyzer name" msgstr "Czas analizatora" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Lista alertów" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Tętno" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Analiza tętna" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 #, fuzzy msgid "Logs" msgstr "Zaloguj" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Program" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "" #: prewikka/dataprovider/utils.py:50 #, fuzzy msgid "Invalid operation" msgstr "Nieprawidłowa sesja" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 #, fuzzy msgid "Invalid configuration" msgstr "Konfiguracja" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 #, fuzzy msgid "Missing configuration" msgstr "Konfiguracja" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 #, fuzzy msgid "Request error" msgstr "Alert korelacji" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 msgid "The specified Elasticsearch index does not exist" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 #, fuzzy msgid "Dataprovider error" msgstr "Alert korelacji" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 #, fuzzy msgid "Lucene emulation error" msgstr "Alert korelacji" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 #, fuzzy msgid "Filters management page" msgstr "Filtruj po agencie" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Preferencje" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filtry" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filtr %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, fuzzy msgid "Filter error" msgstr "Filtr" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Nowy filtr" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Nazwa:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Nazwa filtra" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Kategoria:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Opis:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Anuluj" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Zapisz" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Nazwa" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Kategoria" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Opis" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Utwórz" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Duplikat" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Usuń" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filtr:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Dostępne filtry" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Bez filtra" #: prewikka/plugins/filter/templates/menu.mak:51 #, fuzzy msgid "No category" msgstr "kategoria" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "" #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "wartość" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:45 #, fuzzy msgid "AND" msgstr "rozwiń" #: prewikka/plugins/filter/templates/widget.mak:45 #, fuzzy msgid "OR" msgstr "Port" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 #, fuzzy msgid "Renderer error" msgstr "Alert korelacji" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Nieprawidłowa sesja" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Sesja wygasła" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Wylogowany" #: prewikka/session/anonymous/anonymous.py:31 #, fuzzy msgid "Anonymous authentication" msgstr "Błąd uwierzytelniania" #: prewikka/session/loginform/__init__.py:35 #, fuzzy msgid "Login/Password authentication" msgstr "Błąd uwierzytelniania" #: prewikka/session/loginform/templates/loginform.mak:17 #, fuzzy msgid "User authentication" msgstr "Błąd uwierzytelniania" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Zaloguj" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Hasło" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Zaloguj" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 #, fuzzy msgid "name" msgstr "Nazwa" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "O systemie" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Wyloguj" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Szczegół" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 #, fuzzy msgid "Sign in" msgstr "Pochodzenie" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Odśwież:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Okres:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Początek:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "początek" #: prewikka/templates/mainmenu.mak:117 #, fuzzy msgid "Start date" msgstr "początek" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Koniec:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "koniec" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 #, fuzzy msgid "Connection error" msgstr "Alert korelacji" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Niedostepny" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Nieznany" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Brakujący" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Dostępny" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Kontakt" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Telefon:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Faks:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Port źródłowy" #: prewikka/views/about/templates/about.mak:55 #, fuzzy msgid "Community" msgstr "polecenie" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 #, fuzzy msgid "Close" msgstr "Kod" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 #, fuzzy msgid "Apps: Authentication" msgstr "Błąd uwierzytelniania" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 #, fuzzy msgid "Apps" msgstr "Zastosuj" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "ERROR" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 #, fuzzy msgid "Update failed" msgstr "Filtr" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 #, fuzzy msgid "Update Dialog" msgstr "Filtr" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 #, fuzzy msgid "Script" msgstr "Opis" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Wersja" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 #, fuzzy msgid "Current database version" msgstr "Wersja bazy danych" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Wersja bazy danych" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Aktywny" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Aktualizacja" #: prewikka/views/agents/__init__.py:12 #, fuzzy msgid "Agents status information page" msgstr "Informacje o adresie" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agenci" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Nazwa węzła - bd." #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "Wersja systemu - bd." #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Typ systemu - bd." #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Lokalizacja węzła - bd." #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Lista alertów" #: prewikka/views/agents/agents.py:128 #, fuzzy msgid "Heartbeat listing" msgstr "Analiza tętna" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Analiza tętna" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Monitorowanie" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 #, fuzzy msgid "Search:" msgstr "Początek:" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Lokalizacja" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Węzeł" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Typ" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Klasa" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Ostatnie tętno" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Status" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 #, fuzzy msgid "OS" msgstr "TOS" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Nazwa węzła" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Lokalizacja węzła" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Adres węzła" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 #, fuzzy msgid "Current status" msgstr "Hasło:" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Zdarzenia" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Filtruj po agencie" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Konfiguracja" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "" #: prewikka/views/crontab/__init__.py:88 #, fuzzy msgid "Pending" msgstr "Zmienna" #: prewikka/views/crontab/__init__.py:98 #, fuzzy msgid "Error" msgstr "Alert korelacji" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:69 #, fuzzy msgid "custom" msgstr "Dostosowane" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:79 #, fuzzy msgid "Minute:" msgstr "%d minuta" #: prewikka/views/crontab/templates/cronjob.mak:83 #, fuzzy msgid "Hour:" msgstr "%d godzina" #: prewikka/views/crontab/templates/cronjob.mak:87 #, fuzzy msgid "Day:" msgstr "Dzisiaj" #: prewikka/views/crontab/templates/cronjob.mak:91 #, fuzzy msgid "Month:" msgstr "%d miesiąc" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:19 #, fuzzy msgid "User" msgstr "Numer" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:70 #, fuzzy msgid "Enable" msgstr "Nazwa" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Lista alertów" #: prewikka/views/datasearch/alert.py:124 #, fuzzy msgid "Aggregated alerts" msgstr "Alerty skorelowany" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Krytyczność" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Data" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Źródło" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Cel" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analizator" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 #, fuzzy msgid "IDMEF" msgstr "Ttime" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 #, fuzzy msgid "Low severity" msgstr "Krytyczność" #: prewikka/views/datasearch/alert.py:228 #, fuzzy msgid "Medium severity" msgstr "Krytyczność" #: prewikka/views/datasearch/alert.py:229 #, fuzzy msgid "High severity" msgstr "Krytyczność" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "minuta" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "godzina" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "dzień" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "miesiąc" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "rok" #: prewikka/views/datasearch/datasearch.py:189 #, fuzzy msgid "Time group error" msgstr "Alert korelacji" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Analiza tętna" #: prewikka/views/datasearch/heartbeat.py:53 #, fuzzy msgid "Aggregated heartbeats" msgstr "Ostatnie tętno" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agent" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "" #: prewikka/views/datasearch/idmef.py:46 #, fuzzy msgid "See IDMEF details" msgstr "Alerty" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Lista alertów" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "" #: prewikka/views/datasearch/log.py:85 #, fuzzy msgid "Archive" msgstr "Nieaktywny" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "" #: prewikka/views/datasearch/log.py:116 msgid "Syslog export" msgstr "" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Grupuj po %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 #, fuzzy msgid "Count" msgstr "Edycja filtra" #: prewikka/views/datasearch/templates/forensic.mak:79 #, fuzzy msgid "Chart type" msgstr "początek" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Limit" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 #, fuzzy msgid "Search" msgstr "Początek:" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Grupuj po" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 #, fuzzy msgid "Time values" msgstr "Wartość" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 #, fuzzy msgid "Timeline" msgstr "Czas" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Akcje" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informacje" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "" #: prewikka/views/datasearch/templates/infos.mak:9 #, fuzzy msgid "Occurrence" msgstr "Źródło" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Pomoc" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "Alerty skorelowany" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Kod" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Długość danych" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Dane" #: prewikka/views/messagesummary/messagesummary.py:372 #, fuzzy, python-format msgid "(agent local time: %s)" msgstr "sondy" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Data utworzenia" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Data wykrycia" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Czas analizatora" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Proces" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Ścieżka procesu" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "Identyfikator procesu" #: prewikka/views/messagesummary/messagesummary.py:422 #, fuzzy msgid "Node name (resolved)" msgstr "Nazwa węzła" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "ID analizatora" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Dostawca" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "System operacyjny" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Ścieżka analizatora (%d ukryte)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Analizator nr %d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Dodatkowe dane" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Zmienna" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Wartość" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Nagłówek" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "TOS" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Wielkość" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "ID" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "Ofset IP" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "TTL" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Protokół" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Suma" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "IP źródłowy" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "IP docelowy" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Rezerw." #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Okno" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "URP" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Typ" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "Nr sekw." #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Maska" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "Adres bramy" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "Adres numeryczny" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "WPA" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Czas życia" #: prewikka/views/messagesummary/messagesummary.py:600 msgid "Otime" msgstr "Otime" #: prewikka/views/messagesummary/messagesummary.py:601 msgid "Rtime" msgstr "Rtime" #: prewikka/views/messagesummary/messagesummary.py:602 msgid "Ttime" msgstr "Ttime" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Zawartość" #: prewikka/views/messagesummary/messagesummary.py:661 #, fuzzy msgid "Alert details" msgstr "Alerty" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Alert korelacji" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Alerty skorelowany" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Analizator źródłowy" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Alert narzędzia" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Alerty połączony" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Tekst" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "Identyfikator" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "Pochodzenie" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Wykonanie" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Kategoria użytkownika" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Numer" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "TTY" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Uprawnienia" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Data zmiany" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "Numer 'inode'" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "Numer 'major' urządzenia" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "Numer 'minor' urządzenia" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "Urządzenie 'C major'" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "Urządzenie 'C minor'" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "Docelowy plik %s" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "kategoria" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Ścieżka" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Data modyfikacji" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Data dostępu" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Rozmiar danych" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Rozmiar dysku" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Usługa web" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "URL" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "CGI" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Metoda HTTP" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Argument CGI" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "Usługa SNMP" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "OID" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "polecenie" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Port" #: prewikka/views/messagesummary/messagesummary.py:932 #, fuzzy msgid "PortList" msgstr "Port" #: prewikka/views/messagesummary/messagesummary.py:935 #, fuzzy msgid "ip_version" msgstr "Wersja" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Źródło(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Cel(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Alert przeładowania" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Alert" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "Informacje dotyczące sieci" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "Zawartość (ASCII)" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Tętno" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Podsumowanie" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Analiza tętna" #: prewikka/views/statistics/alertstats.py:35 #, fuzzy msgid "Severities" msgstr "Krytyczność" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 #, fuzzy msgid "Top {limit} Source Addresses" msgstr "IP źródłowy" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 #, fuzzy msgid "Top {limit} Classifications" msgstr "Klasyfikacja" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "" #: prewikka/views/statistics/alertstats.py:226 #, fuzzy msgid "Alert: Severity" msgstr "Krytyczność" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 #, fuzzy msgid "Number of source addresses" msgstr "IP źródłowy" #: prewikka/views/statistics/alertstats.py:321 #, fuzzy msgid "Number of target addresses" msgstr "IP docelowy" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:347 #, fuzzy msgid "Number of correlation alerts" msgstr "Alert korelacji" #: prewikka/views/statistics/alertstats.py:354 #, fuzzy msgid "Number of machines/devices" msgstr "IP źródłowy" #: prewikka/views/statistics/alertstats.py:361 #, fuzzy msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "IP źródłowy" #: prewikka/views/statistics/alertstats.py:368 #, fuzzy msgid "Categorizations" msgstr "Kategoria" #: prewikka/views/statistics/alertstats.py:369 #, fuzzy msgid "Sources" msgstr "Źródło" #: prewikka/views/statistics/alertstats.py:370 #, fuzzy msgid "Targets" msgstr "Cel" #: prewikka/views/statistics/alertstats.py:371 #, fuzzy msgid "Analyzers" msgstr "Analizator" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Statystyka" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "tytuł" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Statystyka" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "Invalid widget" msgstr "Nieprawidłowa sesja" #: prewikka/views/statistics/statistics.py:180 msgid "The widget category does not exist" msgstr "" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 #, fuzzy msgid "Delete this widget?" msgstr "Data wykrycia" #: prewikka/views/usermanagement/__init__.py:14 #, fuzzy msgid "User and group management pages" msgstr "Alert korelacji" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Kontrola dostępu" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Użytkowników" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Grupy" #: prewikka/views/usermanagement/usermanagement.py:94 #, fuzzy, python-format msgid "Edit user %s" msgstr "Filtry" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 #, fuzzy msgid "Invalid user" msgstr "Nieprawidłowa sesja" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 #, fuzzy msgid "Invalid Language" msgstr "Nieprawidłowa sesja" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:238 #, fuzzy msgid "Invalid Timezone" msgstr "Nieprawidłowa sesja" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 #, fuzzy msgid "Password error" msgstr "Nowe hasło:" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 #, fuzzy msgid "Could not create user" msgstr "Utwórz konto" #: prewikka/views/usermanagement/usermanagement.py:294 #, fuzzy msgid "Username required" msgstr "Nazwa węzła" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Moje konto" #: prewikka/views/usermanagement/usermanagement.py:324 #, fuzzy msgid "Invalid User" msgstr "Nieprawidłowa sesja" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 #, fuzzy msgid "Could not create group" msgstr "Utwórz konto" #: prewikka/views/usermanagement/usermanagement.py:415 #, fuzzy msgid "No group name provided" msgstr "Nazwa węzła" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Utwórz konto" #: prewikka/views/usermanagement/templates/userlisting.mak:7 #, fuzzy msgid "Delete the selected users?" msgstr "Usuń konto" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 #, fuzzy msgid "Group Name" msgstr "Nazwa:" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 #, fuzzy msgid "Create group" msgstr "Utwórz konto" #: prewikka/views/usermanagement/templates/userlisting.mak:11 #, fuzzy msgid "Delete the selected groups?" msgstr "Usuń konto" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Informacje konta" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Konto:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Grupy:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 #, fuzzy msgid "Group information" msgstr "Informacje konta" #: prewikka/views/usermanagement/templates/usersettings.mak:33 #, fuzzy msgid "Group Name:" msgstr "Nazwa:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 #, fuzzy msgid "Members:" msgstr "Październik" #: prewikka/views/usermanagement/templates/usersettings.mak:63 #, fuzzy msgid "info" msgstr "Okno" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "E-mail:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "E-mail" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Język:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Temat:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Strefa czasowa:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Uprawnienia:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Wszystkie" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Hasło:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Hasło" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Nowe hasło:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Nowe hasło" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Potwierdź nowe hasło:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Potwierdź nowe hasło" #: scripts/prewikka-cli:60 #, fuzzy msgid "Unknown command" msgstr "polecenie" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/pt_BR/0000755000000000000000000000000013726165110017355 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/pt_BR/LC_MESSAGES/0000755000000000000000000000000013726165110021142 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/pt_BR/LC_MESSAGES/prewikka.po0000644000000000000000000022711613726165107023336 0ustar rootroot00000000000000# Brazilian Portuguese Translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # edeunix@edeunix.com, 2007. # msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Edelberto Franco Silva \n" "Language-Team: Portuguese\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Permissão Negada" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Por hora" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Diário" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Semanal" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Mensal" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Anual" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Personalizado" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Desativado" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 #, fuzzy msgid "Invalid job extension" msgstr "Sessão inválida" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Sessão inválida" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 #, fuzzy msgid "Invalid schedule" msgstr "Usuário inválido" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Personalizado (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "" #: prewikka/database.py:50 msgid "Database schema error" msgstr "" #: prewikka/database.py:293 msgid "database installation required" msgstr "" #: prewikka/database.py:296 msgid "database activation required" msgstr "" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "" #: prewikka/database.py:386 #, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 msgid "Database configuration error" msgstr "" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m/%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d/%m/%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d/%m/%Y %H:00" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d/%m/%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d/%m/%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Hoje" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Ontem" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Esta semana" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "Semana passada" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Este mês" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "Mês passado" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d semana" msgstr[1] "%d semanas" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Inativo" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 #, fuzzy msgid "None" msgstr "Telefone:" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 msgid "Menu error" msgstr "" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "A visualização de '%(view)s' está proibida : %(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "A normalização dos parâmetros falhou" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "" #: prewikka/view.py:95 msgid "Invalid method" msgstr "Método inválido" #: prewikka/view.py:102 msgid "Invalid view" msgstr "Visão inválida" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "A auntenticação falhou" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "" #: prewikka/auth/dbauth/__init__.py:152 msgid "No login name provided" msgstr "" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Igual" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Igual (case-insensitive)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Não igual" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Não igual (case-insensitive)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Expressão regular" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Expressão regular (case-insensitive)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "Não expressão regular" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "Não expressão regular (case-insensitive)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Menor que" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Menor ou igual" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Maior que" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Maior ou igual" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Substring" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Substring (case-insensitive)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "Não substring" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "Não substring (case-insensitive)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "" #: prewikka/dataprovider/__init__.py:109 #, python-format msgid "No backend available for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 msgid "Could not parse input" msgstr "" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Alta" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Média" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Baixa" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Informacional" #: prewikka/dataprovider/idmef.py:157 msgid "Provides an API to fetch IDMEF alerts" msgstr "" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "Alertas" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Classificação" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "IP fonte" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Porta fonte" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "IP alvo" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Porta alvo" #: prewikka/dataprovider/idmef.py:170 #, fuzzy msgid "Analyzer name" msgstr "Tempo de análise" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Lista de alertas" #: prewikka/dataprovider/idmef.py:199 msgid "Provides an API to fetch IDMEF heartbeats" msgstr "" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "Heartbeats" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Análise de Heartbeats" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Registros" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 msgid "Message" msgstr "Mensagem" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Host" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Programa" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "" #: prewikka/dataprovider/utils.py:50 msgid "Invalid operation" msgstr "Operação inválida" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 #, fuzzy msgid "Invalid configuration" msgstr "Configuração" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 #, fuzzy msgid "Missing configuration" msgstr "Configuração" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 msgid "Request error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 msgid "The specified Elasticsearch index does not exist" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 #, fuzzy msgid "Dataprovider error" msgstr "filtrado" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 msgid "Lucene emulation error" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 #, fuzzy msgid "Filters management page" msgstr "Filtro no agente" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Preferências" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Filtros" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Filtro %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, fuzzy msgid "Filter error" msgstr "filtrado" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Novo filtro" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Nome:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Nome de filtro" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Categoria:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Descrição:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Cancelar" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Salvar" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Nome" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Categoria" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Descrição" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Criar" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Duplicar" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Apagar" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Filtro:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Filtros disponíveis" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Sem filtro" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Sem categoria" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "" #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "valor" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "AND" msgstr "E" #: prewikka/plugins/filter/templates/widget.mak:45 msgid "OR" msgstr "OU" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:19 msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:21 #, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 msgid "ChartJS renderer backend" msgstr "" #: prewikka/renderer/chartjs/bar/__init__.py:38 msgid "ChartJS Bar renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:76 msgid "ChartJS Pie renderer type" msgstr "" #: prewikka/renderer/chartjs/pie/__init__.py:85 msgid "ChartJS Doughnut renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:85 msgid "ChartJS Timeline renderer type" msgstr "" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Sessão inválida" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Sessão expirada" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Deslogado" #: prewikka/session/anonymous/anonymous.py:31 #, fuzzy msgid "Anonymous authentication" msgstr "A auntenticação falhou" #: prewikka/session/loginform/__init__.py:35 #, fuzzy msgid "Login/Password authentication" msgstr "A auntenticação falhou" #: prewikka/session/loginform/templates/loginform.mak:17 #, fuzzy msgid "User authentication" msgstr "A auntenticação falhou" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Usuário" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Senha" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Usuário" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "nome" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "Sobre" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Sair" #: prewikka/templates/error.mak:66 #, fuzzy msgid "Detail" msgstr "Alertas" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 #, fuzzy msgid "Sign in" msgstr "Origem" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Refrescar:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Período:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Período para visualizar" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Início:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "início" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Data de início" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Fim:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "fim" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Data final" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "" #: prewikka/templates/toplayout.mak:73 msgid "Prelude Dialog" msgstr "" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 msgid "Connection error" msgstr "" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Desligado" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Desconhecido" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Perdido" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Conectado" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "" #: prewikka/views/about/templates/about.mak:15 msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" #: prewikka/views/about/templates/about.mak:21 msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" #: prewikka/views/about/templates/about.mak:26 msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "" #: prewikka/views/about/templates/about.mak:32 msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Contato" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Telefone:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Fax:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Porta fonte" #: prewikka/views/about/templates/about.mak:55 #, fuzzy msgid "Community" msgstr "Comando" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Fechar" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:47 #, fuzzy msgid "Apps: Authentication" msgstr "A auntenticação falhou" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Apps" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "" #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 #, fuzzy msgid "ERROR" msgstr "Operador" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 #, fuzzy msgid "Update failed" msgstr "falhou" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 #, fuzzy msgid "Update Dialog" msgstr "falhou" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 #, fuzzy msgid "Script" msgstr "Descrição" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Versão" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 #, fuzzy msgid "Current database version" msgstr "Versão do banco de dados" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Apps instaladas" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Versão do banco de dados" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Ativo" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Atualizar" #: prewikka/views/agents/__init__.py:12 #, fuzzy msgid "Agents status information page" msgstr "Endereço da informação" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Agentes" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Nome do nó n/a" #: prewikka/views/agents/agents.py:111 #, fuzzy msgid "OS version n/a" msgstr "Sessão inválida" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Sistema Operacional n/a" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Localização do nó n/a" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Lista de alertas" #: prewikka/views/agents/agents.py:128 #, fuzzy msgid "Heartbeat listing" msgstr "Análise de Heartbeats" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Análise de Heartbeats" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Monitoramento" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 #, fuzzy msgid "Search:" msgstr "Status" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Localização" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Nó" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Modelo" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Classe" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 #, fuzzy msgid "Latest heartbeat" msgstr "Heartbeats" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Status" #: prewikka/views/agents/templates/agents.mak:90 msgid "Delete the alerts of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:94 msgid "Delete the heartbeats of the selected agent(s)" msgstr "" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 #, fuzzy msgid "OS" msgstr "TOS" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Nome do nó" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Localização do nó" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Endereço do nó" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "Situação atual" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "Eventos" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Filtro no agente" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Configuração" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "Pendente" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Erro" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "personalizado" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "desativado" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Minuto:" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Hora:" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "Dia:" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Mês:" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "Dia da semana:" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Usuário" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:70 #, fuzzy msgid "Enable" msgstr "Nome" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Lista de alertas" #: prewikka/views/datasearch/alert.py:124 #, fuzzy msgid "Aggregated alerts" msgstr "AlertasDeCorrelação" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Severidade" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Data" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Fonte" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Alvo" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Analisador" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 #, fuzzy msgid "Low severity" msgstr "Severidade" #: prewikka/views/datasearch/alert.py:228 #, fuzzy msgid "Medium severity" msgstr "Severidade" #: prewikka/views/datasearch/alert.py:229 #, fuzzy msgid "High severity" msgstr "Severidade" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "minuto" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "hora" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "dia" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "mês" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "ano" #: prewikka/views/datasearch/datasearch.py:189 msgid "Time group error" msgstr "" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "Painel de controle" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Análise de Heartbeats" #: prewikka/views/datasearch/heartbeat.py:53 #, fuzzy msgid "Aggregated heartbeats" msgstr "Heartbeats" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Agente" #: prewikka/views/datasearch/heartbeat.py:66 msgid "Delete the selected heartbeats?" msgstr "" #: prewikka/views/datasearch/idmef.py:46 #, fuzzy msgid "See IDMEF details" msgstr "Alertas" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Lista de alertas" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Registro" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Contexto" #: prewikka/views/datasearch/log.py:116 #, fuzzy msgid "Syslog export" msgstr "Conclusão" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Agrupar por %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "Campos" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 #, fuzzy msgid "Count" msgstr "Contato" #: prewikka/views/datasearch/templates/forensic.mak:79 #, fuzzy msgid "Chart type" msgstr "Data de início" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Limite" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 #, fuzzy msgid "Search" msgstr "Status" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Agrupar por" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 #, fuzzy msgid "Time values" msgstr "valor" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 #, fuzzy msgid "Timeline" msgstr "Tempo" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Ações" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Informações" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "Campo" #: prewikka/views/datasearch/templates/infos.mak:9 #, fuzzy msgid "Occurrence" msgstr "Fonte" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Ajuda" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "AlertasDeCorrelação" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Código" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Tamanho dos dados" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Dados" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(hora do sensor: %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Tempo de criação" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Tempo de descobrimento" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Tempo de análise" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Processo" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Caminho do processo" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "PID do processo" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Nome do nó (resolvido)" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "Analisador id" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Fabricante" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Sistema Operacional" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Caminho do analisador (%d não mostrado)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Analisador #%d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Dados adicionais" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Querendo dizer" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Valor" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Compimento do cabeçalho" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "TOS" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Comprimento" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "Id" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "Ip offset" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "TTL" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Protocolo" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Checksum" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Endereço fonte" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Endereço alvo" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Reservado" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Janela" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "URP" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Tipo" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "Seq #" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Máscara" #: prewikka/views/messagesummary/messagesummary.py:596 #, fuzzy msgid "Gateway Address" msgstr "Endereço do nó" #: prewikka/views/messagesummary/messagesummary.py:597 #, fuzzy msgid "Num address" msgstr "Endereço do nó" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "Wpa" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Tempo de vida" #: prewikka/views/messagesummary/messagesummary.py:600 #, fuzzy msgid "Otime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:601 #, fuzzy msgid "Rtime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:602 #, fuzzy msgid "Ttime" msgstr "Tempo" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Carga exigida" #: prewikka/views/messagesummary/messagesummary.py:661 #, fuzzy msgid "Alert details" msgstr "Alertas" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:670 #, python-format msgid "%d linked alerts omitted" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Alerta de Correlação" #: prewikka/views/messagesummary/messagesummary.py:693 #, fuzzy msgid "Correlated Alerts" msgstr "AlertasDeCorrelação" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Analisador da fonte" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Alerta das Ferramentas" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Alertas ligados" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Texto" #: prewikka/views/messagesummary/messagesummary.py:723 #, fuzzy msgid "Ident" msgstr "Agente" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "Origem" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Conclusão" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Categoria do usuário" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Número" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "Tty" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Permissão" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Mudar o tempo" #: prewikka/views/messagesummary/messagesummary.py:835 #, fuzzy msgid "Inode Number" msgstr "Nome do nó" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "Dispositivo importante" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "Dispositivo secundário" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "C Dispositivo importante" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "C Dispositivo secundário" #: prewikka/views/messagesummary/messagesummary.py:843 #, fuzzy, python-format msgid "Target file %s" msgstr "Alvo" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "categoria" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Caminho" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Tempo modificado" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Tempo de acesso" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Tamanho dos dados" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Tamanho do disco" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Serviço da WEB" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "Url" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "Cgi" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Método HTTP" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Argumento CGI" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "Serviço SNMP" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "oid" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "messageProcessingModel" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "securityModel" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "securityName" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "securityLevel" #: prewikka/views/messagesummary/messagesummary.py:896 #, fuzzy msgid "contextName" msgstr "Nome do nó" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "contextEngineID" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "Comando" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Porta" #: prewikka/views/messagesummary/messagesummary.py:932 #, fuzzy msgid "PortList" msgstr "Porta" #: prewikka/views/messagesummary/messagesummary.py:935 #, fuzzy msgid "ip_version" msgstr "Permissões:" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Fonte(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Alvo(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Estouro de alerta" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Alerta" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 #, fuzzy msgid "Network centric information" msgstr "Informações sobre a conta" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "Carga gasta ASCII" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "Heartbeat" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Sumário" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Análise de Heartbeats" #: prewikka/views/statistics/alertstats.py:35 msgid "Severities" msgstr "Severidades" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 #, fuzzy msgid "Top {limit} Source Addresses" msgstr "Endereço fonte" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 #, fuzzy msgid "Top {limit} Classifications" msgstr "Classificação" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "" #: prewikka/views/statistics/alertstats.py:226 #, fuzzy msgid "Alert: Severity" msgstr "Severidade" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "" #: prewikka/views/statistics/alertstats.py:266 msgid "Top {limit} Targeted Users" msgstr "" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 msgid "Top {limit} Analyzers" msgstr "" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "" #: prewikka/views/statistics/alertstats.py:314 #, fuzzy msgid "Number of source addresses" msgstr "Endereço fonte" #: prewikka/views/statistics/alertstats.py:321 #, fuzzy msgid "Number of target addresses" msgstr "Endereço alvo" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:347 #, fuzzy msgid "Number of correlation alerts" msgstr "Alerta de Correlação" #: prewikka/views/statistics/alertstats.py:354 msgid "Number of machines/devices" msgstr "" #: prewikka/views/statistics/alertstats.py:361 msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "" #: prewikka/views/statistics/alertstats.py:368 #, fuzzy msgid "Categorizations" msgstr "categoria" #: prewikka/views/statistics/alertstats.py:369 #, fuzzy msgid "Sources" msgstr "Fonte" #: prewikka/views/statistics/alertstats.py:370 #, fuzzy msgid "Targets" msgstr "Alvo" #: prewikka/views/statistics/alertstats.py:371 #, fuzzy msgid "Analyzers" msgstr "Analisador" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Metrologia" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Estatisticas" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "título" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Estatisticas" #: prewikka/views/statistics/statistics.py:131 #, python-format msgid "Could not find chart class: %s" msgstr "" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "Invalid widget" msgstr "Visão inválida" #: prewikka/views/statistics/statistics.py:180 msgid "The widget category does not exist" msgstr "" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 #, fuzzy msgid "Delete this widget?" msgstr "Apagar usuário" #: prewikka/views/usermanagement/__init__.py:14 msgid "User and group management pages" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Controle de acesso" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Usuários" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Grupos" #: prewikka/views/usermanagement/usermanagement.py:94 #, fuzzy, python-format msgid "Edit user %s" msgstr "Filtros" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:229 #, fuzzy msgid "Invalid user" msgstr "Usuário inválido" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Specified user does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Língua inválida" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "Fuso horário inválido" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 #, fuzzy msgid "Password error" msgstr "Nova senha:" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 #, fuzzy msgid "Could not create user" msgstr "Criar usuário" #: prewikka/views/usermanagement/usermanagement.py:294 msgid "Username required" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Minha conta" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "Usuário inválido" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 #, fuzzy msgid "Could not create group" msgstr "Criar grupo" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Criar usuário" #: prewikka/views/usermanagement/templates/userlisting.mak:7 #, fuzzy msgid "Delete the selected users?" msgstr "Apagar usuário" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Nome do grupo" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Criar grupo" #: prewikka/views/usermanagement/templates/userlisting.mak:11 #, fuzzy msgid "Delete the selected groups?" msgstr "Apagar usuário" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Informações sobre a conta" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Usuário:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Grupos:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Informações sobre o grupo" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Nome do grupo:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Membros:" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "informações" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "Email:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "Email" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Idioma:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Tema:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Fuso horário:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Permissões:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Checar todos" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Senha atual:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Senha atual" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Nova senha:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Nova senha" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Confirmação da nova senha:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Confirmação da nova senha" #: scripts/prewikka-cli:60 #, fuzzy msgid "Unknown command" msgstr "Comando" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/locale/ru/0000755000000000000000000000000013726165110016775 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/ru/LC_MESSAGES/0000755000000000000000000000000013726165110020562 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/locale/ru/LC_MESSAGES/prewikka.po0000644000000000000000000026646013726165107022763 0ustar rootroot00000000000000# Russian Translation for Prewikka # Copyright (C) 2007-2020 CS GROUP - France # This file is distributed under the same license as the prewikka package. # bogdanov.valentin@gmail.com, 2007. # # Modification for Prewikka 3.0 by IS-Systems LLC # info@is-systems.org, 2016 msgid "" msgstr "" "Project-Id-Version: Prewikka 5.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 12:22+0200\n" "PO-Revision-Date: 2018-02-09 12:07+0100\n" "Last-Translator: Alex Bochkin \n" "Language-Team: Russian\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" #: prewikka/baseview.py:79 prewikka/usergroup.py:52 #: prewikka/views/usermanagement/usermanagement.py:112 #: prewikka/views/usermanagement/usermanagement.py:142 #: prewikka/views/usermanagement/usermanagement.py:232 #: prewikka/views/usermanagement/usermanagement.py:327 #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Permission Denied" msgstr "Недостаточно прав" #: prewikka/baseview.py:79 msgid "Missing permission to access the specified file" msgstr "" #: prewikka/config.py:37 prewikka/dataprovider/__init__.py:661 #: prewikka/dataprovider/helpers/elasticsearch.py:905 msgid "Configuration error" msgstr "Ошибка конфигурации" #: prewikka/config.py:43 #, python-format msgid "Parse error in \"%(txt)s\" at %(file)s line %(line)d" msgstr "Ошибка обработки в \"%(txt)s\" в %(file)s строка %(line)d" #: prewikka/config.py:48 prewikka/view.py:82 #, python-format msgid "Invalid value '%(value)s' for parameter '%(name)s'" msgstr "Неверное значение '%(value)s' для параметра '%(name)s'" #: prewikka/config.py:54 #, python-format msgid "Missing value for parameter '%(name)s'" msgstr "Недостающее значение для параметра '%(name)s'" #: prewikka/crontab.py:37 msgid "Hourly" msgstr "Часовой" #: prewikka/crontab.py:38 msgid "Daily" msgstr "Cуточный" #: prewikka/crontab.py:39 msgid "Weekly" msgstr "Недельный" #: prewikka/crontab.py:40 msgid "Monthly" msgstr "Месячный" #: prewikka/crontab.py:41 msgid "Yearly" msgstr "Годовой" #: prewikka/crontab.py:42 prewikka/mainmenu.py:302 #: prewikka/templates/mainmenu.mak:92 msgid "Custom" msgstr "Настраиваемый" #: prewikka/crontab.py:43 prewikka/views/crontab/__init__.py:84 msgid "Disabled" msgstr "Выключено" #: prewikka/crontab.py:113 msgid "Scheduled job execution failed" msgstr "" #: prewikka/crontab.py:146 #, fuzzy msgid "Invalid job extension" msgstr "Неверная сессия" #: prewikka/crontab.py:146 #, python-format msgid "Scheduled job with invalid extension type '%s'" msgstr "" #: prewikka/crontab.py:216 #, fuzzy msgid "Invalid CronJob" msgstr "Неверная сессия" #: prewikka/crontab.py:216 #, python-format msgid "CronJob with id=%d cannot be found in database" msgstr "" #: prewikka/crontab.py:267 #, fuzzy msgid "Invalid schedule" msgstr "Неверный пользователь" #: prewikka/crontab.py:267 msgid "The specified job schedule is invalid" msgstr "" #: prewikka/crontab.py:298 #, python-format msgid "Custom (%s)" msgstr "Настраиваемый (%s)" #: prewikka/database.py:43 msgid "Database error" msgstr "Ошибка базы данных" #: prewikka/database.py:50 msgid "Database schema error" msgstr "Ошибка схемы базы данных" #: prewikka/database.py:293 msgid "database installation required" msgstr "Необходима установка базы данных" #: prewikka/database.py:296 msgid "database activation required" msgstr "Требуется активация базы данных" #: prewikka/database.py:299 #, python-format msgid "database schema branch %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:305 #, python-format msgid "database schema version %(required)s required (found %(current)s)" msgstr "" #: prewikka/database.py:372 msgid "Database installation error" msgstr "Ошибка установки базы данных" #: prewikka/database.py:374 #, python-format msgid "" "No database installation script found for module %(module)s, version " "%(version)s" msgstr "" "Не найдет скрипт установки базы данных для модуля %(module)s, version " "%(version)s" #: prewikka/database.py:382 prewikka/database.py:420 msgid "Database migration error" msgstr "Ошибка миграции базы данных" #: prewikka/database.py:386 #, fuzzy, python-format msgid "" "No database branch migration script found for module %(module)s, branch " "transition %(current)s -> %(required)s" msgstr "" "Не найдет скрипт установки базы данных для модуля %(module)s, version " "%(version)s" #: prewikka/database.py:424 #, python-format msgid "" "No linear migration script found for module %(module)s %(version1)s -> " "%(version2)s" msgstr "" #: prewikka/database.py:841 #, fuzzy msgid "Database configuration error" msgstr "Ошибка миграции базы данных" #: prewikka/database.py:841 msgid "Only MySQL and PostgreSQL databases are supported at the moment" msgstr "" #: prewikka/error.py:48 prewikka/templates/error.mak:139 msgid "An unexpected condition happened" msgstr "" #: prewikka/error.py:148 msgid "Not implemented" msgstr "" #: prewikka/error.py:150 msgid "Backend does not implement this operation" msgstr "" #: prewikka/history.py:32 msgid "Search history deletion" msgstr "" #: prewikka/localization.py:143 msgid "%m/%Y" msgstr "%m.%Y" #: prewikka/localization.py:144 #, python-format msgid "%m/%d/%Y" msgstr "%d.%m.%Y" #: prewikka/localization.py:145 #, python-format msgid "%m/%d/%Y %Hh" msgstr "%d.%m.%Y %H:00" #: prewikka/localization.py:146 #, python-format msgid "%m/%d/%Y %H:%M" msgstr "%d.%m.%Y %H:%M" #: prewikka/localization.py:147 #, python-format msgid "%m/%d/%Y %H:%M:%S" msgstr "%d.%m.%Y %H:%M:%S" #: prewikka/localization.py:149 msgid "%H:%M" msgstr "%H:%M" #: prewikka/localization.py:150 msgid "%H:%M:%S" msgstr "%H:%M:%S" #: prewikka/localization.py:235 prewikka/localization.py:253 #: prewikka/renderer/__init__.py:62 prewikka/views/crontab/__init__.py:95 #: prewikka/views/statistics/alertstats.py:138 #: prewikka/views/statistics/alertstats.py:157 msgid "n/a" msgstr "" #: prewikka/localization.py:246 #, python-format msgid "%(days)dd %(hours)dh %(minutes)d'" msgstr "" #: prewikka/main.py:127 prewikka/main.py:152 #: prewikka/dataprovider/plugins/idmef/__init__.py:73 msgid "Initialization error" msgstr "Ошибка инициализации" #: prewikka/main.py:138 msgid "Version Requirement error" msgstr "Ошибка соответствия версии" #: prewikka/main.py:141 #, python-format msgid "Prewikka %(vPre)s requires libprelude %(vLib)s or higher" msgstr "Prewikka %(vPre)s требует libprelude %(vLib)s или выше" #: prewikka/main.py:146 #, python-format msgid "Prewikka %(vPre)s requires libpreludedb %(vLib)s or higher" msgstr "Prewikka %(vPre)s требует libpreludedb %(vLib)s или выше" #: prewikka/main.py:153 #, python-format msgid "" "Cannot use %(type)s mode '%(name)s', please contact your local " "administrator." msgstr "" #: prewikka/main.py:192 #, python-format msgid "Session '%s' does not accept any authentication module" msgstr "Сессия '%s' не принимает ни одного модуля аутентификации" #: prewikka/main.py:308 #, python-format msgid "An unexpected condition happened while trying to load %s" msgstr "" #: prewikka/mainmenu.py:114 #, python-format msgid "%S.%.6f" msgstr "" #: prewikka/mainmenu.py:115 #, python-format msgid "%S.%.3f" msgstr "" #: prewikka/mainmenu.py:260 msgid "Today" msgstr "Cегодня" #: prewikka/mainmenu.py:261 msgid "Yesterday" msgstr "Вчера" #: prewikka/mainmenu.py:262 msgid "This week" msgstr "Этой неделе" #: prewikka/mainmenu.py:263 msgid "Last week" msgstr "Прошлая неделя" #: prewikka/mainmenu.py:264 msgid "This month" msgstr "Этот месяц" #: prewikka/mainmenu.py:265 msgid "Last month" msgstr "Прошлый месяц" #: prewikka/mainmenu.py:266 prewikka/mainmenu.py:267 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d час" msgstr[1] "%d часа" msgstr[2] "%d часов" #: prewikka/mainmenu.py:268 prewikka/mainmenu.py:269 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d дней" #: prewikka/mainmenu.py:270 #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d неделя" msgstr[1] "%d недели" msgstr[2] "%d недель" #: prewikka/mainmenu.py:271 prewikka/mainmenu.py:272 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d месяц" msgstr[1] "%d месяца" msgstr[2] "%d месяцев" #: prewikka/mainmenu.py:273 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d год" msgstr[1] "%d года" msgstr[2] "%d лет" #: prewikka/mainmenu.py:277 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунды" msgstr[2] "%d секунд" #: prewikka/mainmenu.py:278 prewikka/mainmenu.py:279 prewikka/mainmenu.py:280 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d минута" msgstr[1] "%d минуты" msgstr[2] "%d минут" #: prewikka/mainmenu.py:299 prewikka/templates/mainmenu.mak:61 msgid "Inactive" msgstr "Неактивный" #: prewikka/mainmenu.py:305 prewikka/templates/mainmenu.mak:89 msgid "None" msgstr "Никто" #: prewikka/menu.py:71 prewikka/menu.py:74 prewikka/menu.py:80 #: prewikka/menu.py:84 prewikka/menu.py:92 #, fuzzy msgid "Menu error" msgstr "Внутренняя ошибка Prelude" #: prewikka/menu.py:71 msgid "The provided YAML menu is invalid" msgstr "" #: prewikka/menu.py:74 msgid "Empty menu" msgstr "" #: prewikka/menu.py:80 #, python-format msgid "Menu without a name in %s" msgstr "" #: prewikka/menu.py:84 msgid "Multiple default menus" msgstr "" #: prewikka/menu.py:92 msgid "Multiple default views" msgstr "" #: prewikka/pluginmanager.py:208 #, python-format msgid "Circular dependencies detected: %s" msgstr "" #: prewikka/pluginmanager.py:216 #, python-format msgid "Missing dependency: %s" msgstr "" #: prewikka/resolve.py:170 #, python-format msgid "" "Asynchronous DNS resolution disabled: twisted.names and twisted.internet " "required: %s" msgstr "" #: prewikka/usergroup.py:44 #, python-format msgid "Access to view '%(view)s' forbidden. Required permissions: %(permissions)s" msgstr "Просмотр '%(view)s' запрещен. Требуемые права : %(permissions)s" #: prewikka/usergroup.py:47 #, python-format msgid "Access to view '%s' forbidden" msgstr "Просмотр '%s' запрещен" #: prewikka/usergroup.py:50 #, python-format msgid "Required permissions: %s" msgstr "Требуемые права: %s" #: prewikka/view.py:74 prewikka/view.py:81 prewikka/view.py:88 msgid "Parameters Normalization failed" msgstr "Ошибка нормализации параметров" #: prewikka/view.py:75 #, python-format msgid "Parameter '%s' is not valid" msgstr "Параметр '%s' неверен" #: prewikka/view.py:89 #, python-format msgid "Required parameter '%s' is missing" msgstr "Требуемый параметр '%s' отсутствует" #: prewikka/view.py:95 #, fuzzy msgid "Invalid method" msgstr "неверная временная зона" #: prewikka/view.py:102 msgid "Invalid view" msgstr "Неверное отображение" #: prewikka/view.py:547 #, python-format msgid "Method '%(method)s' is not allowed for view '%(view)s'" msgstr "" #: prewikka/view.py:551 prewikka/view.py:650 #, python-format msgid "View '%s' does not exist" msgstr "Отображение '%s' не существует" #: prewikka/auth/auth.py:30 msgid "Authentication failed" msgstr "Ошибка аутентификации" #: prewikka/auth/dbauth/__init__.py:33 msgid "Authentication management with local user / group database" msgstr "" "Управление аутентификацией с помощью базы данных локальных " "пользователей/групп" #: prewikka/auth/dbauth/__init__.py:50 msgid "DBAuth initialization error" msgstr "Ошибка инициализации DBAuth" #: prewikka/auth/dbauth/__init__.py:152 #, fuzzy msgid "No login name provided" msgstr "Не указано имя группы" #: prewikka/dataprovider/__init__.py:35 msgid "Equal" msgstr "Равно" #: prewikka/dataprovider/__init__.py:36 msgid "Equal (case-insensitive)" msgstr "Соответствует (нечувствительная к регистру)" #: prewikka/dataprovider/__init__.py:37 msgid "Not equal" msgstr "Не соответствует" #: prewikka/dataprovider/__init__.py:38 msgid "Not equal (case-insensitive)" msgstr "Не соответствует (нечувствительная к регистру)" #: prewikka/dataprovider/__init__.py:39 msgid "Regular expression" msgstr "Регулярное выражение" #: prewikka/dataprovider/__init__.py:40 msgid "Regular expression (case-insensitive)" msgstr "Регулярное выражение (нечувствительное к регистру)" #: prewikka/dataprovider/__init__.py:41 msgid "Not regular expression" msgstr "Не регулярное выражение" #: prewikka/dataprovider/__init__.py:42 msgid "Not regular expression (case-insensitive)" msgstr "Не регулярное выражение (нечувствительное к регистру)" #: prewikka/dataprovider/__init__.py:43 msgid "Lesser than" msgstr "Меньше чем" #: prewikka/dataprovider/__init__.py:44 msgid "Lesser or equal" msgstr "Меньше или равно" #: prewikka/dataprovider/__init__.py:45 msgid "Greater than" msgstr "Больше чем" #: prewikka/dataprovider/__init__.py:46 msgid "Greater or equal" msgstr "Больше или равно" #: prewikka/dataprovider/__init__.py:47 msgid "Substring" msgstr "Подстрока" #: prewikka/dataprovider/__init__.py:48 msgid "Substring (case-insensitive)" msgstr "Подстрока (нечувствительная к регистру)" #: prewikka/dataprovider/__init__.py:49 msgid "Not substring" msgstr "Не подстрока" #: prewikka/dataprovider/__init__.py:50 msgid "Not substring (case-insensitive)" msgstr "Не подстрока (нечувствительная к регистру)" #: prewikka/dataprovider/__init__.py:92 prewikka/dataprovider/__init__.py:158 msgid "Conversion error" msgstr "Ошибка конвертации" #: prewikka/dataprovider/__init__.py:93 prewikka/dataprovider/__init__.py:159 #, python-format msgid "Value %(value)r cannot be converted to %(type)s" msgstr "" #: prewikka/dataprovider/__init__.py:109 msgid "Backend error" msgstr "Ошибка бэкэнда" #: prewikka/dataprovider/__init__.py:109 #, fuzzy, python-format msgid "No backend available for '%s' datatype" msgstr "Не сконфигурирован обработчик для '%s' типа данных" #: prewikka/dataprovider/__init__.py:116 prewikka/dataprovider/__init__.py:123 msgid "Syntax error" msgstr "Ошибка синтаксиса" #: prewikka/dataprovider/__init__.py:116 #, python-format msgid "Unknown path: %s" msgstr "Неизвестный путь: %s" #: prewikka/dataprovider/__init__.py:123 scripts/prewikka-cli:117 #: scripts/prewikka-cli:126 scripts/prewikka-cli:137 #, fuzzy msgid "Could not parse input" msgstr "Невозможно сохранить фильтр" #: prewikka/dataprovider/__init__.py:651 #, python-format msgid "No handler configured for '%s' datatype" msgstr "Не сконфигурирован обработчик для '%s' типа данных" #: prewikka/dataprovider/__init__.py:662 #, python-format msgid "Only one manager should be configured for '%s' backend" msgstr "Только один менеджер может быть сконфигурирован для '%s' бэкенда" #: prewikka/dataprovider/idmef.py:144 msgid "High" msgstr "Высокий" #: prewikka/dataprovider/idmef.py:145 msgid "Medium" msgstr "Средний" #: prewikka/dataprovider/idmef.py:146 msgid "Low" msgstr "Низкий" #: prewikka/dataprovider/idmef.py:147 msgid "Informational" msgstr "Информационный" #: prewikka/dataprovider/idmef.py:157 #, fuzzy msgid "Provides an API to fetch IDMEF alerts" msgstr "Предоставляет API для получения событий безопасности" #: prewikka/dataprovider/idmef.py:158 #: prewikka/views/agents/templates/agents.mak:90 #: prewikka/views/datasearch/alert.py:123 #: prewikka/views/datasearch/alert.py:124 #: prewikka/views/datasearch/alert.py:242 #: prewikka/views/statistics/alertstats.py:382 msgid "Alerts" msgstr "События" #: prewikka/dataprovider/idmef.py:165 prewikka/views/datasearch/alert.py:137 msgid "Classification" msgstr "Классификация" #: prewikka/dataprovider/idmef.py:166 msgid "Source IP" msgstr "IP источника" #: prewikka/dataprovider/idmef.py:167 #: prewikka/views/messagesummary/messagesummary.py:561 #: prewikka/views/messagesummary/messagesummary.py:582 msgid "Source port" msgstr "Порт источника" #: prewikka/dataprovider/idmef.py:168 msgid "Target IP" msgstr "IP цели" #: prewikka/dataprovider/idmef.py:169 #: prewikka/views/messagesummary/messagesummary.py:562 #: prewikka/views/messagesummary/messagesummary.py:583 msgid "Target port" msgstr "Порт цели" #: prewikka/dataprovider/idmef.py:170 #, fuzzy msgid "Analyzer name" msgstr "Имя анализатора" #: prewikka/dataprovider/idmef.py:173 #, fuzzy msgid "Alert deletion" msgstr "Список событий" #: prewikka/dataprovider/idmef.py:199 #, fuzzy msgid "Provides an API to fetch IDMEF heartbeats" msgstr "Предоставляет API для получения событий безопасности" #: prewikka/dataprovider/idmef.py:200 #: prewikka/views/agents/templates/agents.mak:94 #: prewikka/views/datasearch/heartbeat.py:53 msgid "Heartbeats" msgstr "События состояния" #: prewikka/dataprovider/idmef.py:205 #, fuzzy msgid "Heartbeat deletion" msgstr "Анализ событий состояния" #: prewikka/dataprovider/log.py:41 msgid "Provides an API to fetch logs" msgstr "Предоставляет API для получения логов" #: prewikka/dataprovider/log.py:42 prewikka/views/datasearch/log.py:50 #: prewikka/views/datasearch/log.py:51 msgid "Logs" msgstr "Логи" #: prewikka/dataprovider/log.py:49 prewikka/views/datasearch/log.py:60 #, fuzzy msgid "Message" msgstr "Использование RAM" #: prewikka/dataprovider/log.py:50 prewikka/views/datasearch/log.py:58 msgid "Host" msgstr "Хост" #: prewikka/dataprovider/log.py:51 prewikka/views/datasearch/log.py:59 msgid "Program" msgstr "Программа" #: prewikka/dataprovider/log.py:52 msgid "Timestamp" msgstr "" #: prewikka/dataprovider/utils.py:50 #, fuzzy msgid "Invalid operation" msgstr "Неверный выбор пути" #: prewikka/dataprovider/utils.py:51 msgid "Extraction is supported only for date fields" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:88 #: prewikka/dataprovider/helpers/elasticsearch.py:139 #: prewikka/dataprovider/helpers/elasticsearch.py:231 #: prewikka/dataprovider/helpers/elasticsearch.py:877 #, fuzzy msgid "Invalid configuration" msgstr "Отсутствует конфигурация" #: prewikka/dataprovider/helpers/elasticsearch.py:89 msgid "Elasticsearch instance must be named" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:96 msgid "Missing configuration" msgstr "Отсутствует конфигурация" #: prewikka/dataprovider/helpers/elasticsearch.py:97 #, python-format msgid "Could not find a valid configuration for Elasticsearch %s type." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:140 #, python-format msgid "Elasticsearch version %s is not supported." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:162 #: prewikka/dataprovider/helpers/elasticsearch.py:167 #: prewikka/dataprovider/helpers/elasticsearch.py:188 #: prewikka/dataprovider/helpers/elasticsearch.py:211 msgid "Request error" msgstr "ошибка запроса" #: prewikka/dataprovider/helpers/elasticsearch.py:186 #: prewikka/dataprovider/helpers/elasticsearch.py:205 msgid "Cannot further browse results. Please use a more specific filter." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:192 #, python-format msgid "Request error with HTTP code %d." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:202 msgid "Malformed query." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:207 #, python-format msgid "Request error with HTTP code %d. Reason: %s" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:209 #, python-format msgid "Request error with HTTP code %d. Unknown reason" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:232 #, fuzzy msgid "The specified Elasticsearch index does not exist" msgstr "Выбранная временная зона не существует" #: prewikka/dataprovider/helpers/elasticsearch.py:462 msgid "Elasticsearch database operator error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:463 #, python-format msgid "" "The operator '%s' that you try to use is not supported by Prelude for the" " field '%s'." msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Only one _raw_query path can be specified for the selection" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:475 msgid "Elasticsearch database path selection error" msgstr "" #: prewikka/dataprovider/helpers/elasticsearch.py:906 msgid "In your Elasticsearch instance, fields mapping is not well configured." msgstr "" #: prewikka/dataprovider/helpers/sql.py:174 #, fuzzy msgid "Dataprovider error" msgstr "Плаины типы провайдера данных" #: prewikka/dataprovider/helpers/sql.py:175 msgid "Could not find time bounds in CTE query" msgstr "" #: prewikka/dataprovider/parsers/lucene/__init__.py:52 #, fuzzy msgid "Lucene emulation error" msgstr "Ошибка нормализации на бэкенде" #: prewikka/dataprovider/parsers/lucene/__init__.py:53 msgid "" "This Lucene expression cannot be emulated properly using the Criterion " "backend" msgstr "" #: prewikka/dataprovider/plugins/idmef/__init__.py:113 #, fuzzy msgid "Plugin for fetching IDMEF alerts from the Prelude database" msgstr "Плагин для получения событий IDMEF из базы данных Prelude" #: prewikka/dataprovider/plugins/idmef/__init__.py:127 #, fuzzy msgid "Plugin for fetching IDMEF heartbeats from the Prelude database" msgstr "Плагин для получения событий IDMEF из базы данных Prelude" #: prewikka/dataprovider/plugins/log/elasticsearch.py:33 msgid "Plugin for querying logs from Elasticsearch" msgstr "" #: prewikka/plugins/filter/__init__.py:14 msgid "Filters management page" msgstr "Страница управления фильтрами" #: prewikka/plugins/filter/filter.py:111 #: prewikka/views/usermanagement/usermanagement.py:307 msgid "Preferences" msgstr "Преферанс" #: prewikka/plugins/filter/filter.py:111 #: prewikka/plugins/filter/templates/filterlisting.mak:17 msgid "Filters" msgstr "Фильтры" #: prewikka/plugins/filter/filter.py:122 #: prewikka/plugins/filter/templates/filteredition.mak:66 #, python-format msgid "Filter %s" msgstr "Фильтр %s" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 msgid "Filter error" msgstr "Ошибка фильтра" #: prewikka/plugins/filter/filter.py:193 prewikka/plugins/filter/filter.py:211 #, python-format msgid "Filter '%s' does not exist" msgstr "Фильтр '%s' не существует" #: prewikka/plugins/filter/filter.py:233 prewikka/plugins/filter/filter.py:235 #: prewikka/plugins/filter/filter.py:247 msgid "Could not save filter" msgstr "Невозможно сохранить фильтр" #: prewikka/plugins/filter/filter.py:233 msgid "No name for this filter was provided" msgstr "Не введено имя фильтра" #: prewikka/plugins/filter/filter.py:235 msgid "The filter name cannot start with a slash" msgstr "" #: prewikka/plugins/filter/filter.py:247 msgid "The filter name is already used by another filter" msgstr "Имя данного фильтра уже существует" #: prewikka/plugins/filter/templates/filteredition.mak:66 #: prewikka/plugins/filter/templates/filterlisting.mak:17 #: prewikka/plugins/filter/templates/menu.mak:48 msgid "New filter" msgstr "Новый фильтр" #: prewikka/plugins/filter/templates/filteredition.mak:73 #: prewikka/views/crontab/templates/cronjob.mak:112 #: prewikka/views/usermanagement/templates/usersettings.mak:80 msgid "Name:" msgstr "Имя:" #: prewikka/plugins/filter/templates/filteredition.mak:75 msgid "Filter name" msgstr "Фильтровать по:" #: prewikka/plugins/filter/templates/filteredition.mak:80 msgid "Category:" msgstr "Категория:" #: prewikka/plugins/filter/templates/filteredition.mak:92 msgid "Description:" msgstr "Описание:" #: prewikka/plugins/filter/templates/filteredition.mak:122 #: prewikka/templates/error.mak:176 prewikka/templates/toplayout.mak:61 #: prewikka/views/crontab/templates/cronjob.mak:122 #: prewikka/views/usermanagement/templates/usersettings.mak:205 msgid "Cancel" msgstr "Отмена" #: prewikka/plugins/filter/templates/filteredition.mak:123 #: prewikka/views/crontab/templates/cronjob.mak:123 #: prewikka/views/usermanagement/templates/usersettings.mak:197 #: prewikka/views/usermanagement/templates/usersettings.mak:199 #: prewikka/views/usermanagement/templates/usersettings.mak:206 msgid "Save" msgstr "Сохранить" #: prewikka/plugins/filter/templates/filterlisting.mak:23 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:154 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:190 #: prewikka/views/agents/templates/agents.mak:36 #: prewikka/views/agents/templates/heartbeatanalyze.mak:19 #: prewikka/views/crontab/templates/crontab.mak:17 #: prewikka/views/messagesummary/messagesummary.py:295 #: prewikka/views/messagesummary/messagesummary.py:432 #: prewikka/views/messagesummary/messagesummary.py:689 #: prewikka/views/messagesummary/messagesummary.py:706 #: prewikka/views/messagesummary/messagesummary.py:729 #: prewikka/views/messagesummary/messagesummary.py:791 #: prewikka/views/messagesummary/messagesummary.py:810 #: prewikka/views/messagesummary/messagesummary.py:846 #: prewikka/views/usermanagement/templates/usersettings.mak:82 msgid "Name" msgstr "Имя" #: prewikka/plugins/filter/templates/filterlisting.mak:24 #: prewikka/views/messagesummary/messagesummary.py:763 msgid "Category" msgstr "Категория" #: prewikka/plugins/filter/templates/filterlisting.mak:28 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:155 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:191 #: prewikka/views/idmefnav/templates/idmefnav.mak:56 #: prewikka/views/messagesummary/messagesummary.py:758 #: prewikka/views/messagesummary/messagesummary.py:764 msgid "Description" msgstr "Описание" #: prewikka/plugins/filter/templates/filterlisting.mak:40 #: prewikka/views/usermanagement/templates/userlisting.mak:75 msgid "Create" msgstr "Создать" #: prewikka/plugins/filter/templates/filterlisting.mak:41 msgid "Duplicate" msgstr "Дубликат" #: prewikka/plugins/filter/templates/filterlisting.mak:42 msgid "Delete the selected filters?" msgstr "Удалить выбранные фильтры?" #: prewikka/plugins/filter/templates/filterlisting.mak:42 #: prewikka/views/agents/templates/agents.mak:96 #: prewikka/views/datasearch/idmef.py:198 #: prewikka/views/usermanagement/templates/userlisting.mak:78 msgid "Delete" msgstr "Удалить" #: prewikka/plugins/filter/templates/menu.mak:4 msgid "Filter:" msgstr "Фильтр:" #: prewikka/plugins/filter/templates/menu.mak:38 msgid "Available filters" msgstr "Доступные фильтры:" #: prewikka/plugins/filter/templates/menu.mak:46 msgid "No filter" msgstr "Нет фильтра" #: prewikka/plugins/filter/templates/menu.mak:51 msgid "No category" msgstr "Нет категории" #: prewikka/plugins/filter/templates/widget.mak:7 msgid "Select a path..." msgstr "Выберите путь..." #: prewikka/plugins/filter/templates/widget.mak:9 msgid "Default paths" msgstr "Пути по-умолчанию" #: prewikka/plugins/filter/templates/widget.mak:15 msgid "All paths" msgstr "Все пути" #: prewikka/plugins/filter/templates/widget.mak:28 #: prewikka/plugins/filter/templates/widget.mak:49 msgid "Change operator" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:35 msgid "value" msgstr "значение" #: prewikka/plugins/filter/templates/widget.mak:37 msgid "Delete condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:45 #, fuzzy msgid "AND" msgstr "раскрыть" #: prewikka/plugins/filter/templates/widget.mak:45 #, fuzzy msgid "OR" msgstr "Порт" #: prewikka/plugins/filter/templates/widget.mak:59 msgid "Add condition" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:60 msgid "Add group" msgstr "" #: prewikka/plugins/filter/templates/widget.mak:62 msgid "Delete group" msgstr "" #: prewikka/plugins/warning/__init__.py:35 msgid "Prelude Warning message" msgstr "" #: prewikka/plugins/warning/templates/warning.mak:14 msgid "WARNING" msgstr "ВНИМАНИЕ!" #: prewikka/plugins/warning/templates/warning.mak:19 #, fuzzy msgid "Prelude OSS is the open-source version of Prelude SIEM" msgstr "Prelude OSS это версия с открытым исходным кодом приложения Prelude SIEM" #: prewikka/plugins/warning/templates/warning.mak:21 #, fuzzy, python-format msgid "" "This OSS version has lower " "performance and less features than the commercial version." msgstr "" "Эта OSS версия имеет пониженную " "производительность и меньше возможностей чем Pro/Enterprise версия." #: prewikka/plugins/warning/templates/warning.mak:22 msgid "" "It is intended for tests and small environments, and should not be used " "in critical environments." msgstr "" "Предполагается для тестов и небольших окружений. Не следует использовать " "вкритически важных системах" #: prewikka/plugins/warning/templates/warning.mak:25 #, python-format msgid "Prelude OSS is distributed under the %s." msgstr "Prelude OSS распространяется под %s." #: prewikka/plugins/warning/templates/warning.mak:26 msgid "" "Products derivated from Prelude OSS modules are therefore subject to the " "terms of the GPLv2." msgstr "" #: prewikka/plugins/warning/templates/warning.mak:29 #: prewikka/templates/error.mak:171 prewikka/templates/toplayout.mak:62 #: prewikka/templates/toplayout.mak:77 prewikka/templates/toplayout.mak:94 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 msgid "OK" msgstr "" #: prewikka/renderer/__init__.py:44 msgid "No data to display." msgstr "Нет данных для отображения" #: prewikka/renderer/__init__.py:139 prewikka/renderer/__init__.py:143 #: prewikka/renderer/__init__.py:147 msgid "Renderer error" msgstr "Ошибка рендерера" #: prewikka/renderer/__init__.py:140 #, python-format msgid "No backend supporting render type '%s'" msgstr "" #: prewikka/renderer/__init__.py:144 #, python-format msgid "No backend named '%s'" msgstr "" #: prewikka/renderer/__init__.py:148 #, python-format msgid "Backend '%(backend)s' does not support render type '%(type)s'" msgstr "" #: prewikka/renderer/chartjs/__init__.py:104 #, fuzzy msgid "ChartJS renderer backend" msgstr "Плагины рендеринга бэкенда" #: prewikka/renderer/chartjs/bar/__init__.py:38 #, fuzzy msgid "ChartJS Bar renderer type" msgstr "Плагины типа рендеринга" #: prewikka/renderer/chartjs/pie/__init__.py:76 #, fuzzy msgid "ChartJS Pie renderer type" msgstr "Плагины типа рендеринга" #: prewikka/renderer/chartjs/pie/__init__.py:85 #, fuzzy msgid "ChartJS Doughnut renderer type" msgstr "Плагины типа рендеринга" #: prewikka/renderer/chartjs/timeline/__init__.py:85 #, fuzzy msgid "ChartJS Timeline renderer type" msgstr "Плагины типа рендеринга" #: prewikka/renderer/chartjs/timeline/__init__.py:98 msgid "ChartJS Timebar renderer type" msgstr "" #: prewikka/session/session.py:39 msgid "Invalid session" msgstr "Неверная сессия" #: prewikka/session/session.py:40 msgid "The session cookie carried by your browser is invalid" msgstr "" #: prewikka/session/session.py:44 msgid "Session expired" msgstr "Время жизни сессии истекло" #: prewikka/session/session.py:45 msgid "Your session has expired: please sign in again to continue using Prelude" msgstr "" #: prewikka/session/session.py:186 msgid "Logged out" msgstr "Пользователь вышел из системы" #: prewikka/session/anonymous/anonymous.py:31 msgid "Anonymous authentication" msgstr "Анонимная аутентификация" #: prewikka/session/loginform/__init__.py:35 msgid "Login/Password authentication" msgstr "Aутентификация пользователя по логину/паролю" #: prewikka/session/loginform/templates/loginform.mak:17 msgid "User authentication" msgstr "Aутентификация пользователя" #: prewikka/session/loginform/templates/loginform.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:5 #: prewikka/views/usermanagement/templates/usersettings.mak:30 msgid "Login" msgstr "Имя пользователя" #: prewikka/session/loginform/templates/loginform.mak:38 msgid "Password" msgstr "Пароль" #: prewikka/session/loginform/templates/loginform.mak:43 #, fuzzy msgid "Log in" msgstr "Имя пользователя" #: prewikka/templates/baseview.mak:148 msgid "View options" msgstr "" #: prewikka/templates/baseview.mak:151 msgid "View help" msgstr "" #: prewikka/templates/baseview.mak:205 msgid "This app has been disabled or failed to load." msgstr "Это приложение было выключено или возникла ошибка при его загрузке" #: prewikka/templates/baseview.mak:211 prewikka/templates/baseview.mak:222 msgid "name" msgstr "имя" #: prewikka/templates/baseview.mak:287 msgid "About" msgstr "О программе" #: prewikka/templates/baseview.mak:290 msgid "Are you sure you want to log out?" msgstr "Вы уверены что хотите выйти?" #: prewikka/templates/baseview.mak:290 msgid "Logout" msgstr "Выход" #: prewikka/templates/error.mak:66 msgid "Detail" msgstr "Детали" #: prewikka/templates/error.mak:67 msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" #: prewikka/templates/error.mak:137 prewikka/templates/error.mak:145 msgid "Error: {0}" msgstr "Ошибка: {0}" #: prewikka/templates/error.mak:155 msgid "This may be due to one or more of the following reasons:" msgstr "Это может случиться по следующим причинам:" #: prewikka/templates/error.mak:157 msgid "You don't have the required permissions." msgstr "" #: prewikka/templates/error.mak:158 #, python-format msgid "Required apps are disabled. See the %s page for more details." msgstr "" #: prewikka/templates/error.mak:177 msgid "Sign in" msgstr "" #: prewikka/templates/error.mak:181 msgid "Back" msgstr "Назад" #: prewikka/templates/error.mak:184 msgid "Retry" msgstr "Повторная попытка" #: prewikka/templates/error.mak:186 msgid "Redirect to main page" msgstr "" #: prewikka/templates/mainmenu.mak:44 msgid "Refresh:" msgstr "Обновить:" #: prewikka/templates/mainmenu.mak:49 msgid "Update frequency of the current page" msgstr "Частота обновления текущей страницы" #: prewikka/templates/mainmenu.mak:76 msgid "Period:" msgstr "Период:" #: prewikka/templates/mainmenu.mak:81 msgid "Period to visualize" msgstr "Период для визуализации" #: prewikka/templates/mainmenu.mak:111 msgid "Start:" msgstr "Нача́ло:" #: prewikka/templates/mainmenu.mak:117 msgid "start" msgstr "нача́ло" #: prewikka/templates/mainmenu.mak:117 msgid "Start date" msgstr "Дата начала" #: prewikka/templates/mainmenu.mak:123 msgid "End:" msgstr "Конец:" #: prewikka/templates/mainmenu.mak:130 msgid "end" msgstr "конец" #: prewikka/templates/mainmenu.mak:130 msgid "End date" msgstr "Дата окончания" #: prewikka/templates/toplayout.mak:57 msgid "Please Confirm" msgstr "Пожалуйста подтвердите" #: prewikka/templates/toplayout.mak:73 #, fuzzy msgid "Prelude Dialog" msgstr "Внутренняя ошибка Prelude" #: prewikka/templates/toplayout.mak:88 #: prewikka/views/statistics/templates/embeddedstats.mak:41 #: prewikka/views/statistics/templates/statistics.mak:35 #, fuzzy msgid "Connection error" msgstr "Ошибка конфигурации" #: prewikka/templates/toplayout.mak:91 msgid "" "Connection failed, the server may be down or you may be experiencing " "network issues." msgstr "" #: prewikka/utils/misc.py:72 prewikka/views/agents/agents.py:45 msgid "Offline" msgstr "Выключен" #: prewikka/utils/misc.py:75 prewikka/views/agents/agents.py:210 msgid "Unknown" msgstr "Неизвестен" #: prewikka/utils/misc.py:78 msgid "Missing" msgstr "Отсутствует" #: prewikka/utils/misc.py:80 prewikka/views/agents/agents.py:44 msgid "Online" msgstr "Доступен" #: prewikka/views/about/__init__.py:13 msgid "Prelude About page" msgstr "Страница о Prelude" #: prewikka/views/about/templates/about.mak:11 #, python-format msgid "Prelude SIEM version %s" msgstr "Версия Prelude SIEM %s" #: prewikka/views/about/templates/about.mak:15 #, fuzzy msgid "Prelude SIEM is a \"Security Information and Event Management\" system" msgstr "" "Prelude это SIEM (Security Information and Event Management)(Управление " "событиями безопасности)" #: prewikka/views/about/templates/about.mak:21 #, fuzzy msgid "" "{prelude} is a security management solution that collects, filters, " "normalizes, correlates, stores and archives data from various sources of " "your information system. Based on all this information Prelude SIEM can " "provide a global vision of your system's security level and thus prevent " "attacks, intrusions as well as viral infections." msgstr "" "{prelude} это решение управления безопасностью, которое собирает, " "фильтрует и нормализует,коррелирует, хранит и архивирует данные от " "различных источников вашихинформационных систем. Основываясь на данной " "информации Prelude может предоставитьобщий вид уровня безопасности ваших " "систем и соответственно предотвратить атаки, вторжения, а также вирусные " "инфекции." #: prewikka/views/about/templates/about.mak:26 #, fuzzy msgid "Vigilo NMS is a \"Network Monitoring System\"" msgstr "Vigilo это NMS (Network Management System)(Система управления сетью.)" #: prewikka/views/about/templates/about.mak:32 #, fuzzy msgid "" "{vigilo} is a complete monitoring and performance management solution " "capable of handling medium and large-scale systems (network - servers - " "applications) due to its distributed and modular architecture. Vigilo NMS" " offers all the features required for performance supervision: states and" " alarms management, metrology, cartography, event correlation and " "reporting." msgstr "" "{vigilo} представляет собой комплексное решение для мониторинга и " "управления производительностью, способноеобработывать данные средних и " "крупномасштабных систем (сеть, сервера, приложения)благодаря своей " "распределенной и модульной архитектуре. Vigilo предлагает всефункции, " "необходимые для надзора за производительностью: управление состоянием и " "событиями, метрология, картография, корреляция событий и отчетность." #: prewikka/views/about/templates/about.mak:38 #, python-format msgid "" "Prelude SIEM and Vigilo NMS are being developed by the %s company, " "designer, integrator and operator of mission critical systems." msgstr "" "Prelude SIEM и Vigilo NMS разрабатываются в компании %s - дизайнере, " "интеграторе и операторе критически важных систем." #: prewikka/views/about/templates/about.mak:43 msgid "Contact" msgstr "Контакт" #: prewikka/views/about/templates/about.mak:45 msgid "Phone:" msgstr "Телефон:" #: prewikka/views/about/templates/about.mak:46 msgid "Fax:" msgstr "Факс:" #: prewikka/views/about/templates/about.mak:49 #, fuzzy msgid "Corporate" msgstr "Порт источника" #: prewikka/views/about/templates/about.mak:55 #, fuzzy msgid "Community" msgstr "команда" #: prewikka/views/about/templates/about.mak:65 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:132 #: prewikka/views/agents/templates/heartbeatanalyze.mak:71 #: prewikka/views/messagesummary/templates/messagesummary.mak:118 #: prewikka/views/statistics/templates/embeddedstats.mak:61 msgid "Close" msgstr "Закрыть" #: prewikka/views/aboutplugin/__init__.py:37 msgid "Plugin installation and activation management page" msgstr "Страница управления установкой и активацией плагинов" #: prewikka/views/aboutplugin/__init__.py:41 #: prewikka/views/crontab/__init__.py:37 #: prewikka/views/usermanagement/usermanagement.py:26 msgid "USER_MANAGEMENT" msgstr "USER_MANAGEMENT (Управление пользователями)" #: prewikka/views/aboutplugin/__init__.py:43 msgid "Apps: API" msgstr "Плагины API" #: prewikka/views/aboutplugin/__init__.py:44 msgid "Apps: View" msgstr "Плагины просмотра" #: prewikka/views/aboutplugin/__init__.py:45 msgid "Apps: Dataprovider backend" msgstr "Плагины провайдера данных для бэкенда" #: prewikka/views/aboutplugin/__init__.py:46 msgid "Apps: Dataprovider type" msgstr "Плаины типы провайдера данных" #: prewikka/views/aboutplugin/__init__.py:47 msgid "Apps: Authentication" msgstr "Плагины аутентификации пользователя" #: prewikka/views/aboutplugin/__init__.py:48 msgid "Apps: Identification" msgstr "Плагины идентификации" #: prewikka/views/aboutplugin/__init__.py:49 msgid "Apps: Renderer backend" msgstr "Плагины рендеринга бэкенда" #: prewikka/views/aboutplugin/__init__.py:50 msgid "Apps: Renderer type" msgstr "Плагины типа рендеринга" #: prewikka/views/aboutplugin/__init__.py:83 msgid "list plugin: list installed plugins" msgstr "" #: prewikka/views/aboutplugin/__init__.py:92 msgid "Apps" msgstr "Плагины" #: prewikka/views/aboutplugin/__init__.py:121 msgid "sync plugin: initialize the plugin database schemas" msgstr "" #: prewikka/views/aboutplugin/__init__.py:135 #, python-format msgid "Applying %(module)s %(script)s..." msgstr "Применяется %(module)s %(script)s..." #: prewikka/views/aboutplugin/__init__.py:146 msgid "All updates applied" msgstr "Все обновления применены" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:44 #, fuzzy msgid "ERROR" msgstr "Оператор" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:48 msgid "Update failed" msgstr "Ошибка обновления" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:111 #, fuzzy msgid "Update Dialog" msgstr "Журнал обновлений" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:121 msgid "Plugin" msgstr "" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:122 #, fuzzy msgid "Script" msgstr "Описание" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:123 msgid "Result" msgstr "Результат" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:144 msgid "Plugin Maintenance" msgstr "Управление плагинами" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:147 msgid "" "The following apps need to be updated before they can be loaded into the " "system" msgstr "" "Слебующие плагины необходимо обновить прежде чем они могут быть загружены" " в систему" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:156 #: prewikka/views/aboutplugin/templates/aboutplugin.mak:192 #: prewikka/views/agents/templates/agents.mak:40 #: prewikka/views/messagesummary/messagesummary.py:434 #: prewikka/views/messagesummary/messagesummary.py:543 msgid "Version" msgstr "Версия" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:157 msgid "Current database version" msgstr "Текущая версия базы данных" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:158 msgid "Required database update" msgstr "Требуется обновление базы данных" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:174 msgid "Install update" msgstr "Установить обновления" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:182 msgid "Installed Apps" msgstr "Установленные плагины" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:193 msgid "Database version" msgstr "Версия базы данных" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:194 msgid "Active" msgstr "Активный" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update the selected apps?" msgstr "Обновить выбранные плагины?" #: prewikka/views/aboutplugin/templates/aboutplugin.mak:215 msgid "Update" msgstr "Обновить" #: prewikka/views/agents/__init__.py:12 msgid "Agents status information page" msgstr "Страница информации о статусе агентов" #: prewikka/views/agents/agents.py:64 prewikka/views/agents/agents.py:133 msgid "Agents" msgstr "Агенты" #: prewikka/views/agents/agents.py:110 msgid "Node name n/a" msgstr "Имя узла неизвестно" #: prewikka/views/agents/agents.py:111 msgid "OS version n/a" msgstr "Версия ОС неизвестна" #: prewikka/views/agents/agents.py:112 msgid "OS type n/a" msgstr "Тип ОС неизвестен" #: prewikka/views/agents/agents.py:117 msgid "Node location n/a" msgstr "Расположение узла неизвестно" #: prewikka/views/agents/agents.py:127 msgid "Alert listing" msgstr "Список событий" #: prewikka/views/agents/agents.py:128 msgid "Heartbeat listing" msgstr "Анализ событий состояния" #: prewikka/views/agents/agents.py:129 #: prewikka/views/agents/templates/heartbeatanalyze.mak:12 msgid "Heartbeat analysis" msgstr "Анализ событий состояния" #: prewikka/views/agents/agents.py:133 prewikka/views/agents/agents.py:157 #: prewikka/views/datasearch/idmef.py:160 #: prewikka/views/messagesummary/messagesummary.py:339 msgid "IDMEF_VIEW" msgstr "IDMEF_VIEW (Просмотр IDMEF)" #: prewikka/views/agents/agents.py:133 #: prewikka/views/datasearch/heartbeat.py:52 msgid "Monitoring" msgstr "Мониторинг" #: prewikka/views/agents/agents.py:142 msgid "IDMEF_ALTER" msgstr "IDMEF_ALTER (Изменение IDMEF)" #: prewikka/views/agents/agents.py:184 msgid "Normal sensor start" msgstr "Нормальный запуск сенсора" #: prewikka/views/agents/agents.py:186 msgid "Unexpected sensor restart" msgstr "Неожиданный перезапуск сенсора" #: prewikka/views/agents/agents.py:192 #, python-format msgid "Unexpected heartbeat interval: %(delta)s" msgstr "Неожиданный интервал статусного сообщения (heartbeat): %(delta)s" #: prewikka/views/agents/agents.py:195 msgid "Normal sensor stop" msgstr "Нормальная остановка сенсора" #: prewikka/views/agents/agents.py:207 #, python-format msgid "Sensor is down since %s" msgstr "Сенсор недоступен с %s" #: prewikka/views/agents/agents.py:216 #, python-format msgid "" "No anomaly in the last %(count)d heartbeats (one heartbeat every " "%(delta)s average)" msgstr "" "Без аномалий в последних %(count)d статусных сообщениях (heartbeats) " "(одно сообщение каждые %(delta)s в среднем)" #: prewikka/views/agents/templates/agents.mak:31 msgid "Show/Hide all" msgstr "Показать/Скрыть всё" #: prewikka/views/agents/templates/agents.mak:31 #: prewikka/views/usermanagement/templates/userlisting.mak:49 msgid "Search:" msgstr "Поиск:" #: prewikka/views/agents/templates/agents.mak:37 msgid "Location" msgstr "Расположение" #: prewikka/views/agents/templates/agents.mak:38 msgid "Node" msgstr "Узел" #: prewikka/views/agents/templates/agents.mak:39 #: prewikka/views/agents/templates/heartbeatanalyze.mak:20 #: prewikka/views/datasearch/heartbeat.py:64 #: prewikka/views/messagesummary/messagesummary.py:431 msgid "Model" msgstr "Модель" #: prewikka/views/agents/templates/agents.mak:41 #: prewikka/views/messagesummary/messagesummary.py:435 msgid "Class" msgstr "Класс" #: prewikka/views/agents/templates/agents.mak:45 #: prewikka/views/agents/templates/heartbeatanalyze.mak:25 msgid "Latest heartbeat" msgstr "Последнее время событий состояния" #: prewikka/views/agents/templates/agents.mak:46 msgid "Status" msgstr "Состояние" #: prewikka/views/agents/templates/agents.mak:90 #, fuzzy msgid "Delete the alerts of the selected agent(s)" msgstr "Удалить выбранные события?" #: prewikka/views/agents/templates/agents.mak:94 #, fuzzy msgid "Delete the heartbeats of the selected agent(s)" msgstr "Удалить выбранные события?" #: prewikka/views/agents/templates/agents.mak:96 msgid "Delete the selected IDMEF messages?" msgstr "Удалить выбранные сообщения IDMEF?" #: prewikka/views/agents/templates/heartbeatanalyze.mak:21 msgid "OS" msgstr "ОС" #: prewikka/views/agents/templates/heartbeatanalyze.mak:22 #: prewikka/views/datasearch/heartbeat.py:63 #: prewikka/views/messagesummary/messagesummary.py:419 msgid "Node name" msgstr "Имя узла" #: prewikka/views/agents/templates/heartbeatanalyze.mak:23 #: prewikka/views/messagesummary/messagesummary.py:402 msgid "Node location" msgstr "Расположение узла" #: prewikka/views/agents/templates/heartbeatanalyze.mak:24 #: prewikka/views/datasearch/heartbeat.py:62 #: prewikka/views/messagesummary/messagesummary.py:425 msgid "Node address" msgstr "Адрес узла" #: prewikka/views/agents/templates/heartbeatanalyze.mak:26 msgid "Current status" msgstr "Текущее состояние" #: prewikka/views/agents/templates/heartbeatanalyze.mak:56 msgid "Events" msgstr "События" #: prewikka/views/crontab/__init__.py:30 msgid "Scheduling management" msgstr "" #: prewikka/views/crontab/__init__.py:35 #, fuzzy msgid "Scheduled jobs management page" msgstr "Страница управления фильтрами" #: prewikka/views/crontab/__init__.py:62 msgid "Configuration" msgstr "Конфигурация" #: prewikka/views/crontab/__init__.py:62 msgid "Scheduling" msgstr "Планирование" #: prewikka/views/crontab/__init__.py:75 prewikka/views/crontab/__init__.py:104 msgid "SYSTEM" msgstr "СИСТЕМА" #: prewikka/views/crontab/__init__.py:88 msgid "Pending" msgstr "В ожидании" #: prewikka/views/crontab/__init__.py:98 msgid "Error" msgstr "Ошибка" #: prewikka/views/crontab/templates/cronjob.mak:54 msgid "Schedule:" msgstr "Расписание:" #: prewikka/views/crontab/templates/cronjob.mak:69 msgid "custom" msgstr "настраиваемый" #: prewikka/views/crontab/templates/cronjob.mak:70 msgid "disabled" msgstr "выключено" #: prewikka/views/crontab/templates/cronjob.mak:79 msgid "Minute:" msgstr "Минута:" #: prewikka/views/crontab/templates/cronjob.mak:83 msgid "Hour:" msgstr "Час:" #: prewikka/views/crontab/templates/cronjob.mak:87 msgid "Day:" msgstr "День:" #: prewikka/views/crontab/templates/cronjob.mak:91 msgid "Month:" msgstr "Месяц:" #: prewikka/views/crontab/templates/cronjob.mak:95 msgid "Weekday:" msgstr "День недели:" #: prewikka/views/crontab/templates/cronjob.mak:107 msgid "Edit Job" msgstr "" #: prewikka/views/crontab/templates/crontab.mak:15 msgid "Scheduled Jobs" msgstr "Дела по расписанию" #: prewikka/views/crontab/templates/crontab.mak:18 msgid "Schedule" msgstr "Расписание" #: prewikka/views/crontab/templates/crontab.mak:19 msgid "User" msgstr "Пользователь" #: prewikka/views/crontab/templates/crontab.mak:20 msgid "Last execution" msgstr "Последнее исполнение" #: prewikka/views/crontab/templates/crontab.mak:21 msgid "Next execution" msgstr "Следующее исполнение" #: prewikka/views/crontab/templates/crontab.mak:69 msgid "Disable" msgstr "Выключить" #: prewikka/views/crontab/templates/crontab.mak:70 msgid "Enable" msgstr "Включить" #: prewikka/views/custom/__init__.py:35 msgid "Embedding of external websites" msgstr "Встраивание внешних вебсайтов" #: prewikka/views/custom/__init__.py:65 msgid "Could not load tabs" msgstr "Невозможно загрузить" #: prewikka/views/custom/__init__.py:65 msgid "A URL should be defined for each tab" msgstr "" #: prewikka/views/datasearch/alert.py:119 #, fuzzy msgid "Alert listing page" msgstr "Список событий" #: prewikka/views/datasearch/alert.py:124 #, fuzzy msgid "Aggregated alerts" msgstr "Событие корреляции" #: prewikka/views/datasearch/alert.py:135 #: prewikka/views/messagesummary/messagesummary.py:751 msgid "Severity" msgstr "Важность" #: prewikka/views/datasearch/alert.py:136 #: prewikka/views/datasearch/heartbeat.py:60 #: prewikka/views/datasearch/log.py:57 msgid "Date" msgstr "Дата" #: prewikka/views/datasearch/alert.py:138 msgid "Source" msgstr "Источник" #: prewikka/views/datasearch/alert.py:139 msgid "Target" msgstr "Цель" #: prewikka/views/datasearch/alert.py:140 msgid "Analyzer" msgstr "Анализатор" #: prewikka/views/datasearch/alert.py:143 msgid "Delete the selected alerts?" msgstr "Удалить выбранные события?" #: prewikka/views/datasearch/alert.py:201 #: prewikka/views/idmefnav/__init__.py:45 #: prewikka/views/messagesummary/templates/messagesummary.mak:92 msgid "IDMEF" msgstr "IDMEF" #: prewikka/views/datasearch/alert.py:226 msgid "Minimal severity" msgstr "" #: prewikka/views/datasearch/alert.py:227 #, fuzzy msgid "Low severity" msgstr "Важность" #: prewikka/views/datasearch/alert.py:228 #, fuzzy msgid "Medium severity" msgstr "Важность" #: prewikka/views/datasearch/alert.py:229 #, fuzzy msgid "High severity" msgstr "Важность" #: prewikka/views/datasearch/datasearch.py:48 msgid "minute" msgstr "минута" #: prewikka/views/datasearch/datasearch.py:48 msgid "hour" msgstr "час" #: prewikka/views/datasearch/datasearch.py:48 msgid "day" msgstr "день" #: prewikka/views/datasearch/datasearch.py:48 msgid "month" msgstr "месяц" #: prewikka/views/datasearch/datasearch.py:48 msgid "year" msgstr "год" #: prewikka/views/datasearch/datasearch.py:189 #, fuzzy msgid "Time group error" msgstr "Внутренняя ошибка Prelude" #: prewikka/views/datasearch/datasearch.py:189 msgid "Only one time unit can be specified in a groupby query" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Forensic" msgstr "" #: prewikka/views/datasearch/datasearch.py:429 msgid "Dashboard" msgstr "Доска диаграмм" #: prewikka/views/datasearch/datasearch.py:507 msgid "CSV export" msgstr "" #: prewikka/views/datasearch/datasearch.py:651 msgid "General" msgstr "Главная" #: prewikka/views/datasearch/heartbeat.py:48 #, fuzzy msgid "Heartbeat listing page" msgstr "Анализ событий состояния" #: prewikka/views/datasearch/heartbeat.py:53 #, fuzzy msgid "Aggregated heartbeats" msgstr "Последнее время событий состояния" #: prewikka/views/datasearch/heartbeat.py:61 msgid "Agent" msgstr "Агент" #: prewikka/views/datasearch/heartbeat.py:66 #, fuzzy msgid "Delete the selected heartbeats?" msgstr "Удалить выбранные события?" #: prewikka/views/datasearch/idmef.py:46 #, fuzzy msgid "See IDMEF details" msgstr "Сигналы тревоги" #: prewikka/views/datasearch/log.py:44 #, fuzzy msgid "Log listing page" msgstr "Страница отображения событий уровня эксперта" #: prewikka/views/datasearch/log.py:46 msgid "LOG_VIEW" msgstr "LOG_VIEW (Просмотр логов)" #: prewikka/views/datasearch/log.py:51 msgid "Aggregated logs" msgstr "" #: prewikka/views/datasearch/log.py:76 msgid "Search in logs" msgstr "" #: prewikka/views/datasearch/log.py:77 msgid "View logs" msgstr "Просмотр логов" #: prewikka/views/datasearch/log.py:82 msgid "Log" msgstr "Лог" #: prewikka/views/datasearch/log.py:85 msgid "Archive" msgstr "Архив" #: prewikka/views/datasearch/log.py:105 msgid "Context" msgstr "Контекст" #: prewikka/views/datasearch/log.py:116 #, fuzzy msgid "Syslog export" msgstr "%s отчет" #: prewikka/views/datasearch/templates/details.mak:26 #, python-format msgid "Group by %s" msgstr "Группировать по %s" #: prewikka/views/datasearch/templates/details.mak:30 #: prewikka/views/datasearch/templates/forensic.mak:245 msgid "Add to search" msgstr "Добавить к поиску" #: prewikka/views/datasearch/templates/details.mak:31 #: prewikka/views/datasearch/templates/forensic.mak:246 msgid "Exclude from search" msgstr "Удалить из поиска" #: prewikka/views/datasearch/templates/forensic.mak:8 msgid "Fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:9 msgid "Query history" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:34 msgid "Count" msgstr "Счет" #: prewikka/views/datasearch/templates/forensic.mak:79 msgid "Chart type" msgstr "Тип диаграммы" #: prewikka/views/datasearch/templates/forensic.mak:89 #: prewikka/views/statistics/templates/statistics.mak:43 msgid "Limit" msgstr "Лимит" #: prewikka/views/datasearch/templates/forensic.mak:105 msgid "Action mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:112 msgid "Condensed mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:120 msgid "Expert mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:133 msgid "Search mode" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:137 #: prewikka/views/datasearch/templates/forensic.mak:243 msgid "Search" msgstr "Искать" #: prewikka/views/datasearch/templates/forensic.mak:139 msgid "Reset search" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:149 #: prewikka/views/datasearch/templates/forensic.mak:248 msgid "Group by" msgstr "Группировать по" #: prewikka/views/datasearch/templates/forensic.mak:150 msgid "Select your field" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:151 #, fuzzy msgid "Time values" msgstr "Значение" #: prewikka/views/datasearch/templates/forensic.mak:156 #, python-format msgid "%s fields" msgstr "" #: prewikka/views/datasearch/templates/forensic.mak:193 #: prewikka/views/statistics/alertstats.py:50 msgid "Timeline" msgstr "Временная шкала" #: prewikka/views/datasearch/templates/forensic.mak:247 msgid "New search" msgstr "Новый поиск" #: prewikka/views/datasearch/templates/forensic.mak:257 #: prewikka/views/messagesummary/messagesummary.py:1041 msgid "Actions" msgstr "Действие" #: prewikka/views/datasearch/templates/forensic.mak:270 msgid "Informations" msgstr "Информация" #: prewikka/views/datasearch/templates/infos.mak:3 msgid "Field" msgstr "" #: prewikka/views/datasearch/templates/infos.mak:9 #, fuzzy msgid "Occurrence" msgstr "Источник" #: prewikka/views/idmefnav/__init__.py:37 msgid "IDMEF navigator" msgstr "" #: prewikka/views/idmefnav/__init__.py:45 msgid "Help" msgstr "Помощь" #: prewikka/views/idmefnav/templates/idmefnav.mak:12 msgid "Children" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:20 #, fuzzy msgid "Aggregates" msgstr "Событие корреляции" #: prewikka/views/idmefnav/templates/idmefnav.mak:36 msgid "Attributes" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:54 msgid "Rank" msgstr "" #: prewikka/views/idmefnav/templates/idmefnav.mak:55 msgid "Keyword" msgstr "" #: prewikka/views/messagesummary/__init__.py:13 msgid "Detailed alert and heartbeat page" msgstr "Детализированная страница событий и событий состояния" #: prewikka/views/messagesummary/messagesummary.py:296 #: prewikka/views/messagesummary/messagesummary.py:591 msgid "Code" msgstr "Код" #: prewikka/views/messagesummary/messagesummary.py:297 msgid "Data length" msgstr "Длина данных" #: prewikka/views/messagesummary/messagesummary.py:298 msgid "Data" msgstr "Данные" #: prewikka/views/messagesummary/messagesummary.py:372 #, python-format msgid "(agent local time: %s)" msgstr "(Локальное время сенсора: %s)" #: prewikka/views/messagesummary/messagesummary.py:379 #: prewikka/views/messagesummary/messagesummary.py:848 msgid "Create time" msgstr "Время создания" #: prewikka/views/messagesummary/messagesummary.py:382 msgid "Detect time" msgstr "Время обнаружения" #: prewikka/views/messagesummary/messagesummary.py:387 msgid "Analyzer time" msgstr "Время анализатора" #: prewikka/views/messagesummary/messagesummary.py:393 msgid "Process" msgstr "Процесс" #: prewikka/views/messagesummary/messagesummary.py:394 msgid "Process Path" msgstr "Путь процесса" #: prewikka/views/messagesummary/messagesummary.py:395 msgid "Process PID" msgstr "PID процесса" #: prewikka/views/messagesummary/messagesummary.py:422 msgid "Node name (resolved)" msgstr "Имя узла" #: prewikka/views/messagesummary/messagesummary.py:433 msgid "Analyzerid" msgstr "Идентификатор анализатора" #: prewikka/views/messagesummary/messagesummary.py:437 msgid "Manufacturer" msgstr "Производитель" #: prewikka/views/messagesummary/messagesummary.py:445 msgid "Operating System" msgstr "Операционная система" #: prewikka/views/messagesummary/messagesummary.py:463 #, python-format msgid "Analyzer Path (%d not shown)" msgstr "Путь анализатора (%d не показан)" #: prewikka/views/messagesummary/messagesummary.py:470 #: prewikka/views/messagesummary/messagesummary.py:1050 #: prewikka/views/messagesummary/messagesummary.py:1123 #, python-format msgid "Analyzer #%d" msgstr "Анализатор #%d" #: prewikka/views/messagesummary/messagesummary.py:480 msgid "Additional data" msgstr "Дополнительные данные" #: prewikka/views/messagesummary/messagesummary.py:483 #: prewikka/views/messagesummary/messagesummary.py:730 msgid "Meaning" msgstr "Смысл" #: prewikka/views/messagesummary/messagesummary.py:484 msgid "Value" msgstr "Значение" #: prewikka/views/messagesummary/messagesummary.py:544 #: prewikka/views/messagesummary/messagesummary.py:565 msgid "Header length" msgstr "Длина заголовка" #: prewikka/views/messagesummary/messagesummary.py:545 msgid "TOS" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:546 #: prewikka/views/messagesummary/messagesummary.py:584 msgid "Length" msgstr "Длина" #: prewikka/views/messagesummary/messagesummary.py:547 #: prewikka/views/messagesummary/messagesummary.py:593 msgid "Id" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:551 msgid "Ip offset" msgstr "Смещение Ip" #: prewikka/views/messagesummary/messagesummary.py:552 msgid "TTL" msgstr "TTL" #: prewikka/views/messagesummary/messagesummary.py:553 #: prewikka/views/messagesummary/messagesummary.py:939 #: prewikka/views/messagesummary/messagesummary.py:942 #: prewikka/views/messagesummary/messagesummary.py:945 msgid "Protocol" msgstr "Протокол" #: prewikka/views/messagesummary/messagesummary.py:554 #: prewikka/views/messagesummary/messagesummary.py:576 #: prewikka/views/messagesummary/messagesummary.py:585 #: prewikka/views/messagesummary/messagesummary.py:592 msgid "Checksum" msgstr "Контрольная сумма" #: prewikka/views/messagesummary/messagesummary.py:555 msgid "Source address" msgstr "Адрес источника" #: prewikka/views/messagesummary/messagesummary.py:556 msgid "Target address" msgstr "Адрес назначения" #: prewikka/views/messagesummary/messagesummary.py:566 msgid "Reserved" msgstr "Зарезервировано" #: prewikka/views/messagesummary/messagesummary.py:575 msgid "Window" msgstr "Окно" #: prewikka/views/messagesummary/messagesummary.py:577 msgid "URP" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:590 #: prewikka/views/messagesummary/messagesummary.py:757 #: prewikka/views/messagesummary/messagesummary.py:790 #: prewikka/views/messagesummary/messagesummary.py:809 msgid "Type" msgstr "Тип" #: prewikka/views/messagesummary/messagesummary.py:594 msgid "Seq #" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:595 msgid "Mask" msgstr "Маска" #: prewikka/views/messagesummary/messagesummary.py:596 msgid "Gateway Address" msgstr "Адрес шлюза" #: prewikka/views/messagesummary/messagesummary.py:597 msgid "Num address" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:598 msgid "Wpa" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:599 msgid "Lifetime" msgstr "Время жизни" #: prewikka/views/messagesummary/messagesummary.py:600 msgid "Otime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:601 msgid "Rtime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:602 msgid "Ttime" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:608 #: prewikka/views/messagesummary/messagesummary.py:1097 msgid "Payload" msgstr "Полезная нагрузка" #: prewikka/views/messagesummary/messagesummary.py:661 msgid "Alert details" msgstr "Сигналы тревоги" #: prewikka/views/messagesummary/messagesummary.py:666 #, python-format msgid "%d linked alerts missing (probably deleted)" msgstr "%d связанных событий отсутствует (вероятно удалено)" #: prewikka/views/messagesummary/messagesummary.py:670 #, fuzzy, python-format msgid "%d linked alerts omitted" msgstr "%d связанных событий отсутствует (вероятно удалено)" #: prewikka/views/messagesummary/messagesummary.py:687 #: prewikka/views/messagesummary/messagesummary.py:1004 msgid "Correlation Alert" msgstr "Событие корреляции" #: prewikka/views/messagesummary/messagesummary.py:693 msgid "Correlated Alerts" msgstr "Событие корреляции" #: prewikka/views/messagesummary/messagesummary.py:694 #: prewikka/views/messagesummary/messagesummary.py:711 msgid "Source Analyzer" msgstr "Анализатор источника" #: prewikka/views/messagesummary/messagesummary.py:704 #: prewikka/views/messagesummary/messagesummary.py:1007 msgid "Tool Alert" msgstr "Событие со средства защиты" #: prewikka/views/messagesummary/messagesummary.py:710 msgid "Linked Alerts" msgstr "Связанноые события" #: prewikka/views/messagesummary/messagesummary.py:721 #: prewikka/views/messagesummary/templates/messagesummary.mak:93 msgid "Text" msgstr "Текст" #: prewikka/views/messagesummary/messagesummary.py:723 msgid "Ident" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:728 msgid "Origin" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:754 msgid "Completion" msgstr "Завершенность" #: prewikka/views/messagesummary/messagesummary.py:787 msgid "User category" msgstr "Категория пользователя" #: prewikka/views/messagesummary/messagesummary.py:792 #: prewikka/views/messagesummary/messagesummary.py:811 msgid "Number" msgstr "Номер" #: prewikka/views/messagesummary/messagesummary.py:793 msgid "Tty" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:812 msgid "Permission" msgstr "Привилегии" #: prewikka/views/messagesummary/messagesummary.py:834 msgid "Change time" msgstr "Изменение времени" #: prewikka/views/messagesummary/messagesummary.py:835 msgid "Inode Number" msgstr "Номер inode" #: prewikka/views/messagesummary/messagesummary.py:836 msgid "Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:837 msgid "Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:838 msgid "C Major device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:839 msgid "C Minor device" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:843 #, python-format msgid "Target file %s" msgstr "Целевой файл %s" #: prewikka/views/messagesummary/messagesummary.py:843 msgid "category" msgstr "Категория" #: prewikka/views/messagesummary/messagesummary.py:847 msgid "Path" msgstr "Путь" #: prewikka/views/messagesummary/messagesummary.py:849 msgid "Modify time" msgstr "Время модификации" #: prewikka/views/messagesummary/messagesummary.py:850 msgid "Access time" msgstr "Время доступа" #: prewikka/views/messagesummary/messagesummary.py:851 msgid "Data size" msgstr "Размер данных" #: prewikka/views/messagesummary/messagesummary.py:852 msgid "Disk size" msgstr "Размер диска" #: prewikka/views/messagesummary/messagesummary.py:871 msgid "Web Service" msgstr "Web сервис" #: prewikka/views/messagesummary/messagesummary.py:874 msgid "Url" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:875 msgid "Cgi" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:876 msgid "Http Method" msgstr "Метод http" #: prewikka/views/messagesummary/messagesummary.py:879 msgid "CGI Argument" msgstr "Аргумент CGI" #: prewikka/views/messagesummary/messagesummary.py:888 msgid "SNMP Service" msgstr "SNMP-сервис" #: prewikka/views/messagesummary/messagesummary.py:891 msgid "oid" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:892 msgid "messageProcessingModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:893 msgid "securityModel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:894 msgid "securityName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:895 msgid "securityLevel" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:896 msgid "contextName" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:897 msgid "contextEngineID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:898 msgid "command" msgstr "команда" #: prewikka/views/messagesummary/messagesummary.py:910 #: prewikka/views/messagesummary/messagesummary.py:912 msgid "Port" msgstr "Порт" #: prewikka/views/messagesummary/messagesummary.py:932 msgid "PortList" msgstr "Порт" #: prewikka/views/messagesummary/messagesummary.py:935 msgid "ip_version" msgstr "Версия" #: prewikka/views/messagesummary/messagesummary.py:971 #, python-format msgid "Source(%d)" msgstr "Источник(%d)" #: prewikka/views/messagesummary/messagesummary.py:986 #, python-format msgid "Target(%d)" msgstr "Цель(%d)" #: prewikka/views/messagesummary/messagesummary.py:1010 msgid "Overflow Alert" msgstr "Событие переполнения" #: prewikka/views/messagesummary/messagesummary.py:1013 msgid "Alert" msgstr "Событие" #: prewikka/views/messagesummary/messagesummary.py:1033 msgid "MessageID" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1080 msgid "Network centric information" msgstr "Информация об учетной записи" #: prewikka/views/messagesummary/messagesummary.py:1102 msgid "ASCII Payload" msgstr "" #: prewikka/views/messagesummary/messagesummary.py:1120 msgid "Heartbeat" msgstr "события состояния" #: prewikka/views/messagesummary/templates/messagesummary.mak:94 msgid "JSON" msgstr "" #: prewikka/views/messagesummary/templates/messagesummary.mak:100 msgid "Summary" msgstr "Итого" #: prewikka/views/riskoverview/__init__.py:34 msgid "Top page risk overview" msgstr "" #: prewikka/views/statistics/__init__.py:10 #, fuzzy msgid "Statistics pages" msgstr "Анализ событий состояния" #: prewikka/views/statistics/alertstats.py:35 #, fuzzy msgid "Severities" msgstr "Важность" #: prewikka/views/statistics/alertstats.py:39 msgid "" "This graph shows the severities of the reported alerts. There are 5 " "existing severities: n/a, info, low, medium, and high." msgstr "" #: prewikka/views/statistics/alertstats.py:43 #: prewikka/views/statistics/alertstats.py:306 msgid "Top {limit} Analyzer Node Locations" msgstr "Топ {limit} расположений анализаторов" #: prewikka/views/statistics/alertstats.py:47 msgid "" "This graph shows the most recurrent locations of the analyzers reporting " "an alert." msgstr "" #: prewikka/views/statistics/alertstats.py:54 msgid "This graph shows the evolution of the alerts severities over time." msgstr "" #: prewikka/views/statistics/alertstats.py:57 #: prewikka/views/statistics/alertstats.py:244 msgid "Top {limit} Source Addresses" msgstr "Топ {limit} адресов источников" #: prewikka/views/statistics/alertstats.py:61 msgid "This graph shows the most common alert source IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:64 #: prewikka/views/statistics/alertstats.py:256 msgid "Top {limit} Targeted Addresses" msgstr "Топ {limit} адресов целей" #: prewikka/views/statistics/alertstats.py:68 msgid "This graph shows the most common alert target IP addresses." msgstr "" #: prewikka/views/statistics/alertstats.py:71 #: prewikka/views/statistics/alertstats.py:216 msgid "Top {limit} Classifications" msgstr "Топ {limit} классификаций" #: prewikka/views/statistics/alertstats.py:75 msgid "" "This graph shows the most recurrent classifications of the reported " "alerts. The classification is a short description of the alert." msgstr "" #: prewikka/views/statistics/alertstats.py:79 #: prewikka/views/statistics/alertstats.py:210 msgid "Top {limit} Classifications Trend" msgstr "Топ {limit} тенденций классификаций" #: prewikka/views/statistics/alertstats.py:83 msgid "This graph shows the evolution of the alerts classifications over time." msgstr "" #: prewikka/views/statistics/alertstats.py:86 #: prewikka/views/statistics/alertstats.py:296 msgid "Top {limit} Analyzer Classes" msgstr "Топ {limit} классов анализатора" #: prewikka/views/statistics/alertstats.py:90 msgid "" "This graph shows the most recurrent types of the first analyzer reporting" " an alert. For further details on existing types, please visit " "https://www.prelude-" "siem.org/projects/prelude/wiki/DevelAgentClassification" msgstr "" #: prewikka/views/statistics/alertstats.py:95 #: prewikka/views/statistics/alertstats.py:278 msgid "Top {limit} Analyzer Classes Trend" msgstr "Топ {limit} тенденций классов анализатора" #: prewikka/views/statistics/alertstats.py:99 msgid "" "This graph shows the evolution of the type of the analyzers, reporting an" " alert, over time." msgstr "" #: prewikka/views/statistics/alertstats.py:160 msgid "Unknown service" msgstr "Неизвестный сервис" #: prewikka/views/statistics/alertstats.py:190 msgid "Statistics page about alerts" msgstr "" #: prewikka/views/statistics/alertstats.py:221 msgid "Top {limit} Alert References" msgstr "Топ {limit} упоминаний событий" #: prewikka/views/statistics/alertstats.py:226 msgid "Alert: Severity" msgstr "События: Важность" #: prewikka/views/statistics/alertstats.py:231 msgid "Top {limit} Alert Impact Types" msgstr "Топ {limit} типов воздействия событий" #: prewikka/views/statistics/alertstats.py:238 msgid "Top {limit} Sources Trend" msgstr "Топ {limit} тенденций источников" #: prewikka/views/statistics/alertstats.py:249 msgid "Top {limit} Source Users" msgstr "Топ {limit} пользователей источников" #: prewikka/views/statistics/alertstats.py:261 msgid "Top {limit} Targeted Ports" msgstr "Топ {limit} портов целей" #: prewikka/views/statistics/alertstats.py:266 #, fuzzy msgid "Top {limit} Targeted Users" msgstr "Топ {limit} пользователей целей" #: prewikka/views/statistics/alertstats.py:271 msgid "Top {limit} Targeted Processes" msgstr "" #: prewikka/views/statistics/alertstats.py:283 #, fuzzy msgid "Top {limit} Analyzers" msgstr "Топ {limit} анализаторов" #: prewikka/views/statistics/alertstats.py:291 msgid "Top {limit} Analyzer Models" msgstr "Топ {limit} моделей анализаторов" #: prewikka/views/statistics/alertstats.py:301 msgid "Top {limit} Analyzer Node Addresses" msgstr "Топ {limit} адресов нод анализаторов" #: prewikka/views/statistics/alertstats.py:314 msgid "Number of source addresses" msgstr "Количество адресов источника" #: prewikka/views/statistics/alertstats.py:321 msgid "Number of target addresses" msgstr "Количество адресов назначения" #: prewikka/views/statistics/alertstats.py:328 msgid "Number of simple alerts" msgstr "Количество простых событий" #: prewikka/views/statistics/alertstats.py:335 msgid "Number of alerts per analyzer type" msgstr "Количество событий по типам анализатора" #: prewikka/views/statistics/alertstats.py:341 msgid "Number of alerts" msgstr "Количество событий" #: prewikka/views/statistics/alertstats.py:347 msgid "Number of correlation alerts" msgstr "Количество событий корреляции" #: prewikka/views/statistics/alertstats.py:354 msgid "Number of machines/devices" msgstr "Количество устройств" #: prewikka/views/statistics/alertstats.py:361 msgid "Number of machines/devices per analyzer type (HIDS, NIDS)" msgstr "Количество событий по типам анализатора (HIDS, NIDS)" #: prewikka/views/statistics/alertstats.py:368 msgid "Categorizations" msgstr "Категории" #: prewikka/views/statistics/alertstats.py:369 msgid "Sources" msgstr "Источники" #: prewikka/views/statistics/alertstats.py:370 msgid "Targets" msgstr "Цели" #: prewikka/views/statistics/alertstats.py:371 msgid "Analyzers" msgstr "Анализаторы" #: prewikka/views/statistics/alertstats.py:372 msgid "Metrology" msgstr "Метрология" #: prewikka/views/statistics/alertstats.py:382 msgid "Statistics" msgstr "Статистика" #: prewikka/views/statistics/statistics.py:45 msgid "title" msgstr "заголовок" #: prewikka/views/statistics/statistics.py:131 #, fuzzy msgid "Statistics error" msgstr "Статистика" #: prewikka/views/statistics/statistics.py:131 #, fuzzy, python-format msgid "Could not find chart class: %s" msgstr "Невозможно загрузить" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "Invalid widget" msgstr "Неверное отображение" #: prewikka/views/statistics/statistics.py:180 #, fuzzy msgid "The widget category does not exist" msgstr "Фильтр '%s' не существует" #: prewikka/views/statistics/templates/statistics.mak:36 msgid "Failed to import the dashboard." msgstr "" #: prewikka/views/statistics/templates/widget.mak:12 #, fuzzy msgid "Delete this widget?" msgstr "Добавить виджет" #: prewikka/views/usermanagement/__init__.py:14 msgid "User and group management pages" msgstr "страница управления пользователями и группами" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/usermanagement.py:29 msgid "Access control" msgstr "Контроль доступа" #: prewikka/views/usermanagement/usermanagement.py:27 #: prewikka/views/usermanagement/templates/userlisting.mak:4 msgid "Users" msgstr "Пользователи" #: prewikka/views/usermanagement/usermanagement.py:28 msgid "GROUP_MANAGEMENT" msgstr "GROUP_MANAGEMENT (Управление группами)" #: prewikka/views/usermanagement/usermanagement.py:29 #: prewikka/views/usermanagement/templates/userlisting.mak:8 msgid "Groups" msgstr "Группы" #: prewikka/views/usermanagement/usermanagement.py:94 #, python-format msgid "Edit user %s" msgstr "Изменение пользователя %s" #: prewikka/views/usermanagement/usermanagement.py:112 msgid "Access denied to users modification" msgstr "Доступ к изменению пользователей запрещен" #: prewikka/views/usermanagement/usermanagement.py:124 #, python-format msgid "Edit group %s" msgstr "Изменение группы %s" #: prewikka/views/usermanagement/usermanagement.py:142 msgid "Access denied to groups modification" msgstr "Доступ к изменению групп запрещен" #: prewikka/views/usermanagement/usermanagement.py:229 msgid "Invalid user" msgstr "Неверный пользователь" #: prewikka/views/usermanagement/usermanagement.py:229 #, fuzzy msgid "Specified user does not exist" msgstr "Указанный язык не существует" #: prewikka/views/usermanagement/usermanagement.py:232 msgid "Cannot modify other users settings" msgstr "Невозможно изменить прочие настройки пользователя" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Invalid Language" msgstr "Неверный язык" #: prewikka/views/usermanagement/usermanagement.py:235 msgid "Specified language does not exist" msgstr "Выбранный язык не существует" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Invalid Timezone" msgstr "неверная временная зона" #: prewikka/views/usermanagement/usermanagement.py:238 msgid "Specified timezone does not exist" msgstr "Выбранная временная зона не существует" #: prewikka/views/usermanagement/usermanagement.py:241 #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Password error" msgstr "Ошибка пароля" #: prewikka/views/usermanagement/usermanagement.py:241 msgid "Password mismatch" msgstr "Пароли не соответствуют" #: prewikka/views/usermanagement/usermanagement.py:280 msgid "Invalid password specified" msgstr "Указан неверный пароль" #: prewikka/views/usermanagement/usermanagement.py:294 #: prewikka/views/usermanagement/usermanagement.py:297 #: prewikka/views/usermanagement/usermanagement.py:301 #, fuzzy msgid "Could not create user" msgstr "Невозможно сохранить фильтр" #: prewikka/views/usermanagement/usermanagement.py:294 #, fuzzy msgid "Username required" msgstr "Не указано имя пользователя" #: prewikka/views/usermanagement/usermanagement.py:297 msgid "Username cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:301 #, python-format msgid "User %s already exists" msgstr "Пользователь %s уже существует" #: prewikka/views/usermanagement/usermanagement.py:307 msgid "My account" msgstr "Моя учетная запись" #: prewikka/views/usermanagement/usermanagement.py:324 msgid "Invalid User" msgstr "Неверный пользователь" #: prewikka/views/usermanagement/usermanagement.py:324 #, python-format msgid "Requested user '%s' does not exist" msgstr "запрощенный пользователь '%s' не существует" #: prewikka/views/usermanagement/usermanagement.py:327 msgid "Access denied to other users settings" msgstr "Доступ к прочим настройкам пользователей запрещен" #: prewikka/views/usermanagement/usermanagement.py:398 msgid "Access denied to group settings" msgstr "Доступ к групповым настройкам запрещен" #: prewikka/views/usermanagement/usermanagement.py:415 #: prewikka/views/usermanagement/usermanagement.py:418 #: prewikka/views/usermanagement/usermanagement.py:422 #, fuzzy msgid "Could not create group" msgstr "Создать группу" #: prewikka/views/usermanagement/usermanagement.py:415 msgid "No group name provided" msgstr "Не указано имя группы" #: prewikka/views/usermanagement/usermanagement.py:418 msgid "Group name cannot start with a slash" msgstr "" #: prewikka/views/usermanagement/usermanagement.py:422 #, python-format msgid "Group %s already exists" msgstr "Группа %s уже существует" #: prewikka/views/usermanagement/templates/userlisting.mak:6 #: prewikka/views/usermanagement/templates/usersettings.mak:196 msgid "Create user" msgstr "Создать пользователя" #: prewikka/views/usermanagement/templates/userlisting.mak:7 #, fuzzy msgid "Delete the selected users?" msgstr "Удалить выбранные наборы правил?" #: prewikka/views/usermanagement/templates/userlisting.mak:9 #: prewikka/views/usermanagement/templates/usersettings.mak:35 msgid "Group Name" msgstr "Имя группы" #: prewikka/views/usermanagement/templates/userlisting.mak:10 #: prewikka/views/usermanagement/templates/usersettings.mak:198 msgid "Create group" msgstr "Создать группу" #: prewikka/views/usermanagement/templates/userlisting.mak:11 #, fuzzy msgid "Delete the selected groups?" msgstr "Удалить выбранные правила?" #: prewikka/views/usermanagement/templates/usersettings.mak:27 msgid "Account information" msgstr "Информация об учетной записи" #: prewikka/views/usermanagement/templates/usersettings.mak:28 msgid "Login:" msgstr "Имя пользователя:" #: prewikka/views/usermanagement/templates/usersettings.mak:29 msgid "Groups:" msgstr "Группы:" #: prewikka/views/usermanagement/templates/usersettings.mak:32 msgid "Group information" msgstr "Информация о группе" #: prewikka/views/usermanagement/templates/usersettings.mak:33 msgid "Group Name:" msgstr "Имя группы:" #: prewikka/views/usermanagement/templates/usersettings.mak:34 msgid "Members:" msgstr "Члены группы:" #: prewikka/views/usermanagement/templates/usersettings.mak:63 msgid "info" msgstr "информационный" #: prewikka/views/usermanagement/templates/usersettings.mak:86 msgid "Email:" msgstr "Эл. адрес:" #: prewikka/views/usermanagement/templates/usersettings.mak:88 msgid "Email" msgstr "Эл. адрес" #: prewikka/views/usermanagement/templates/usersettings.mak:93 msgid "Language:" msgstr "Язык:" #: prewikka/views/usermanagement/templates/usersettings.mak:104 msgid "Theme:" msgstr "Тема:" #: prewikka/views/usermanagement/templates/usersettings.mak:115 msgid "Timezone:" msgstr "Часовой пояс:" #: prewikka/views/usermanagement/templates/usersettings.mak:156 msgid "Permissions:" msgstr "Права:" #: prewikka/views/usermanagement/templates/usersettings.mak:165 msgid "Check All" msgstr "Отметить все" #: prewikka/views/usermanagement/templates/usersettings.mak:173 msgid "Current password:" msgstr "Текущий пароль:" #: prewikka/views/usermanagement/templates/usersettings.mak:175 msgid "Current password" msgstr "Текущий пароль" #: prewikka/views/usermanagement/templates/usersettings.mak:180 msgid "New password:" msgstr "Новый пароль:" #: prewikka/views/usermanagement/templates/usersettings.mak:182 msgid "New password" msgstr "Новый пароль" #: prewikka/views/usermanagement/templates/usersettings.mak:186 msgid "Confirm new password:" msgstr "Подтвердить новый пароль:" #: prewikka/views/usermanagement/templates/usersettings.mak:188 msgid "Confirm new password" msgstr "Подтвердить новый пароль" #: scripts/prewikka-cli:60 #, fuzzy msgid "Unknown command" msgstr "команда" #: scripts/prewikka-cli:68 #, python-format msgid "An unexpected error occurred: %s" msgstr "" #: scripts/prewikka-cli:163 msgid "Create an object of the specified type" msgstr "" #: scripts/prewikka-cli:166 msgid "Delete an object of the specified type" msgstr "" #: scripts/prewikka-cli:169 msgid "Import objects of the specified type from files" msgstr "" #: scripts/prewikka-cli:172 msgid "List objects of the specified type" msgstr "" #: scripts/prewikka-cli:175 msgid "Synchronize objects of the specified type" msgstr "" #: scripts/prewikka-cli:178 msgid "Update objects of the specified type" msgstr "" #: scripts/prewikka-cli:216 msgid "Prewikka command-line tool" msgstr "" #: scripts/prewikka-cli:217 msgid "name of the user" msgstr "" #: scripts/prewikka-cli:218 scripts/prewikka-crontab:99 #: scripts/prewikka-httpd:93 #, python-format msgid "configuration file to use (default: %(default)s)" msgstr "" #: scripts/prewikka-cli:219 msgid "command to execute" msgstr "" #: scripts/prewikka-cli:220 msgid "enable debugging output" msgstr "" #: scripts/prewikka-cli:227 msgid "prewikka-cli must be executed as the prewikka user" msgstr "" #: scripts/prewikka-cli:252 #, python-format msgid "Prewikka command-line tool (%s)" msgstr "" #: scripts/prewikka-cli:253 msgid "Type \"help\" or \"?\" to list commands" msgstr "" #: scripts/prewikka-crontab:100 msgid "run as a system daemon" msgstr "" #: scripts/prewikka-crontab:101 scripts/prewikka-httpd:96 msgid "show this help message and exit" msgstr "" #: scripts/prewikka-crontab:102 scripts/prewikka-httpd:97 msgid "show program's version number and exit" msgstr "" #: scripts/prewikka-httpd:88 msgid "root where the server is accessible" msgstr "" #: scripts/prewikka-httpd:89 #, python-format msgid "IP to bind to (default: %(default)s)" msgstr "" #: scripts/prewikka-httpd:90 #, python-format msgid "port number to use (default: %(default)d)" msgstr "" #: scripts/prewikka-httpd:91 msgid "SSL private key to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:92 msgid "SSL certificate to use (default: no SSL)" msgstr "" #: scripts/prewikka-httpd:95 #, python-format msgid "" "number of processes to use. Default value matches the number of available" " CPUs (i.e. %d)" msgstr "" prewikka-5.2.0/prewikka/plugins/0000755000000000000000000000000013726165110016571 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/filter/0000755000000000000000000000000013726165110020056 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/filter/htdocs/0000755000000000000000000000000013726165110021342 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/filter/htdocs/css/0000755000000000000000000000000013726165110022132 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/filter/htdocs/css/filter.css0000644000000000000000000000316213726165107024141 0ustar rootroot00000000000000div.panel-disabled { display: none; } .type-checkbox { display: none; } .section-checkbox:checked + label a:after { content: "\2714"; } .panel-theme .panel-heading .type-checkbox:checked + label > span { background-color: #5CB85C; } .type-checkbox:checked + label a:after { content: "\2714"; } .panel-theme .panel-heading .type-checkbox + label > span { background-color: #D9534F; } .type-checkbox + label a:after { content: "\2717"; } span.badge > a { color: white; text-decoration: none; } div.filter-edition { background: rgba(250, 240, 210, 0.5); border: 1px solid #dcc896; border-radius: 5px; padding: 5px; } ul.filter-list { list-style: outside none none; } ul.filter-list > *::before { border-width: 0 0 2px 0; border-style: solid; border-color: #ccc; content: ""; position: absolute; width: 10px; left: -10px; height: 1px !important; top: 13px !important; } ul.filter-list li:first-child::before { top: 0; height: 50%; } ul.filter-list li { position: relative; margin-bottom: 2px; } ul.filter-list { position: relative; } ul.filter-list::before { border-width: 0 0 0 2px; border-style: solid; border-color: #ccc; content: ""; position: absolute; left: 30px; height: calc(100% - 12px); top: -3px; } div.filter-group > button { margin-top: 3px; margin-bottom: 3px; } div.filter-group > span:first-child { margin-right: 50px; } div.operator { padding: 0; min-width: 30px; cursor: pointer; } div.operator > div[data-toggle=dropdown] { line-height: 28px; } prewikka-5.2.0/prewikka/plugins/filter/htdocs/js/0000755000000000000000000000000013726165110021756 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/filter/htdocs/js/filter.js0000644000000000000000000001151213726165107023607 0ustar rootroot00000000000000function get_criterion(selector) { var selector = $(selector); if ( selector.hasClass("filter-group") ) return _get_group_criterion(selector); else return _get_condition_criterion(selector); } function _get_group_criterion(selector) { var ret = null; var operator = selector.children("span.dropdown").children(":input.input-value").val(); $.each(selector.children(".filter-list").children("li").children(), function() { if ( ret == null ) ret = get_criterion(this); else ret = Criterion(ret, operator, get_criterion(this)); }); return ret; } function _get_condition_criterion(selector) { var values = $.map(selector.find(":input.input-value"), function(input) { return $(input).val(); }); return Criterion(values[0], values[1], values[2] || null); } function unindex_path(path) { return path.replace(/\([^)]+\)/g, ""); } function FilterEdition(selector, default_paths, all_paths, operators, enums, tooltips) { var that = this; this.init = function() { $(selector).find(".data-paths").each(function() { that.init_condition($(this)); }); } this.init_condition = function(select) { var type = select.closest(".filter-edition").data("type"); select.select2_container({ width: "300px", tags: true, createTag: function(params) { if ( operators[type][unindex_path(params.term)] ) return {id: params.term, text: params.term}; else return null; } }); that.init_operators(select); that.init_autocomplete(select); } this.init_operators = function(select) { var type = select.closest(".filter-edition").data("type"); var ul = select.parent().siblings(".operator").children("ul").empty(); var opdiv = $(ul).siblings("div[data-toggle=dropdown]"); var oplist = operators[type][unindex_path(select.val())]; $.each(oplist, function(index, operator) { $("
  • ").append($("", { "data-value": operator, "title": tooltips[operator] }).text(operator)).appendTo(ul); }); if ( oplist.indexOf(opdiv.text()) == -1 ) { opdiv.children("span").first().text(oplist[0]); } } this.init_autocomplete = function(select) { var path = select.val(); var type = select.closest(".filter-edition").data("type"); var input = select.parent().siblings(".data-value"); if ( enums[type][path] == null ) { if ( input.hasClass("ui-autocomplete-input") ) input.autocomplete("destroy"); return; } input.autocomplete({ minLength: 0, source: enums[type][path] }) .focus(function() { $(this).autocomplete("search"); }); } $(selector).on("click", ".newgroup", function() { var li = $("
  • ").append($("div#example-group").clone().children()); $(this).siblings("ul").append(li); }); $(selector).on("click", ".newcond", function() { var li = $("
  • ").append($("div#example-condition").clone().children()); var select = li.find(".data-paths"); var type = $(this).closest(".filter-edition").data("type"); $.each(default_paths[type], function(label, path) { select.find("optgroup:first-child").append($(" prewikka-5.2.0/prewikka/plugins/filter/templates/filterlisting.mak0000644000000000000000000000330113726165107025430 0ustar rootroot00000000000000
    prewikka-5.2.0/prewikka/plugins/filter/templates/menu.mak0000644000000000000000000000444213726165107023524 0ustar rootroot00000000000000<% root_id = 'main_menu_ng' if inline else 'main_menu_ng_block' %>
    prewikka-5.2.0/prewikka/plugins/filter/templates/widget.mak0000644000000000000000000001023513726165107024040 0ustar rootroot00000000000000<%! from prewikka.dataprovider import CriterionOperator %> <%def name="condition(field='', operator=CriterionOperator.EQUAL, value='', **kwargs)">
    <%def name="group(operator=CriterionOperator.AND, operands=None, root=False, **kwargs)"> <% OPERATORS = {"&&": _("AND"), "||": _("OR")} %>
    % if not root: % endif
      % if operands is not None: % for operand in operands:
    • ${init(operand, **kwargs)}
    • % endfor % else:
    • ${condition(**kwargs)}
    • % endif
    <%def name="init(criterion, root=False, **kwargs)"> % if not criterion: ${group(root=root, **kwargs)} % elif criterion.operator.is_boolean: ${group(criterion.operator, criterion.operands, root, **kwargs)} % else: ${condition(criterion.left, criterion.operator, criterion.right, **kwargs)} % endif prewikka-5.2.0/prewikka/plugins/filter/__init__.py0000644000000000000000000000111313726165107022171 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import pluginmanager, version from .filter import FilterView class FilterPlugin(pluginmanager.PluginPreload): plugin_name = "Filters management" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Filters management page") plugin_database_branch = version.__branch__ plugin_database_version = "0" plugin_classes = [FilterView] prewikka-5.2.0/prewikka/plugins/filter/filter.py0000644000000000000000000002414513726165107021731 0ustar rootroot00000000000000# Copyright (C) 2004-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # Author: Nicolas Delon # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import pkg_resources from prewikka import database, error, hookmanager, resource, response, template, view from prewikka.dataprovider import CriterionOperator from prewikka.utils import AttrObj, json from prewikka.utils.viewhelpers import GridParameters class Filter(object): def __init__(self, id_, name, category, description, criteria): self.id_ = id_ self.name = name self.category = category self.description = description self.criteria = criteria def flatten_criteria(self): ret = {} for typ, criterion in self.criteria.items(): crit = criterion.flatten() if not crit.operator.is_boolean: crit = AttrObj(operator=CriterionOperator.AND, operands=[crit]) ret[typ] = crit return ret class FilterDatabase(database.DatabaseHelper): def get_filters(self, user, ftype=None): l = self.query("SELECT id, name, category, description, value FROM Prewikka_Filter " "WHERE userid = %s ORDER BY name", user.id) l = next(hookmanager.trigger("HOOK_FILTER_LISTING", l), l) for id_, name, category, description, value in l: criteria = json.loads(value) if not ftype or ftype in criteria: yield Filter(id_, name, category, description, criteria) def get_filter(self, user, name=None, id_=None): query = "SELECT id, name, category, description, value FROM Prewikka_Filter WHERE userid = %(user)s" if name: query += " AND name = %(name)s" if id_: query += " AND id = %(id)s" rows = self.query(query, user=user.id, name=name, id=id_) if not rows: return None id_, name, category, description, value = rows[0] return Filter(id_, name, category, description, json.loads(value)) def upsert_filter(self, user, filter_): values = (user.id, filter_.id_, filter_.name, filter_.category, filter_.description, json.dumps(filter_.criteria)) self.upsert("Prewikka_Filter", ("userid", "id", "name", "category", "description", "value"), [values], pkey=("id",)) def delete_filter(self, user, name=None, id_=None): query = "SELECT id, name FROM Prewikka_Filter WHERE userid = %(user)s" if name: query += " AND name = %(name)s" if id_: query += " AND id = %(id)s" rows = self.query(query, user=user.id, name=name, id=id_) if rows: self.query("DELETE FROM Prewikka_Filter WHERE id IN %s", (row[0] for row in rows)) return rows def get_categories(self, user): query = "SELECT category FROM Prewikka_Filter WHERE userid = %(user)s AND category IS NOT NULL GROUP BY category ORDER BY category" return [row[0] for row in self.query(query, user=user.id)] class FilterView(view.View): plugin_htdocs = (("filter", pkg_resources.resource_filename(__name__, 'htdocs')),) _filter_menu_tmpl = template.PrewikkaTemplate(__name__, "templates/menu.mak") def __init__(self): view.View.__init__(self) self._db = FilterDatabase() def _get_types(self): for typ in sorted(env.dataprovider.get_types(public=True)): yield typ, _(env.dataprovider.get_label(typ)) @view.route("/settings/filters", menu=(N_("Preferences"), N_("Filters")), help="#filters", parameters=GridParameters("filters")) def listing(self): dataset = {} data = [] for fltr in self._db.get_filters(env.request.user): elem = { "id": fltr.id_, "name": resource.HTMLNode( "a", fltr.name, href=url_for(".edit", name=fltr.name), title=_("Filter %s") % fltr.name ), "category": fltr.category, "description": fltr.description } for typ in fltr.criteria: elem[typ] = True data.append(elem) dataset["data"] = data dataset["columns"] = self._get_types() return template.PrewikkaTemplate(__name__, "templates/filterlisting.mak").render(**dataset) def _filter_delete(self, user, name=None, id_=None): for fid, fname in self._db.delete_filter(user, name, id_): list(hookmanager.trigger("HOOK_FILTER_DELETE", user, fname, fid)) @hookmanager.register("HOOK_MAINMENU_PARAMETERS_REGISTER") def _filter_parameters_register(self, view): view.optional("filter", text_type, save=True) return ["filter"] @hookmanager.register("HOOK_DATAPROVIDER_CRITERIA_PREPARE") def _filter_get_criteria(self, ctype): if not env.request.has_menu: return fname = env.request.menu_parameters.get("filter") if not fname: return return self._filter_get_criteria_by_name(fname, ctype) @hookmanager.register("HOOK_FILTER_GET_CRITERIA") def _filter_get_criteria_by_name(self, fname, ctype, user=None): f = self._db.get_filter(user or env.request.user, fname) if not f: return return f.criteria.get(ctype) @hookmanager.register("HOOK_MAINMENU_EXTRA_CONTENT") def _filter_html_menu(self, ctype, parameters, **kwargs): filters = list(self._db.get_filters(env.request.user, ctype)) current_filter = parameters.get("filter") if current_filter not in [x.name for x in filters]: current_filter = None filter_categories = {} for fltr in filters: filter_categories.setdefault(fltr.category, []).append(fltr) dset = self._filter_menu_tmpl.dataset( current_filter=current_filter, filter_categories=filter_categories, **kwargs ) return resource.HTMLSource(dset.render()) @hookmanager.register("HOOK_CHART_PREPARE") def _chart_prepare(self, query, options): filter_name = options.get("filter") if not filter_name: return c = self._filter_get_criteria_by_name(filter_name, query.datatype, options.get("owner")) if not c: raise error.PrewikkaUserError(N_("Filter error"), N_("Filter '%s' does not exist", filter_name)) query.criteria &= c @view.route("/settings/filters/new", help="#filteredition") @view.route("/settings/filters//edit", help="#filteredition") def edit(self, name=None): id_ = env.request.parameters.get("duplicate", type=int) dataset = { "fltr": AttrObj(id_=None, name=None, category=None, description=None, criteria={}), "categories": self._db.get_categories(env.request.user), "types": list(self._get_types()) } if name or id_: dataset["fltr"] = self._db.get_filter(env.request.user, name, id_) if not dataset["fltr"]: raise error.PrewikkaUserError(N_("Filter error"), N_("Filter '%s' does not exist", name or id_)) dataset["fltr"].criteria = dataset["fltr"].flatten_criteria() if "duplicate" in env.request.parameters: dataset["fltr"].name = None return template.PrewikkaTemplate(__name__, "templates/filteredition.mak").render(**dataset) @view.route("/settings/filters/delete", methods=["POST"]) def delete(self): for id_ in env.request.parameters.getlist("id", type=int): self._filter_delete(env.request.user, id_=id_) @view.route("/settings/filters/save", methods=["POST"]) @view.route("/settings/filters//save", methods=["POST"]) def save(self, name=None): new_name = env.request.parameters.get("filter_name") category = env.request.parameters.get("filter_category") description = env.request.parameters.get("filter_description") if not new_name: raise error.PrewikkaUserError(N_("Could not save filter"), N_("No name for this filter was provided")) elif new_name.startswith("/"): raise error.PrewikkaUserError(N_("Could not save filter"), N_("The filter name cannot start with a slash")) criteria = dict(zip( env.request.parameters.getlist("filter_types"), (json.loads(c) for c in env.request.parameters.getlist("filter_criteria")) )) filter_ = self._db.get_filter(env.request.user, name) if name else None filter_id = filter_.id_ if filter_ else None # Ensure the filter name is not already used by this user if new_name != name and self._db.get_filter(env.request.user, new_name): raise error.PrewikkaUserError(N_("Could not save filter"), N_("The filter name is already used by another filter")) # Do not erase filter components if the dataprovider failed to load if filter_: new_criteria = filter_.criteria new_criteria.update(criteria) criteria = new_criteria criteria = dict((k, v) for k, v in criteria.items() if v is not None) self._db.upsert_filter(env.request.user, Filter(filter_id, new_name, category, description, criteria)) return response.PrewikkaResponse({"type": "reload", "target": "#main_menu_ng", "options": {"filter": new_name}}) prewikka-5.2.0/prewikka/plugins/warning/0000755000000000000000000000000013726165110020236 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/warning/htdocs/0000755000000000000000000000000013726165110021522 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/warning/htdocs/images/0000755000000000000000000000000013726165110022767 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/warning/htdocs/images/prelude-logo-400.png0000644000000000000000000004510113726165107026403 0ustar rootroot00000000000000PNG  IHDR]0sBIT|d IDATxwxGgUq޻1$T.=K$_Kr鹴K\B@( m{UeId"ْ-C{?VٝWev =b;?rxÉ)# L:ڰaƟ ΝMYo *BFM|>eUaÆ?+׀<08SVUV͆ 6lundA1M- (pVTˆ 6la[C`@ zqAɆ 6ltfpaS@df/!;/Ɇ 6ltfA~\? j& 6lظJ|D*wG;G׾VG{g`LfIlذaFwaÆ WπhZkI*epF6lذaπ&*ϋ7ğ 6lXy ڬ:@ }*΃͐ذaÆ*<w9((pqȄ29Rӆ 6 NTta/D/@GoSƵPNZͦ,{}gAMyP5[[g6l31h h5J9]#7 .| ~xZͺIҳ87|NnTYZr@Æ 6R͔3]8 \A*sF9 ~tϹQ?r&߀hU @6O-6l( Ab} C7lڝgs1bZ@XAK6lSg 1'.~9*6-˂@fDh36Dj j.jAԨl#.13<&΁\[s5p>̵exO1V Yy|{!8cд6R@{(R+ <@*>C5M8d9z 36CĈѷW$ XGUE j*1A~Ƽ0hD,N*@w j4+4Zˡ?kzƀAEP5WA}e&5\0+ŅT5$2{jTj*Т,N?с(;/QuI*oR/ZW lܼwp'LIHjj)?m'e'~-d2G *y/){ESWаfN,"wrZN"Eݗ60(f_]tDHe.mTL.2qu/G q3{sRy^"e5n|:Bi'ӛWO 2 O#Tn׵i5*=Ei>ܔ@5YΓwp+:)| JM j7f?sQfgMK3y([md$(T{-{z`pU8fS04v.(J-iO)^m3TSM@UI j ,&RNҦf@P5[ LgvJ9bk˞FDd&n.0a0rƳEFπlݛPf@5%Qŝ] f gç=&.z ]6-MۘvQ[-bhZO|Rݣ=srdfoZ GزLXgf/pN 7 `Ar{ {ة)wCҁWAv11۠T7:0".wfEпl'S&}3Fucr'K6&,|kJ m9uc?PmEy-r9WrsvQ_U Lh7 -|5^W#  p-ѯ7^#Y`̆XoO дRMwG幆G'}6b*O[?a#ְ7~Fug,a@pt G2Y >hgm,ZEYBuP[Bo>[*H.ڞN/r󈻇-$pcn^c!K(KdI^S",/:yH.p_Izlkalȸe3I6c]↷@F9I?SmЩ+,nK@F~{SƣT*LY2 FC'=HSA߰?gQA=# HpMA,؊æ<ݷRBG+?&f'cnn j朦_(7y-47+U,aǠlSqlD'ar܃Xc**Ъ|2cFȀ t '$,YዱS񁙝9)w7v;*>aJ=L}#'>[ .mk5П,MA/ްS5JJ>xWlUO$PxV%D-Q3G)(HM\A1䥯Sι|}3\VijuB;G,pQE*eAb商9z+TU|L͸?i:.1j.F^ӶtGVK)G7[[xᏅ7n!:rQ5U?vv0hn*%Yrʽw4z{Ѕ2~֏gghᆧpȸz}氥 ʂ^k ѭ z}pt>q(u$U1Ⱥu噝_mӑ?&Ʃ j2<0s FWW#if :}* QCUZ_PNFjtN;uz40Q$lOfj? r F\W D"sš`Dπ!m/ṾvSOIYPCy2 '/y _0x3)SJ{ 6y5fy_|2A10tB:m` \"4MI86q+]B4l#ݻR]e5f \r:EЪ ZRyY"5dCSESPmYpt}!xL3& ݍާ;/}sGY̪US UG06_i L){(op%Ls 6'oyK%tpVt'ld߳΄Y:)Az{O5 BP[z.] [FbӍO'ń_(TUtLT?ݽ292Aqsġo)G>3_{ ?;{, 1lx΍@@(Dfrgpv@ө`"Nt:ۈ8Df^4ktt Rf./ˀJa޳w3UBu]Q:`PStkTR5;>ͼ{8@(He3i )'coQǩ(7uC'7o@&/ &ouׅVr}0߰1lܦmԣo *aՓg٘9oD Lc3o`0mމ͹[y0QUq?/KDžN?j, 2FObACXPd>}#QǷ?-+^=`6kypY2 q#>v~ח>u]/K q47N<l7Xc~9w|#Y JwԪvo,Yت'7CW)cU/fͦƢ1JkK?oLOpS!V]f U6fk0Ȍ O;#Z Gb·]^‚'ʼn%6 Ӏ 6-yԷroL}lHKg>~3Jy^^1 eهQcrWţ LXě=.C;VEOOAcn3Ec~5lX@iP/ agPH)߸:qF jUUQх&o2||")we[ɇRD֡\V0kHYއFJpRD|AB#P]{TnCs6nFʺmɐVOHik$[126se]>f2J=xMXz &xд\9\=͞}>R e,%Ϛ cM^*oɣKO?"C ]*ШUQQbʂTJ;ͥK/D"}Fap,$YܱAiFR)M˧FFKX}0:R;EL6^cm0F#.l1}3"ؾ<}>'kIdr;uQ" 7pL5TX|w6m3a "Ct`#y'?Ѐw_6[&;F^g>4L5Z,N}E64tʂuEa4zLfK߉vN[' #FBgkbk?,ǡ}_=`|%?+6lchg8UOl`hn(Zpt@z>ɒH]3pd¾N"IwVuQ?㨶̼Ģx'sF9v5${շy+#bkzY1]Á:aIPn^2N'=oz.u\"v IG 4,hZ jYa@b7TM TQsSq'= rB9 ƈfdʈ/Xt a2ՔqΊ*W"hLOص~CU! lڪ E{R`>^ʄr7XĠ΢v 5TwcRK^U {(8w(@%,j4 enU {r6Q}yGOa#n=`q2SJ ca9z qQ{ ƳgVmxwQY&CU{0+9o+=n:l{ID۬N"[05%Ґ ۩"}#XŬ?@ks200z)\?uG) AnԪfШF| :%$em9? Y?TM5+eH{f1_ʕt?ܺX\_] Af-~o%zM@3.* & $7:P5 %\K@4Hg7yOv-#&{vѱ-QzMũ׿1>:A@yvOz؛33`p|cߢ,5k*a]?yk=.n²[TWKi?2[`%OcLĉ*͊IVTS4 ř;(&pu8V*Nn{}Bf`l};r7Sn&H5NpX/T<WTjS0z- ccžT_e ukcNƚ\ ݹ>CweQGGM/Q+ܵ'wmO=vo[ZNB_jQC'E08xt:U^y* zḒ&-y/Q]e`R%mN-c1nl[Vyo<{熶LU?ip/#B${7t=MYnڊ\1r̽:O|4 Mw' ћ'qm;=TNnCi>r%[pvд6Rv/yc֚}Œ/wRvҷ}n[ԯIZd#+Kb9zo=J!P!H D6ۢbu,$v*e1?16 E?@yw)⩥k4k@u|Ϸ+zLxdI #ΏlYPtD>r>z%CQ^&hj(Z$v=ǯŘɷEH QϘfcnq󟥪uvdƚL5-k8\#}˙~'ɚ-p }+Sq8t5veweīހh5| !n+8j(w+CI?o|jE}<#FfM-MՐu?Ĩ~B~z([͙mFƭS;jG5jQw\DrV# qI?bƦx? j-㻿^ } QxE~2 }5HFw},Nc. ,'57 ;uoC5|wp!x"dw@\+Bkk )䝜HT*:/;o20b"j5h4jP8qu+_uݺd1b k4P[y.졂-f5缕Sy~8a #o`gtRPݷ2&v.2l9]L1ZsrhԖLΊNBh$ĉS\0OO~+Ne1 K"FM?3US4mZE?{_4i-sۛQ#spܼ/|"C@ͽj(<H IDAT[QxʞgnD&^i59wPu?j*@̤;Y2Jd2tCM<ǔzݮk@Ŭ#P)w1zpi,,jG\^hѠBsC%U%Qх:YҪTSvR_BsCuy➗30:'SnyTrd߲v02=G J@ڊT{rmE#奮Gp }Fg0fjJR}=ִ=}/8 ^hU P_K=7sd ^QcnF` \PMY&_6X@s~7y(7?.$Y jmn׽ɽĩԟs prlX A2;w݁ RЪAZ jUb wm3;lOZVCV%6Z{'8{İA]7LǶ|_:CD\3*DD@vCuޘdpLΉs%ɹ9]DnmP?@@ hk_'Klf5sC%noxvƘHM!qD uϼb>Kzuv]uxme],EQkmk`}nƎ/]MK?2Uu;>'-{M+(D"t@"-$꾤뿬8/uQq|Fgh}; @ a9v3WhL_[U @D}ƒmRAs_f F1/ \Q@7"QqЊA5Loti}a[&U߇AVZ5j .UZkVWkj o]#IttV@HItQd02 P@$I$D/*鿄;~I1 b!!'AۍqQwӸ( x *㟇}Aݢ;406l~CR8guHDH@"ur9u2@_)f0" R%q~p`NOlh :Y]:e NrSm5 O `8t+tz8 sIFkL n3VfZmVźk(V~~Q@M{1d@LgPW_7X([ Ϳ 3 JJp}65Q]ֱ#iK>@:7@E \3ng@":$w*v.QΑ:dNbnNsNm39:GL۸rҳP.}JHY-JۗX/ļFw u-+h,d@ivBsCaImH)u ;O[b4;?&IK-Q[[g^FW;!J'űs7jcM oZEy zT n _*:tEeZR 6ߤjq'~{AZ3(CO[ذaχOT=Hz':wcIZge,GMi@5 Palޝ? TT]2`hÆ+¢|G̛1GΤni'@i'>,矀aS-> g? 9U^R#aP\pvN.UBCudi1~; ]n>Q*ORnfP5_n%52{G 5|33e6&@*s.jvx1K-y>X.iAxCTe 26tvj$^*׿ &Gwl֚o#`(4Q v(H$Ԭ ^gD5 f\@F&` wTD*#uk '{ɬdj"?rSH{^5XHힻO!u H"/6 3+(jm'~Oo5҇o*mp>rGJ9_J+ KFFmoC-ڻ?ng}BYg#Quqn/wإl윿| A\ٿ˃T4j)T= B7D"$b&T-S PSb܊Qc;bCw?e+"~tLe]8_q$4 fd*Jx P]l<vՠcPD|%ܼQ1Vm DMrCu5?[9tCQqq*H4e#߷GL.&|3CqkR_*Tn|?y,<]\"?4f  pjQmΣƚ,6_/|睆 w@߰ (?#cKe2{/6M,x5jQRUQ=GD*){-Ql1P[rYyOD-YPSvcN[n-^2vA:{D" {imfe)W\\*=Ns!O?x4 FOGҲIᣬfڠ\J=rRCe!zdnȏm~"g "OӹCotXa8|߅Vk@_-l;,LAy`"[ r O>OR(r6eٿِqh5OP25EYK3 P_@^<p_Y.ڪ>gų!{vƚ>jQܱ#&s?gv=vcDȅl-_ywmyo"4TpaSdSJwQM73MuloN1_Heum'W_*k z{'ʄ[^HƚrgtRF>jFOXK'3j@0d(sgzt9\FEU@;GW6.]V vnh .Q. k[*kr6meMoMk)k*qgmKA\͏uF@6?~ͽsCbPA~*:*/cAGwt3 a↷Gv2etlxs!^1t|OOzrCks9?C6r!FZգqp k.6oXs@.3#1ą`p3Q*JsSmY^QcfxG|.D%Y;Wc|'EP֕ri'=\C1l ^5릥aæ>q{AYeVe.6@µ]A59zL&K'52\)ƣ l_jUUF`dv>.Wpr Cg@졩j.BCU6U$A~ʡ"Ш`I^'t֥/Pѯ8@TP,!VQ!2n 'jjTu/쁆 0q.onTt 9۠>`ڊP5բ0萐))]V*]zRF/Pz6KP!n`~8l2t v'jiSTs2vQ]Ź~@RJw7zeو׀{LYqP&l|$SX2l 4pJN}PAzwaS(+q3hԵV H0$v% 1;,8:RҁWz,(H=.!uK)2kr0}Wfse]4Ԏm|3 stOv}c!^$GF9=cYe9f'*xNBo.TU yF 4PIBx+h[ :|0}j!e/ wDAs1QoXƚU4dQCu6gW+B?'ܪ )*Qz*HEA; aiN|]s΁ -j10:FTn3.pq= .M7+ɚp]T `7T掾1 jywDi']0!))M@ѝnS8SN:+Raƀ,Pq澁hk2Q v]1*n 4֔PidA$c­/u9PK!'yUs hJcLocc=Ou<~?qg V'HJzRMYO)!~,7y)Knnn5m3U'E_~S= 9 BMhjs2y 3Pa8p?U|W^Cu~l7aO2};l苌1RZkwzYmPOb!30"n ?z#CGӹpj"G>(j)Ua=@ ',x~{,w67ko`jV]_^O'{/mD jPEZv?F6y8lF ɘ~)k*GXC UYfNDw 1Fs U}NpNϕEl?aS"~J j3@Y߫7Uvz|VceAeW< }+5Wa±ѫQVB{ $S2s}B _E"f\tǼͺKUj.j,Df'Yj6U_7;ӎ @l7؈kMBcM#eMnx HQk bt L?C9I}ਵYwŻ v 7Hj)+q#5R SƆZM#dAw( ڣ '!8|-`MFc"5 Py,;٤ڊsT{#nAQco&QP,ji]LkT"JYD d;-\T_"nxg~ǎ+-|P]Ee"N$+oyK$)Z6y w˜'-~!\&QU# IDATԂ{xF|%]xrkbyz'6f0eع΁ wwC4P_/#iT c29 SNҦnz'.~I*3(\0"9ELDÿ['F{"݈SFCW`ĨTZS0дC"Q4+v? XsZY&ad]l={_(~ElC8j+}+ϜA~fSnQ~q;c}c2<'SSOxY^z =C^r@WQl=YȰTSMi>>&\M5'4}l712n%/Ɏ'D %&Mk-NoY%Y;btp=z# qp e3oZFL u3T'}TM l+pZȤl_8<+SY>pg8d*c`LMLq;4duRSY ơ>crvͪ/8zNAV)3$2zQnOimf .ty#*!vP"v;B\)b@πIlƚ/ ;O 4QNr{{3Y,L>EuSN6Qѷbq褻;d$FJESڱO(sUNJb bq::l[t*ҜcXMjU3:xwd  YJQr)~Ml͟R9T؊^9Fpty=_UO婇ԣ岜c>VXT('~4IoI%G*T h~c0(z:Jdrj.ŨvsClGQV&*\0j4'>hT8bt~̏X \ׁX;^;trSlڊ/|*f\B1zܭ(;>'xh>>A%YX̄cR*yǍVШ(f;6R57RAցZ\!֔&@A~pN D4'% >pM]ݷ]<t*'cبeڬ(7 o[atdӃzmP5[g@\ ŧ)#K:e {'dLړ'hnC:F`CgODspD~zkt|#d8D ,7* fsr2{;Z.ŢWthX %Y'i N- mQ,a2s3]b,ْ%v ox],l$˦&E_@>BA,Ŷw|?OP7,v/,cBQۉ-~pL&/O\&gFTpϕc~4{N"xd%ĺĆw[EeGփM-A, +W._m}fii~T^SS'>)31*F@7죊(/7ZeۉEG1wΒZ*}[TU4u_m' 93FX a1u آb-d3wX>*rאWSnXlB6~}~^(rEbVw ĂcF{/9tgɚ޴-;\OXeǩ*8£}RS\9](n!KUxW.Uo$,;(R ffm>x$-} ؝g/f9 "!Z##zΈra-ĚC":,3r̅_ GY$ ؝l-Ԓ<3}LXl4<_BJo;'á{C]jUAhnu?~u,5M;[(khYl"Vn~9\o.H VCQ=r}q#4gSIy#YlYm"D^;YRe)(*lۛl|{~eŐ vgŒ?EQLânA`-~s =[@nuf)B?i#אJ&x|Jפ'c6xdhIᥭWEaYs!oUKd5*,IQh @䁛mҙLJ.[(7x䙲X^EQ3lAr<Ӳ%4y/3PEYV]z?HyA'eJq<:)nf>[Qe61BXȷe/ml8@u[a+ta.>Pw? 5O (_8VEHqIENDB`prewikka-5.2.0/prewikka/plugins/warning/templates/0000755000000000000000000000000013726165110022234 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/plugins/warning/templates/warning.mak0000644000000000000000000000341013726165107024377 0ustar rootroot00000000000000<%! from prewikka.utils.html import Markup %> prewikka-5.2.0/prewikka/plugins/warning/__init__.py0000644000000000000000000000355413726165107022364 0ustar rootroot00000000000000# Copyright (C) 2015-2020 CS GROUP - France. All Rights Reserved. # Author: Antoine Luong # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import pkg_resources from prewikka import hookmanager, resource, template, version, view # FIXME: this really is a plugin and not a view. See #781 class Warning(view.View): plugin_name = "Warning" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Prelude Warning message") plugin_htdocs = (("warning", pkg_resources.resource_filename(__name__, 'htdocs')),) _template = template.PrewikkaTemplate(__name__, "templates/warning.mak") @hookmanager.register("HOOK_LOAD_BODY_CONTENT") def _toplayout_extra_content(self): if env.request.user and not env.request.web.input_cookie.get("warning"): env.request.web.add_cookie("warning", "warning", 365 * 24 * 60 * 60) return next(hookmanager.trigger("HOOK_WARNING_CONTENT"), [resource.HTMLSource(self._template.render())]) prewikka-5.2.0/prewikka/plugins/__init__.py0000644000000000000000000000000013726165107020676 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/0000755000000000000000000000000013726165110016716 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/0000755000000000000000000000000013726165110020354 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/bar/0000755000000000000000000000000013726165110021120 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/bar/__init__.py0000644000000000000000000000471013726165107023241 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Sélim Menouar # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """ ChartJS bar plugin """ from .. import ChartJSRenderer from prewikka.renderer import RendererUtils, RendererNoDataException from prewikka import version class ChartJSBarPlugin(ChartJSRenderer): """ ChartJS bar plugin """ renderer_type = "bar" plugin_name = "ChartJS : Bar" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("ChartJS Bar renderer type") def render(self, data, query=None, **kwargs): """ Return the HTML for this chart Keyword arguments: data -- List of tuple containing the data for this chart [(count, value, link), ] """ rutils = RendererUtils(kwargs) labels = [] bar_data = [] mapping = {} for count, value, link in data[0]: label = rutils.get_label(value) bar_data.append(count) labels.append(label) mapping[label] = link color = rutils.get_color(0) if not bar_data: raise RendererNoDataException options = { "labels": labels, "datasets": [{ "backgroundColor": self._rgba(color, 0.5), "borderColor": self._rgba(color, 0.8), "hoverBackgroundColor": self._rgba(color, 0.75), "hoverBorderColor": self._rgba(color, 1), "data": bar_data }] } return self.generate_html(kwargs, options, {"legend": {"display": False}}, "bar", mapping) prewikka-5.2.0/prewikka/renderer/chartjs/htdocs/0000755000000000000000000000000013726165110021640 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/htdocs/js/0000755000000000000000000000000013726165110022254 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/htdocs/js/Chart.min.js0000644000000000000000000046762613726165107024470 0ustar rootroot00000000000000/*! * Chart.js * http://chartjs.org/ * Version: 2.7.2 * * Copyright 2018 Chart.js Contributors * Released under the MIT license * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md */ !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,i,n){function a(r,s){if(!i[r]){if(!e[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=i[r]={exports:{}};e[r][0].call(d.exports,function(t){var i=e[r][1][t];return a(i||t)},d,d.exports,t,e,i,n)}return i[r].exports}for(var o="function"==typeof require&&require,r=0;ri?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=this,n=t,a=void 0===e?.5:e,o=2*a-1,r=i.alpha()-n.alpha(),s=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,l=1-s;return this.rgb(s*i.red()+l*n.red(),s*i.green()+l*n.green(),s*i.blue()+l*n.blue()).alpha(i.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new o,n=this.values,a=i.values;for(var r in n)n.hasOwnProperty(r)&&(t=n[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return i}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=u(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function c(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=r+1/3*-(u-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function f(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function p(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function m(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function v(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function x(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function y(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function k(t){return m(x(t))}function M(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return S[t]}e.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return s(c(t))},hsl2keyword:function(t){return l(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return s(h(t))},hsv2keyword:function(t){return l(h(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return n(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return l(p(t))},keyword2rgb:w,keyword2hsl:function(t){return n(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:m,xyz2lab:v,xyz2lch:function(t){return y(v(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:M,lch2xyz:function(t){return x(M(t))},lch2rgb:function(t){return k(M(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,i){var n=t(4),a=function(){return new u};for(var o in n){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),n[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),s=r[1],l=r[2];(a[s]=a[s]||{})[l]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=n[t](e);if("string"==typeof i||void 0===i)return i;for(var a=0;a0&&(t[0].yLabel?i=t[0].yLabel:e.labels.length>0&&t[0].index0?Math.min(r,n-i):r,i=n;return r}(i,u):-1,pixels:u,start:s,end:l,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),c=l.data.datasets,h=d.getRightValue(c[t].data[e]),f=d.options.stacked,g=u.stack,p=0;if(f||void 0===f&&void 0!==g)for(i=0;i=0&&a>0)&&(p+=a));return o=d.getPixelForValue(p),{size:s=((r=d.getPixelForValue(p+h))-o)/2,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n,a,r,s,l,u,d,c,h,f,g,p,m,v,b,x,y,k=i.scale.options,M="flex"===k.barThickness?(h=e,g=k,m=(f=i).pixels,v=m[h],b=h>0?m[h-1]:null,x=h');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("
  • ");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],s=a.data[n],l=s&&s.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:i,fillStyle:l.backgroundColor?l.backgroundColor:u(r.backgroundColor,n,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(r.borderColor,n,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(r.borderWidth,n,d.borderWidth),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:g<-Math.PI?1:0))+f,m=Math.cos(g),v=Math.sin(g),b=Math.cos(p),x=Math.sin(p),y=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,k=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,M=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,w=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,S=h/100,C=M?-1:Math.min(m*(m<0?1:S),b*(b<0?1:S)),_=w?-1:Math.min(v*(v<0?1:S),x*(x<0?1:S)),D=y?1:Math.max(m*(m>0?1:S),b*(b>0?1:S)),I=k?1:Math.max(v*(v>0?1:S),x*(x>0?1:S)),P=.5*(D-C),A=.5*(I-_);u=Math.min(s/P,l/A),d={x:-.5*(D+C),y:-.5*(I+_)}}i.borderWidth=e.getMaxBorderWidth(c.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,c.total=e.calculateTotal(),e.outerRadius=i.outerRadius-i.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-i.radiusLength,0),o.each(c.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.chart,r=a.chartArea,s=a.options,l=s.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=s.rotation,h=s.rotation,f=n.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),p=i&&l.animateScale?0:n.innerRadius,m=i&&l.animateScale?0:n.outerRadius,v=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:n.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:m,innerRadius:p,label:v(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(b.startAngle=0===e?s.rotation:n.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return o.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,i,n=0,a=this.index,o=t.length,r=0;r(n=e>n?e:n)?i:n;return n}})}},{25:25,40:40,45:45}],18:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var i,n,a,r=this,s=r.getMeta(),l=s.dataset,u=s.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(s.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=r.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},l.pivot()),i=0,n=u.length;i');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],s=a.data[n].custom||{},l=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:i,fillStyle:s.backgroundColor?s.backgroundColor:l(r.backgroundColor,n,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(r.borderColor,n,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(r.borderWidth,n,u.borderWidth),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,i=e.getMeta(),n=i.dataset,a=i.data,r=n.custom||{},s=e.getDataset(),l=e.chart.options.elements.line,u=e.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),o.extend(i.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(s.lineTension,l.tension),backgroundColor:r.backgroundColor?r.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:s.borderWidth||l.borderWidth,borderColor:r.borderColor?r.borderColor:s.borderColor||l.borderColor,fill:r.fill?r.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:r.borderDash?r.borderDash:s.borderDash||l.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle}}),i.dataset.pivot(),o.each(a,function(i,n){e.updateElement(i,n,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,i){var n=this,a=t.custom||{},r=n.getDataset(),s=n.chart.scale,l=n.chart.options.elements.point,u=s.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:n.index,_index:e,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,n.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,l.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();o.each(e.data,function(i,n){var a=i._model,r=o.splineCurve(o.previousItem(e.data,n,!0)._model,a,o.nextItem(e.data,n,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),i.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model;a.radius=i.hoverRadius?i.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=i.radius?i.radius:o.valueAtIndexOrDefault(e.pointRadius,n,r.radius),a.backgroundColor=i.backgroundColor?i.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,n,r.backgroundColor),a.borderColor=i.borderColor?i.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,n,r.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,n,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,i){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45);n._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,n||(t.animating=!0),a=0,o=r.length;a1&&(i=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+i);var n=Date.now();t.dropFrames+=(n-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,i,n=this.animations,a=0;a=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,i){"use strict";var n=t(25),a=t(45),o=t(28),r=t(30),s=t(48),l=t(31);e.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(e,i){var o,r,l=this;(r=(o=(o=i)||{}).data=o.data||{}).datasets=r.datasets||[],r.labels=r.labels||[],o.options=a.configMerge(n.global,n[o.type],o.options||{}),i=o;var u=s.acquireContext(e,i),d=u&&u.canvas,c=d&&d.height,h=d&&d.width;l.id=a.uid(),l.ctx=u,l.canvas=d,l.config=i,l.width=h,l.height=c,l.aspectRatio=c?h/c:null,l.options=i.options,l._bufferedRender=!1,l.chart=l,l.controller=l,t.instances[l.id]=l,Object.defineProperty(l,"data",{get:function(){return l.config.data},set:function(t){l.config.data=t}}),u&&d?(l.initialize(),l.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return l.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,o=i.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(n))),s=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(n)));if((e.width!==r||e.height!==s)&&(n.width=e.width=r,n.height=e.height=s,n.style.width=r+"px",n.style.height=s+"px",a.retinaScale(e,i.devicePixelRatio),!t)){var u={width:r,height:s};l.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var i=this,n=i.options,o=i.scales||{},r=[],s=Object.keys(o).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(r,function(n){var r=n.options,l=r.id,u=a.valueOrDefault(r.type,n.dtype);e(r.position)!==e(n.dposition)&&(r.position=n.dposition),s[l]=!0;var d=null;if(l in o&&o[l].type===u)(d=o[l]).options=r,d.ctx=i.ctx,d.chart=i;else{var c=t.scaleService.getScaleConstructor(u);if(!c)return;d=new c({id:l,type:u,options:r,ctx:i.ctx,chart:i}),o[d.id]=d}d.mergeTicksOptions(),n.isDefault&&(i.scale=d)}),a.each(s,function(t,e){t||delete o[e]}),i.scales=o,t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,i=[],n=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),s=a.type||e.config.type;if(r.type&&r.type!==s&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=s,i.push(r.type),r.controller)r.controller.updateIndex(o),r.controller.linkScales();else{var l=t.controllers[r.type];if(void 0===l)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new l(e,o),n.push(r.controller)}},e),n},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var i,n,o=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),n=(i=o).options,a.each(i.scales,function(t){r.removeBox(i,t)}),n=a.configMerge(t.defaults.global,t.defaults[i.config.type],n),i.options=i.config.options=n,i.ensureScalesHaveIDs(),i.buildOrUpdateScales(),i.tooltip._options=n.tooltips,i.tooltip.initialize(),l._invalidate(o),!1!==l.notify(o,"beforeUpdate")){o.tooltip._data=o.data;var s=o.buildOrUpdateControllers();a.each(o.data.datasets,function(t,e){o.getDatasetMeta(e).controller.buildOrUpdateElements()},o),o.updateLayout(),o.options.animation&&o.options.animation.duration&&a.each(s,function(t){t.reset()}),o.updateDatasets(),o.tooltip.initialize(),o.lastActive=[],l.notify(o,"afterUpdate"),o._bufferedRender?o._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:o.render(e)}},updateLayout:function(){!1!==l.notify(this,"beforeLayout")&&(r.update(this,this.width,this.height),l.notify(this,"afterScaleUpdate"),l.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==l.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);l.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==l.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),l.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==l.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),l.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=o.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},n.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&i(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;ti&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i=i[e].length&&i[e].push({}),!i[e][r].type||l.type&&l.type!==i[e][r].type?o.merge(i[e][r],[t.scaleService.getScaleDefaults(s),l]):o.merge(i[e][r],l)}else o._merger(e,i,n,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return o.each(t,function(t){e(t)&&i.push(t)}),i},o.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n=0;n--){var a=t[n];if(e(a))return a}},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,i){return Math.abs(t-e)t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=s/(s+l),d=l/(s+l),c=n*(u=isNaN(u)?0:u),h=n*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,i,n,a,r,s,l,u,d,c=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=c.length;for(e=0;e0?c[e-1]:null,(a=e0?c[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var i=Math.floor(o.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,s=r.getBoundingClientRect(),l=a.touches;l&&l.length>0?(i=l[0].clientX,n=l[0].clientY):(i=a.clientX,n=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=s.right-s.left-u-c,g=s.bottom-s.top-d-h;return{x:i=Math.round((i-s.left-u)/f*r.width/e.currentDevicePixelRatio),y:n=Math.round((n-s.top-d)/g*r.height/e.currentDevicePixelRatio)}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var i=parseInt(o.getStyle(e,"padding-left"),10),n=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-i-n,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var i=parseInt(o.getStyle(e,"padding-top"),10),n=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-i-n,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},o.fontString=function(t,e,i){return e+" "+t+"px "+i},o.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},r=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},r=n.garbageCollect=[],n.font=e),t.font=e;var s=0;o.each(i,function(e){null!=e&&!0!==o.isArray(e)?s=o.measureText(t,a,r,s,e):o.isArray(e)&&o.each(e,function(e){null==e||o.isArray(e)||(s=o.measureText(t,a,r,s,e))})});var l=r.length/2;if(l>i.length){for(var u=0;un&&(n=o),n},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,i){"use strict";var n=t(45);function a(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function o(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return r(t,a(e,t))},nearest:function(t,e,i){var n=a(e,t);i.axis=i.axis||"xy";var o=l(i.axis),r=s(t,n,i.intersect,o);return r.length>1&&r.sort(function(t,e){var i=t.getArea()-e.getArea();return 0===i&&(i=t._datasetIndex-e._datasetIndex),i}),r.slice(0,1)},x:function(t,e,i){var n=a(e,t),r=[],s=!1;return o(t,function(t){t.inXRange(n.x)&&r.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(r=[]),r},y:function(t,e,i){var n=a(e,t),r=[],s=!1;return o(t,function(t){t.inYRange(n.y)&&r.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(r=[]),r}}}},{45:45}],29:[function(t,e,i){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,i){"use strict";var n=t(45);function a(t,e){return n.where(t,function(t){return t.position===e})}function o(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;rh&&lt.maxHeight){l--;break}l++,c=u*d}t.labelRotation=l},afterCalculateTickRotation:function(){o.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){o.callback(this.options.beforeFit,[this])},fit:function(){var t=this,n=t.minSize={width:0,height:0},a=s(t._ticks),l=t.options,u=l.ticks,d=l.scaleLabel,c=l.gridLines,h=l.display,f=t.isHorizontal(),g=i(u),p=l.gridLines.tickMarkLength;if(n.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,n.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var m=r(d)+o.options.toPadding(d.padding).height;f?n.height+=m:n.width+=m}if(u.display&&h){var v=o.longestText(t.ctx,g.font,a,t.longestTextCache),b=o.numberOfLabelLines(a),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var k=o.toRadians(t.labelRotation),M=Math.cos(k),w=Math.sin(k)*v+g.size*b+x*(b-1)+x;n.height=Math.min(t.maxHeight,n.height+w+y),t.ctx.font=g.font;var S=e(t.ctx,a[0],g.font),C=e(t.ctx,a[a.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===l.position?M*S+3:M*x+3,t.paddingRight="bottom"===l.position?M*x+3:M*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?v=0:v+=y+x,n.width=Math.min(t.maxWidth,n.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=n.width,t.height=n.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){o.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(o.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:o.noop,getPixelForValue:o.noop,getValueForPixel:o.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n,a,r=this,s=r.isHorizontal(),l=r.options.ticks.minor,u=t.length,d=o.toRadians(r.labelRotation),c=Math.cos(d),h=r.longestLabelWidth*c,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(h+l.autoSkipPadding)*u>r.width-(r.paddingLeft+r.paddingRight)&&(e=1+Math.floor((h+l.autoSkipPadding)*u/(r.width-(r.paddingLeft+r.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),i=0;i1&&i%e>0||i%e==0&&i+e>=u)&&i!==u-1&&delete n.label,f.push(n);return f},draw:function(t){var e=this,a=e.options;if(a.display){var s=e.ctx,u=n.global,d=a.ticks.minor,c=a.ticks.major||d,h=a.gridLines,f=a.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),m=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=o.valueOrDefault(d.fontColor,u.defaultFontColor),b=i(d),x=o.valueOrDefault(c.fontColor,u.defaultFontColor),y=i(c),k=h.drawTicks?h.tickMarkLength:0,M=o.valueOrDefault(f.fontColor,u.defaultFontColor),w=i(f),S=o.options.toPadding(f.padding),C=o.toRadians(e.labelRotation),_=[],D=e.options.gridLines.lineWidth,I="right"===a.position?e.right:e.right-D-k,P="right"===a.position?e.right+k:e.right,A="bottom"===a.position?e.top+D:e.bottom-k-D,T="bottom"===a.position?e.top+D+k:e.bottom+D;if(o.each(m,function(i,n){if(!o.isNullOrUndef(i.label)){var r,s,c,f,v,b,x,y,M,w,S,F,O,R,L=i.label;n===e.zeroLineIndex&&a.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=o.valueAtIndexOrDefault(h.lineWidth,n),s=o.valueAtIndexOrDefault(h.color,n),c=o.valueOrDefault(h.borderDash,u.borderDash),f=o.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var z="middle",B="middle",W=d.padding;if(p){var N=k+W;"bottom"===a.position?(B=g?"middle":"top",z=g?"right":"center",R=e.top+N):(B=g?"middle":"bottom",z=g?"left":"center",R=e.bottom-N);var V=l(e,n,h.offsetGridLines&&m.length>1);V1);j3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=n.log10(Math.abs(a)),r="";if(0!==t){var s=-1*Math.floor(o);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r},logarithmic:function(t,e,i){var a=t/Math.pow(10,Math.floor(n.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===i.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45);n._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(t.length>0){var o=t[0];o.xLabel?i=o.xLabel:a>0&&o.indexl.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===c?(i=function(t){return t<=h},n=function(t){return t>h}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,F=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,r=e.body,s=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);s+=e.beforeBody.length+e.afterBody.length;var l=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;n+=l*d,n+=l?(l-1)*e.titleSpacing:0,n+=l?e.titleMarginBottom:0,n+=s*c,n+=s?(s-1)*e.bodySpacing:0,n+=u?e.footerMarginTop:0,n+=u*h,n+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,i.measureText(t).width+f)};return i.font=o.fontString(d,e._titleFontStyle,e._titleFontFamily),o.each(e.title,g),i.font=o.fontString(c,e._bodyFontStyle,e._bodyFontFamily),o.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,o.each(r,function(t){o.each(t.before,g),o.each(t.lines,g),o.each(t.after,g)}),f=0,i.font=o.fontString(h,e._footerFontStyle,e._footerFontFamily),o.each(e.footer,g),{width:a+=2*e.xPadding,height:n}}(this,D)),a=D,s=F,l=A,u=S._chart,d=a.x,c=a.y,h=a.caretSize,f=a.caretPadding,g=a.cornerRadius,p=l.xAlign,m=l.yAlign,v=h+f,b=g+f,"right"===p?d-=s.width:"center"===p&&((d-=s.width/2)+s.width>u.width&&(d=u.width-s.width),d<0&&(d=0)),"top"===m?c+=v:c-="bottom"===m?s.height+v:s.height/2,"center"===m?"left"===p?d+=v:"right"===p&&(d-=v):"left"===p?d-=b:"right"===p&&(d+=b),T={x:d,y:c}}else D.opacity=0;return D.xAlign=A.xAlign,D.yAlign=A.yAlign,D.x=T.x,D.y=T.y,D.width=F.width,D.height=F.height,D.caretX=O.x,D.caretY=O.y,S._model=D,e&&C.custom&&C.custom.call(S,D),S},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,"left"===c?(a=(n=f)-u,o=n,r=s+u,l=s-u):(a=(n=f+p)+u,o=n,r=s-u,l=s+u);else if("left"===c?(n=(a=f+d+u)-u,o=a+u):"right"===c?(n=(a=f+p-d-u)-u,o=a+u):(n=(a=i.caretX)-u,o=a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,i,n,a){var r=i.title;if(r.length){n.textAlign=i._titleAlign,n.textBaseline="top";var s,l,u=i.titleFontSize,d=i.titleSpacing;for(n.fillStyle=e(i.titleFontColor,a),n.font=o.fontString(u,i._titleFontStyle,i._titleFontFamily),s=0,l=r.length;s0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(n,e,t,i,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,a),this.drawBody(n,e,t,a),this.drawFooter(n,e,t,a))}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!o.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;el;)a-=2*Math.PI;for(;a=s&&a<=l,d=r>=i.innerRadius&&r<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45),r=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=r.elements.line,c=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||r.defaultColor,s.beginPath(),c=-1,t=0;tt?1:-1,o=1,r=l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,i=l.y,a=1,o=(n=l.base)>i?1:-1,r=l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(i-n)),c=(u=u>d?d:u)/2,h=t+("left"!==r?c*a:0),f=e+("right"!==r?-c*a:0),g=i+("top"!==r?c*o:0),p=n+("bottom"!==r?-c*o:0);h!==f&&(i=g,n=p),g!==p&&(t=h,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var m=[[t,n],[t,i],[e,i],[e,n]],v=["bottom","left","top","right"].indexOf(r,0);function b(t){return m[(v+t)%4]}-1===v&&(v=0);var x=b(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=b(y),s.lineTo(x[0],x[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=r(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=r(this);return o(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=r(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=r(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return o(this)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,i){"use strict";var n=t(42);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,n/2),s=Math.min(o,a/2);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.quadraticCurveTo(e+n,i,e+n,i+s),t.lineTo(e+n,i+a-s),t.quadraticCurveTo(e+n,i+a,e+n-r,i+a),t.lineTo(e+r,i+a),t.quadraticCurveTo(e,i+a,e,i+a-s),t.lineTo(e,i+s),t.quadraticCurveTo(e,i,e+r,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a){var o,r,s,l,u,d;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(i)||i<=0)){switch(e){default:t.beginPath(),t.arc(n,a,i,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(n-r/2,a+u/3),t.lineTo(n+r/2,a+u/3),t.lineTo(n,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*i,t.beginPath(),t.fillRect(n-d,a-d,2*d,2*d),t.strokeRect(n-d,a-d,2*d,2*d);break;case"rectRounded":var c=i/Math.SQRT2,h=n-c,f=a-c,g=Math.SQRT2*i;t.beginPath(),this.roundedRect(t,h,f,g,g,i/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*i,t.beginPath(),t.moveTo(n-d,a),t.lineTo(n,a+d),t.lineTo(n+d,a),t.lineTo(n,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case"crossRot":t.beginPath(),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case"star":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case"line":t.beginPath(),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(n,a),t.lineTo(n+i,a),t.closePath()}t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments),t.closePath()}},{42:42}],42:[function(t,e,i){"use strict";var n,a={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return a.valueOrDefault(a.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var o,r,s;if(a.isArray(t))if(r=t.length,n)for(o=r-1;o>=0;o--)e.call(i,t[o],o);else for(o=0;o=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},n.easingEffects=a},{42:42}],44:[function(t,e,i){"use strict";var n=t(42);e.exports={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,a,o;return n.isObject(t)?(e=+t.top||0,i=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=i=a=o=+t||0,{top:e,right:i,bottom:a,left:o,height:e+a,width:o+i}},resolve:function(t,e,i){var a,o,r;for(a=0,o=t.length;a
    ';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var s=function(){e._reset(),t()};return h(a,"scroll",s.bind(a,"expand")),h(r,"scroll",s.bind(r,"shrink")),e}((u=function(){if(x.resizer)return e(g("resize",i))},c=!1,f=[],function(){f=Array.prototype.slice.call(arguments),d=d||this,c||(c=!0,n.requestAnimFrame.call(window,function(){c=!1,u.apply(d,f)}))}));m=function(){if(x.resizer){var e=t.parentNode;e&&e!==y.parentNode&&e.insertBefore(y,e.firstChild),y._reset()}},v=(p=t)[a]||(p[a]={}),b=v.renderProxy=function(t){t.animationName===s&&m()},n.each(l,function(t){h(p,t,b)}),v.reflow=!!p.offsetParent,p.classList.add(r)}function m(t){var e,i,o,s=t[a]||{},u=s.resizer;delete s.resizer,i=(e=t)[a]||{},(o=i.renderProxy)&&(n.each(l,function(t){f(e,t,o)}),delete i.renderProxy),e.classList.remove(r),u&&u.parentNode&&u.parentNode.removeChild(u)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,i,n="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+s+"{"+n+"}@keyframes "+s+"{"+n+"}."+r+"{-webkit-animation:"+s+" 0.001s;animation:"+s+" 0.001s;}",i=(t=this)._style||document.createElement("style"),t._style||(t._style=i,e="/* Chart.js */\n"+e,i.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),o=t.getAttribute("width");if(t[a]={initial:{height:n,width:o,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===o||""===o){var r=d(t,"width");void 0!==r&&(t.width=r)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=d(t,"height");void 0!==r&&(t.height=s)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[a]){var i=e[a].initial;["height","width"].forEach(function(t){var a=i[t];n.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),n.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[a]}},addEventListener:function(t,e,i){var o=t.canvas;if("resize"!==e){var r=i[a]||(i[a]={});h(o,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){var a,o,r,s;i((o=t,r=u[(a=e).type]||a.type,s=n.getRelativePosition(a,o),g(r,o,s.x,s.y,a)))})}else p(o,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var o=((i[a]||{}).proxies||{})[t.id+"_"+e];o&&f(n,e,o)}else m(n)}},n.addEvent=h,n.removeEvent=f},{45:45}],48:[function(t,e,i){"use strict";var n=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,i){"use strict";e.exports={},e.exports.filler=t(50),e.exports.legend=t(51),e.exports.title=t(52)},{50:50,51:51,52:52}],50:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("global",{plugins:{filler:{propagate:!0}}});var r={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function l(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function u(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function d(t){return t&&!t.skip}function c(t,e,i,n,a){var r;if(n&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r0;--r)o.canvas.lineTo(t,i[r],i[r-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,o,d,c,h,f,g=(t.data.datasets||[]).length,p=e.propagate,m=[];for(n=0;n');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push(""),e.join("")}});var u=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},i=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,i=e.labels,a=e.display,r=t.ctx,s=n.global,u=o.valueOrDefault,d=u(i.fontSize,s.defaultFontSize),c=u(i.fontStyle,s.defaultFontStyle),h=u(i.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,m=t.isHorizontal();if(m?(p.width=t.maxWidth,p.height=a?10:0):(p.width=a?10:0,p.height=t.maxHeight),a)if(r.font=f,m){var v=t.lineWidths=[0],b=t.legendItems.length?d+i.padding:0;r.textAlign="left",r.textBaseline="top",o.each(t.legendItems,function(e,n){var a=l(i,d)+d/2+r.measureText(e.text).width;v[v.length-1]+a+i.padding>=t.width&&(b+=d+i.padding,v[v.length]=t.left),g[n]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+i.padding}),p.height+=b}else{var x=i.padding,y=t.columnWidths=[],k=i.padding,M=0,w=0,S=d+x;o.each(t.legendItems,function(t,e){var n=l(i,d)+d/2+r.measureText(t.text).width;w+S>p.height&&(k+=M+i.padding,y.push(M),M=0,w=0),M=Math.max(M,n),w+=S,g[e]={left:0,top:0,width:n,height:d}}),k+=M,y.push(M),p.width+=k}t.width=p.width,t.height=p.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,a=n.global,r=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(i.fontColor,a.defaultFontColor),g=h(i.fontSize,a.defaultFontSize),p=h(i.fontStyle,a.defaultFontStyle),m=h(i.fontFamily,a.defaultFontFamily),v=o.fontString(g,p,m);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var b=l(i,g),x=t.legendHitBoxes,y=t.isHorizontal();d=y?{x:t.left+(s-u[0])/2,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var k=g+i.padding;o.each(t.legendItems,function(n,l){var f,p,m,v,M,w=c.measureText(n.text).width,S=b+g/2+w,C=d.x,_=d.y;y?C+S>=s&&(_=d.y+=k,d.line++,C=d.x=t.left+(s-u[d.line])/2):_+k>t.bottom&&(C=d.x=C+t.columnWidths[d.line]+i.padding,_=d.y=t.top+i.padding,d.line++),function(t,i,n){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(n.fillStyle,a.defaultColor),c.lineCap=h(n.lineCap,r.borderCapStyle),c.lineDashOffset=h(n.lineDashOffset,r.borderDashOffset),c.lineJoin=h(n.lineJoin,r.borderJoinStyle),c.lineWidth=h(n.lineWidth,r.borderWidth),c.strokeStyle=h(n.strokeStyle,a.defaultColor);var s=0===h(n.lineWidth,r.borderWidth);if(c.setLineDash&&c.setLineDash(h(n.lineDash,r.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=i+u;o.canvas.drawPoint(c,n.pointStyle,l,d,f)}else s||c.strokeRect(t,i,b,g),c.fillRect(t,i,b,g);c.restore()}}(C,_,n),x[l].left=C,x[l].top=_,f=n,p=w,v=b+(m=g/2)+C,M=_+m,c.fillText(f.text,v,M),f.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(v,M),c.lineTo(v+p,M),c.stroke()),y?d.x+=S+i.padding:d.y+=k})}},handleEvent:function(t){var e=this,i=e.options,n="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===n){if(!i.onHover)return}else{if("click"!==n)return;if(!i.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var i=new u({ctx:t.ctx,options:e,chart:t});r.configure(t,i,e),r.addBox(t,i),t.legend=i}e.exports={id:"legend",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(o.mergeIf(e,n.global.legend),i?(r.configure(t,i,e),i.options=e):d(t,e)):i&&(r.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{25:25,26:26,30:30,45:45}],52:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45),r=t(30),s=o.noop;n._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var l=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=o.valueOrDefault,i=t.options,a=i.display,r=e(i.fontSize,n.global.defaultFontSize),s=t.minSize,l=o.isArray(i.text)?i.text.length:1,u=o.options.toLineHeight(i.lineHeight,r),d=a?l*u+2*i.padding:0;t.isHorizontal()?(s.width=t.maxWidth,s.height=d):(s.width=d,s.height=t.maxHeight),t.width=s.width,t.height=s.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=o.valueOrDefault,a=t.options,r=n.global;if(a.display){var s,l,u,d=i(a.fontSize,r.defaultFontSize),c=i(a.fontStyle,r.defaultFontStyle),h=i(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,m=0,v=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=i(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(l=b+(y-b)/2,u=v+p,s=y-b):(l="left"===a.position?b+p:y-p,u=v+(x-v)/2,s=x-v,m=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(m),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var M=0,w=0;wt.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=a.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",i,e)}},{25:25,34:34,45:45}],55:[function(t,e,i){"use strict";var n=t(45);e.exports=function(t){var e=n.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=n.sign(t.min),a=n.sign(t.max);i<0&&a<0?t.max=0:i>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),a={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,stepSize:n.valueOrDefault(e.fixedStepSize,e.stepSize)},o=t.ticks=function(t,e){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var o=n.niceNum(e.max-e.min,!1);i=n.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/i)*i,s=Math.ceil(e.max/i)*i;t.min&&t.max&&t.stepSize&&n.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(r=t.min,s=t.max);var l=(s-r)/i;l=n.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l);var u=1;i<1&&(u=Math.pow(10,i.toString().length-2),r=Math.round(r*u)/u,s=Math.round(s*u)/u),a.push(void 0!==t.min?t.min:r);for(var d=1;d0){var i=n.min(e),a=n.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?a:Math.max(t.max,a)}})}else n.each(a,function(e,a){var o=i.getDatasetMeta(a);i.isDatasetVisible(a)&&r(o)&&n.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||o.data[i].hidden||n<0||(null===t.min?t.min=n:nt.max&&(t.max=n),0!==n&&(null===t.minNotZero||n0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(n.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),a={min:e.min,max:e.max},o=t.ticks=function(t,e){var i,a,o=[],r=n.valueOrDefault,s=r(t.min,Math.pow(10,Math.floor(n.log10(e.min)))),l=Math.floor(n.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(i=Math.floor(n.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,i)),o.push(s),s=a*Math.pow(10,i)):(i=Math.floor(n.log10(s)),a=Math.floor(s/Math.pow(10,i)));for(var d=i<0?Math.pow(10,Math.abs(i)):1;o.push(s),10==++a&&(a=1,d=++i>=0?1:d),s=Math.round(a*Math.pow(10,i)*d)/d,ia?{start:e-i-5,end:e}:{start:e,end:e+i+5}}function u(t,e,i,n){if(a.isArray(e))for(var o=i.y,r=1.5*n,s=0;sd.r&&(d.r=b.end,c.r=m),x.startd.b&&(d.b=x.end,c.b=m)}t.setReductions(u,d,c)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),r=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=d(n),a=d(a),o=d(o),r=d(r),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(o+r)/2)),this.setCenterPoint(n,a,o,r)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/r(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,i=t.options,n=i.gridLines,o=i.ticks,l=a.valueOrDefault;if(i.display){var d=t.ctx,c=this.getIndexAngle(0),h=l(o.fontSize,e.defaultFontSize),f=l(o.fontStyle,e.defaultFontStyle),g=l(o.fontFamily,e.defaultFontFamily),p=a.fontString(h,f,g);a.each(t.ticks,function(i,s){if(s>0||o.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(n.display&&0!==s&&function(t,e,i,n){var o=t.ctx;if(o.strokeStyle=a.valueAtIndexOrDefault(e.color,n-1),o.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,n-1),t.options.gridLines.circular)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var s=r(t);if(0===s)return;o.beginPath();var l=t.getPointPosition(0,i);o.moveTo(l.x,l.y);for(var u=1;u=0;m--){if(o.display){var v=t.getPointPosition(m,g);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(v.x,v.y),i.stroke(),i.closePath()}if(l.display){var b=t.getPointPosition(m,g+5),x=a.valueAtIndexOrDefault(l.fontColor,m,e.defaultFontColor);i.font=p.font,i.fillStyle=x;var y=t.getIndexAngle(m),k=a.toDegrees(y);i.textAlign=0===(f=k)||180===f?"center":f<180?"left":"right",d=k,c=t._pointLabelSizes[m],h=b,90===d||270===d?h.y-=c.h/2:(d>270||d<90)&&(h.y-=c.h),u(i,t.pointLabels[m]||"",b,p.size)}}}(t)}}});t.scaleService.registerScaleType("radialLinear",c,i)}},{25:25,34:34,45:45}],58:[function(t,e,i){"use strict";var n=t(1);n="function"==typeof n?n:window.moment;var a=t(25),o=t(45),r=Number.MIN_SAFE_INTEGER||-9007199254740991,s=Number.MAX_SAFE_INTEGER||9007199254740991,l={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},u=Object.keys(l);function d(t,e){return t-e}function c(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,u=(r[n]-o[n])*l;return o[n]+u}function f(t,e){var i=e.parser,a=e.parser||e.format;return"function"==typeof i?i(t):"string"==typeof t&&"string"==typeof a?n(t,a):(t instanceof n||(t=n(t)),t.isValid()?t:"function"==typeof a?a(t):t)}function g(t,e){if(o.isNullOrUndef(t))return null;var i=e.options.time,n=f(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function p(t){for(var e=u.indexOf(t)+1,i=u.length;e=k&&i<=M&&_.push(i);return y.min=k,y.max=M,y._unit=S.unit||function(t,e,i,a){var o,r,s=n.duration(n(a).diff(n(i)));for(o=u.length-1;o>=u.indexOf(e);o--)if(r=u[o],l[r].common&&s.as(r)>=t.length)return r;return u[e?u.indexOf(e):0]}(_,S.minUnit,y.min,y.max),y._majorUnit=p(y._unit),y._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,u=[],d=[e];for(a=0,o=t.length;ae&&s1?o[1]:s,v=o[0],b=(h(a,"time",c,"pos")-h(a,"time",v,"pos"))/2),d.time.max||(c=o[o.length-1],v=o.length>1?o[o.length-2]:r,x=(h(a,"time",c,"pos")-h(a,"time",v,"pos"))/2)),{left:b,right:x}),y._labelFormat=function(t,e){var i,n,a,o=t.length;for(i=0;i=0&&t0?s:1}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,25:25,45:45}]},{},[7])(7)});prewikka-5.2.0/prewikka/renderer/chartjs/pie/0000755000000000000000000000000013726165110021131 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/pie/__init__.py0000644000000000000000000000522413726165107023253 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2020 CS GROUP - France. All Rights Reserved. # Author: Antoine Luong # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """ ChartJS pie plugin """ from .. import ChartJSRenderer from prewikka.renderer import RendererUtils, RendererNoDataException from prewikka import version class ChartJSCircularPlugin(ChartJSRenderer): plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ def render(self, data, query=None, **kwargs): """ Return the HTML for this chart Keyword arguments: data -- List of tuple containing the data for this chart [(count, value, link), ] """ rutils = RendererUtils(kwargs) labels = [] colors = [] pie_data = [] mapping = {} for i, d in enumerate(data): for count, value, link in d: label = rutils.get_label(value) pie_data.append(count) labels.append(label) mapping[label] = link colors.append(self._rgba(rutils.get_color(value), 1)) if not pie_data: raise RendererNoDataException options = { "labels": labels, "datasets": [{ "backgroundColor": colors, "data": pie_data }] } return self.generate_html(kwargs, options, {"layout": {"padding": {"bottom": 20}}}, self.renderer_type, mapping) class ChartJSPiePlugin(ChartJSCircularPlugin): """ ChartJS pie plugin """ renderer_type = "pie" plugin_name = "ChartJS : Pie" plugin_description = N_("ChartJS Pie renderer type") class ChartJSDoughnutPlugin(ChartJSCircularPlugin): """ ChartJS doughnut plugin """ renderer_type = "doughnut" plugin_name = "ChartJS : Doughnut" plugin_description = N_("ChartJS Doughnut renderer type") prewikka-5.2.0/prewikka/renderer/chartjs/timeline/0000755000000000000000000000000013726165110022162 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/renderer/chartjs/timeline/__init__.py0000644000000000000000000000676413726165107024316 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Sélim Menouar # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """ ChartJS line plugin (multiple line) """ from .. import ChartJSRenderer from prewikka.renderer import RendererUtils, RendererNoDataException from prewikka import version class ChartJSTimePlugin(ChartJSRenderer): plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ def render(self, data, query=None, xlegend=[], **kwargs): """ Return the HTML for this chart Keyword arguments: data -- List containing the data for this chart xlegend -- List containing the xAxis legend """ link_mapping = {} options = {"labels": xlegend, "datasets": []} opts = {} if kwargs.get("stacked"): opts["scales"] = { "xAxes": [{"stacked": True}], "yAxes": [{"stacked": True}] } rutils = RendererUtils(kwargs) for index, item in enumerate(data): label = rutils.get_label(item.series) color = rutils.get_color(item.series) options["datasets"].append({ "label": label, "fill": ("-1" if index else "origin") if kwargs.get("stacked") else False, "backgroundColor": self._rgba(color, 1 if self._chart_type == "bar" else 0.2), "borderColor": self._rgba(color, 1), "pointBackgroundColor": self._rgba(color, 1), "pointBorderColor": "#fff", "pointHoverBackgroundColor": "#fff", "pointHoverBorderColor": self._rgba(color, 1), "data": item.values }) link_mapping[label] = {} for i, link in enumerate(item.links): link_mapping[label][xlegend[i]] = link if not options["datasets"]: raise RendererNoDataException return self.generate_html(kwargs, options, opts, self._chart_type, link_mapping, True) class ChartJSTimelinePlugin(ChartJSTimePlugin): """ ChartJS timeline plugin """ renderer_type = "timeline" _chart_type = "line" plugin_name = "ChartJS : Timeline" plugin_description = N_("ChartJS Timeline renderer type") def render(self, data, **kwargs): return ChartJSTimePlugin.render(self, data, **kwargs) class ChartJSTimebarPlugin(ChartJSTimePlugin): """ ChartJS timebar plugin """ renderer_type = "timebar" _chart_type = "bar" plugin_name = "ChartJS : Timebar" plugin_description = N_("ChartJS Timebar renderer type") def render(self, data, **kwargs): return ChartJSTimePlugin.render(self, data, stacked=True, **kwargs) prewikka-5.2.0/prewikka/renderer/chartjs/__init__.py0000644000000000000000000000717013726165107022500 0ustar rootroot00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2018-2020 CS GROUP - France. All Rights Reserved. # Author: Sélim Menouar # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """ ChartJS renderer plugin """ import pkg_resources from prewikka import pluginmanager, version from prewikka.renderer import RendererBackend from prewikka.utils import json class ChartJSRenderer(RendererBackend): """ ChartJS renderer plugin """ renderer_backend = "chartjs" _chartjs_filename = "chartjs/js/Chart.min.js" def _rgba(self, color, alpha=1): return "rgba(%s, %s, %s, %s)" % ( int(color[0:2], 16), int(color[2:4], 16), int(color[4:6], 16), alpha) def generate_html(self, kwargs, data, options, chart_type, mapping=None, multiple=False): """ Generate HTML used in all ChartJS charts Keyword arguments: kwargs -- kwargs options -- Specific options for the chart element_type -- Type of ChartJS element (Point, Segment, ...) mapping -- Array use for onclick event (default None) """ html = """
    """ % {"cssid": kwargs["cssid"]} script = """ $LAB.script("%(chartjs_js)s").wait(function() { var size = prewikka_getRenderSize("#%(cssid)s", %(kwargs)s); var ctx = $("#canvas-%(cssid)s") var dom = $("#chartjs-%(cssid)s"); Chart.defaults.global.maintainAspectRatio = false; dom.css("width", size[0]); dom.css("height", size[1]); $("#%(cssid)s").attr('resizeable', true); var myChart = new Chart(ctx, {type: '%(chart_type)s', data: %(data)s, options: %(options)s}); $("#%(cssid)s").on('resize', function() { myChart.resize(); }); var mapping = %(mapping)s; if ( ! mapping ) return; $("#canvas-%(cssid)s").click(function(evt) { var activePoint = myChart.getElementAtEvent(evt)[0]; var value = %(multiple)s ? mapping[activePoint._view.datasetLabel][activePoint._view.label] : mapping[activePoint._view.label]; if ( activePoint ) prewikka_ajax({url: value}); }); });""" % {"cssid": kwargs["cssid"], "chartjs_js": self._chartjs_filename, "chart_type": chart_type, "kwargs": json.dumps(kwargs), "data": json.dumps(data), "options": json.dumps(options), "mapping": json.dumps(mapping), "multiple": json.dumps(multiple)} return {"html": html, "script": script} class ChartJSPlugin(pluginmanager.PluginPreload): """ ChartJS plugin informations""" plugin_name = "ChartJS renderer" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = _("ChartJS renderer backend") plugin_htdocs = (("chartjs", pkg_resources.resource_filename(__name__, 'htdocs')),) prewikka-5.2.0/prewikka/renderer/__init__.py0000644000000000000000000001404613726165107021042 0ustar rootroot00000000000000# Copyright (C) 2014-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import uuid from prewikka import error, localization, pluginmanager, resource from prewikka.utils import cache RED_STD = "E78D90" ORANGE_STD = "F5B365" YELLOW_STD = "D4C608" GREEN_STD = "B1E55D" BLUE_STD = "93B9DD" GRAY_STD = "5C5C5C" COLORS = (BLUE_STD, GREEN_STD, YELLOW_STD, ORANGE_STD, RED_STD, "C6A0CF", "5256D3", "A7DE65", "F2A97B", "F6818A", "B087C6", "66DC92") class RendererException(Exception): pass class RendererNoDataException(RendererException): def __str__(self): return _("No data to display.") class RendererItem(object): __slots__ = ["values", "series", "links", "_tuple"] def __init__(self, values=0, series=None, links=None): self._tuple = values, series, links self.values = values self.series = series self.links = links def __getitem__(self, i): return self._tuple[i] class RendererUtils(object): _nexist_color = (_("n/a"), GRAY_STD) def __init__(self, options): self._color_map_idx = 0 self._color_map = options.get("names_and_colors") def get_label(self, series): if self._color_map and len(series) == 1: return _(self._color_map.get(series[0], self._nexist_color)[0]) return ", ".join(localization.format_value(s) for s in series) @cache.request_memoize("renderer_color") def get_color(self, series, onecolor=False): if self._color_map and len(series) == 1: color = self._color_map.get(series[0], self._nexist_color)[1] if color: return color color = COLORS[self._color_map_idx % len(COLORS)] if not onecolor: self._color_map_idx += 1 return color class RendererBackend(pluginmanager.PluginBase): pass class RendererPluginManager(pluginmanager.PluginManager): _default_backends = {} def __init__(self, autoupdate=False): self._backends = pluginmanager.PluginManager("prewikka.renderer.backend", autoupdate=autoupdate) pluginmanager.PluginManager.__init__(self, "prewikka.renderer.type", autoupdate=autoupdate) for typ, backend in env.config.renderer_defaults.items(): self._default_backends[typ] = backend self._renderer = {} def _init_callback(self, plugin): self._renderer.setdefault(plugin.renderer_backend, {})[plugin.renderer_type] = plugin if plugin.renderer_type not in self._default_backends: self._default_backends[plugin.renderer_type] = plugin.renderer_backend def get_types(self): return self._default_backends.keys() def has_backend(self, wanted_backend, wanted_type=None): if wanted_backend not in self._renderer: return False if wanted_type is None: return True return set(wanted_type).issubset(self._renderer[wanted_backend]) def get_backends(self, wanted_type): for backend, typedict in self._renderer.items(): if wanted_type in typedict: yield backend def get_backends_instances(self, wanted_type): for backend in self.get_backends(wanted_type): yield self._renderer[backend][wanted_type] def get_default_backend(self, wanted_type): return self._default_backends.get(wanted_type) def _setup_renderer(self, type, renderer): renderer = renderer or self.get_default_backend(type) if renderer is None: raise error.PrewikkaUserError(N_("Renderer error"), N_("No backend supporting render type '%s'", type)) if renderer not in self._renderer: raise error.PrewikkaUserError(N_("Renderer error"), N_("No backend named '%s'", renderer)) if type not in self._renderer[renderer]: raise error.PrewikkaUserError(N_("Renderer error"), N_("Backend '%(backend)s' does not support render type '%(type)s'", {'backend': renderer, 'type': type})) return renderer def update(self, type, data, renderer=None, **kwargs): renderer = self._setup_renderer(type, renderer) return self._renderer[renderer][type].update(data, **kwargs) def render(self, type, data, renderer=None, **kwargs): renderer = self._setup_renderer(type, renderer) classname = kwargs["class"] = "-".join((renderer, type)) cssid = kwargs["cssid"] = "-".join((classname, text_type(uuid.uuid4()))) try: data = self._renderer[renderer][type].render(data, **kwargs) htmls = resource.HTMLSource('
    %s
    ' % (cssid, classname, data.get("html", ""))) return {"html": htmls, "script": resource.HTMLSource(data.get("script", ""))} except RendererException as e: htmls = resource.HTMLSource('
    %s
    ' % (cssid, classname, text_type(e))) return {"html": htmls, "script": None} prewikka-5.2.0/prewikka/session/0000755000000000000000000000000013726165110016573 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/anonymous/0000755000000000000000000000000013726165110020623 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/anonymous/__init__.py0000644000000000000000000000023113726165107022736 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from .anonymous import AnonymousSession # noqa: imported but unused prewikka-5.2.0/prewikka/session/anonymous/anonymous.py0000644000000000000000000000425013726165107023234 0ustar rootroot00000000000000# Copyright (C) 2007-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import auth, database, session, usergroup, version class AnonymousSession(auth.Auth, session.Session, database.DatabaseHelper): plugin_name = "Anonymous authentication" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Anonymous authentication") autologin = True def __init__(self, config): auth.Auth.__init__(self, config) session.Session.__init__(self, config) def init(self, config): user = usergroup.User("anonymous") if not auth.Auth.get_user_by_id(self, user.id): self.create_user(user) def get_user_permissions(self, user, ignore_group=False): return usergroup.ALL_PERMISSIONS def get_user_info(self, request): return session.SessionUserInfo("anonymous", None) def get_user_list(self, search=None): return [usergroup.User("anonymous")] def get_user_by_id(self, id_): return usergroup.User("anonymous") def has_user(self, other): return usergroup.User("anonymous") def authenticate(self, login, password="", no_password_check=False): return usergroup.User("anonymous") prewikka-5.2.0/prewikka/session/loginform/0000755000000000000000000000000013726165110020567 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/loginform/htdocs/0000755000000000000000000000000013726165110022053 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/loginform/htdocs/css/0000755000000000000000000000000013726165110022643 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/loginform/htdocs/css/loginform.css0000644000000000000000000000034113726165107025355 0ustar rootroot00000000000000.login_password { top: 100px; font-size: 10pt; /* for error messages */ } .prelude-version { position: absolute; bottom: 5px; width: 100%; text-align: center; color: gray; font-size: 10pt; } prewikka-5.2.0/prewikka/session/loginform/templates/0000755000000000000000000000000013726165110022565 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/session/loginform/templates/loginform.mak0000644000000000000000000000357713726165107025275 0ustar rootroot00000000000000<%! import string from prewikka import localization, version %> <%inherit file="/prewikka/templates/toplayout.mak" /> <%block name="main_content"> <% localization.set_locale(env.config.general.default_locale) %> <% footer = env.config.session.get("footer") %> % if footer:
    ${ string.Template(footer).safe_substitute(version=version.__version__) }
    % endif prewikka-5.2.0/prewikka/session/loginform/__init__.py0000644000000000000000000000355413726165107022715 0ustar rootroot00000000000000# Copyright (C) 2013-2020 CS GROUP - France. All Rights Reserved. # Author: Antoine Luong # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """ Login/password authentication module """ from __future__ import absolute_import, division, print_function, unicode_literals import pkg_resources from prewikka import session, template, version class LoginFormSession(session.Session): plugin_name = "Login authentication" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Login/Password authentication") plugin_htdocs = (("loginform", pkg_resources.resource_filename(__name__, 'htdocs')),) template = template.PrewikkaTemplate(__name__, 'templates/loginform.mak') def get_user_info(self, request): login = request.arguments.pop("_login", None) if not login: return None return session.SessionUserInfo(login, request.arguments.pop("_password", "")) def logout(self, request): return session.Session.logout(self, request) def get_default_auth(self): return "dbauth" prewikka-5.2.0/prewikka/session/__init__.py0000644000000000000000000000027713726165107020720 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from .session import Session, SessionExpired, SessionInvalid, SessionUserInfo # noqa: imported but unused prewikka-5.2.0/prewikka/session/session.py0000644000000000000000000001617413726165107020647 0ustar rootroot00000000000000# Copyright (C) 2004-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import binascii import os import struct import time from prewikka import database, hookmanager, log, pluginmanager, usergroup, utils from prewikka.error import PrewikkaUserError, RedirectionError class _SessionError(PrewikkaUserError): code = 401 def __init__(self, login=None, **kwargs): PrewikkaUserError.__init__(self, log_user=login, **kwargs) class SessionInvalid(_SessionError): name = N_("Invalid session") message = N_("The session cookie carried by your browser is invalid") class SessionExpired(_SessionError): name = N_("Session expired") message = N_("Your session has expired: please sign in again to continue using Prelude") class SessionUserInfo(object): def __init__(self, login, password=None): self.login = login self.password = password class SessionDatabase(database.DatabaseHelper): def create_session(self, sessionid, user, time): self.query("INSERT INTO Prewikka_Session (sessionid, userid, login, time) VALUES(%s, %s, %s, %s)", sessionid, user.id, user.name, self.datetime(time)) def update_session(self, sessionid, time): self.query("UPDATE Prewikka_Session SET time=%s WHERE sessionid=%s", self.datetime(time), sessionid) def get_session(self, sessionid): rows = self.query("SELECT login, time FROM Prewikka_Session WHERE sessionid = %s", sessionid) if not rows: raise login, t = rows[0] return login, utils.timeutil.get_timestamp_from_string(t) def delete_session(self, sessionid=None, user=None): assert not (sessionid and user) if sessionid: self.query("DELETE FROM Prewikka_Session WHERE sessionid = %s", sessionid) elif user: self.query("DELETE FROM Prewikka_Session WHERE userid = %s", user.id) def delete_expired_sessions(self, time): self.query("DELETE FROM Prewikka_Session WHERE time < %s", self.datetime(time)) class Session(pluginmanager.PluginBase): template = None autologin = False plugin_mandatory = True def __init__(self, config): pluginmanager.PluginBase.__init__(self) self._db = SessionDatabase() self._expiration = config.get_int('expiration', 60) * 60 def __set_session(self, request, sessionid): request.add_cookie("sessionid", sessionid, expires=self._expiration * 3, httponly=True) def __check_session(self, request): sessionid = request.input_cookie.get("sessionid") if not sessionid: # No session cookie sent by the browser if request.is_xhr: # In case of an AJAX request, we consider that # the session cookie expired and was not sent. raise SessionExpired(login=None, template=self.template) else: # Otherwise, we consider that the session cookie did not exist, # and we don't display any message on the login page. raise SessionInvalid(message="", template=self.template, log_priority=log.INFO) sessionid = sessionid.value try: login, t = self._db.get_session(sessionid) except: request.delete_cookie("sessionid") raise SessionInvalid(template=self.template) # Check that the session is still alive... now = int(time.time()) if now - t > self._expiration: self.__delete_session(request) raise SessionExpired(login, template=self.template) # And that the user it carry still exist in the current authentication # backend (which might have changed) user = usergroup.User(login) if not env.auth.has_user(user): self.__delete_session(request) raise SessionInvalid(login, template=self.template) if (now - t) / 60 >= 5: self._db.update_session(sessionid, now) list(hookmanager.trigger("HOOK_SESSION_UPDATE", user)) self.__set_session(request, sessionid) return login def __create_session(self, request, user): t = time.time() self._db.delete_expired_sessions(t - self._expiration) sessionid = binascii.hexlify(os.urandom(16) + struct.pack(b">d", t)).decode("utf8") self._db.create_session(sessionid, user, int(t)) self.__set_session(request, sessionid) def __delete_session(self, request): self._db.delete_session(sessionid=request.input_cookie["sessionid"].value) request.delete_cookie("sessionid") def get_user(self, request): info = self.get_user_info(request) if not(info) or not(info.login) or self.autologin: try: login = self.__check_session(request) except (SessionInvalid, SessionExpired): if not self.autologin: raise else: if not info or not info.login or login == info.login: return usergroup.User(login) else: self.__delete_session(request) user = self.authenticate(request, info) self.__create_session(request, user) list(hookmanager.trigger("HOOK_SESSION_CREATE", user)) is_admin = set(user.permissions) == usergroup.ALL_PERMISSIONS env.log.info("User login with profile '%s'" % ("admin" if is_admin else "default")) if "login_prevent_redirect" in env.request.web.arguments: return user raise RedirectionError(env.request.web.get_raw_uri(True), 303) def authenticate(self, request, info): return env.auth.authenticate(info.login, info.password) def logout(self, request): login = self.__check_session(request) self.__delete_session(request) list(hookmanager.trigger("HOOK_SESSION_DELETE", usergroup.User(login))) env.log.info("Logged out") raise SessionInvalid(message=N_("Logged out"), login=login, log_priority=log.INFO, template=self.template) def can_logout(self): return "logout" in self.__class__.__dict__ def get_user_info(self, request): pass def get_default_auth(self): pass def init(self, config): pass prewikka-5.2.0/prewikka/sql/0000755000000000000000000000000013726165110015707 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/sql/__init__.py0000644000000000000000000000000013726165107020014 0ustar rootroot00000000000000prewikka-5.2.0/prewikka/sql/install.py0000644000000000000000000000624513726165107017744 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import version from prewikka.database import SQLScript class SQLUpdate(SQLScript): type = "install" branch = version.__branch__ version = "0" def run(self): self.query(""" DROP TABLE IF EXISTS Prewikka_Module_Changed; CREATE TABLE Prewikka_Module_Changed ( time DATETIME NOT NULL ) ENGINE=InnoDB; INSERT INTO Prewikka_Module_Changed (time) VALUES(current_timestamp); DROP TABLE IF EXISTS Prewikka_Module_Registry; CREATE TABLE Prewikka_Module_Registry ( module VARCHAR(255) NOT NULL PRIMARY KEY, enabled TINYINT DEFAULT 1, branch VARCHAR(16) NULL, version VARCHAR(16) NULL ) ENGINE=InnoDB; DROP TABLE IF EXISTS Prewikka_History_Query; DROP TABLE IF EXISTS Prewikka_Crontab; DROP TABLE IF EXISTS Prewikka_Session; DROP TABLE IF EXISTS Prewikka_User_Configuration; DROP TABLE IF EXISTS Prewikka_User_Permission; DROP TABLE IF EXISTS Prewikka_User; CREATE TABLE Prewikka_User ( name VARCHAR(255) NOT NULL, userid VARCHAR(32) NOT NULL PRIMARY KEY ) ENGINE=InnoDB; CREATE INDEX prewikka_user_index_name ON Prewikka_User (name); CREATE TABLE Prewikka_User_Permission ( userid VARCHAR(32) NOT NULL, permission VARCHAR(32) NOT NULL, PRIMARY KEY (userid, permission), FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; DROP TABLE IF EXISTS Prewikka_Group_Permission; DROP TABLE IF EXISTS Prewikka_Group; CREATE TABLE Prewikka_Group ( name VARCHAR(255) NOT NULL, groupid VARCHAR(32) NOT NULL PRIMARY KEY ) ENGINE=InnoDB; CREATE INDEX prewikka_group_index_name ON Prewikka_Group (name); CREATE TABLE Prewikka_Group_Permission ( groupid VARCHAR(32) NOT NULL, permission VARCHAR(32) NOT NULL, PRIMARY KEY (groupid, permission), FOREIGN KEY (groupid) REFERENCES Prewikka_Group(groupid) ON DELETE CASCADE ) ENGINE=InnoDB; CREATE TABLE Prewikka_Session ( sessionid VARCHAR(48) NOT NULL PRIMARY KEY, userid VARCHAR(32) NOT NULL, login VARCHAR(255) NOT NULL, time DATETIME NOT NULL, FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; CREATE TABLE Prewikka_User_Configuration ( userid VARCHAR(255) NOT NULL, config TEXT NULL, PRIMARY KEY (userid), FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; CREATE TABLE Prewikka_Crontab ( id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, userid VARCHAR(32) NULL, schedule VARCHAR(32) NULL, ext_type VARCHAR(255) NULL, ext_id INTEGER NULL, base DATETIME NOT NULL, enabled TINYINT DEFAULT 1, runcnt INTEGER DEFAULT 0, error TEXT NULL, FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; CREATE TABLE Prewikka_History_Query ( userid VARCHAR(32) NOT NULL, formid VARCHAR(255) NOT NULL, query TEXT NOT NULL, query_hash VARCHAR(32) NOT NULL, timestamp DATETIME NOT NULL, PRIMARY KEY (userid, formid, query_hash), FOREIGN KEY (userid) REFERENCES Prewikka_User(userid) ON DELETE CASCADE ) ENGINE=InnoDB; """) prewikka-5.2.0/prewikka/templates/0000755000000000000000000000000013726165110017106 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/templates/baseview.mak0000644000000000000000000002445513726165107021425 0ustar rootroot00000000000000<%inherit file="/prewikka/templates/toplayout.mak" /> <%block name="toplayout_content">
    <% sections = {} if env.menumanager: sections = env.menumanager.get_sections() %> % for section in sections: % endfor
    <%block name="toplayout_menu"> <% menus = {} if env.menumanager: menus = env.menumanager.get_menus() sections = env.menumanager.get_sections() declared_sections = env.menumanager.get_declared_sections() def _merge_tabs(section): if section["name"] not in sections: return section["tabs"] ret = [] tabs = section["tabs"] + [tab for tab in sections[section["name"]] if tab not in section["tabs"]] for tab in tabs: if tab not in sections[section["name"]]: ret.append(tab) continue endpoint, kwargs = sections[section["name"]][tab] view = env.viewmanager.get_view(endpoint=endpoint) if view.check_permissions(env.request.user, view_kwargs=kwargs): ret.append(tab) return ret def _get_view_url(section, tabs): if section not in sections: return for tab in tabs: if tab not in sections[section]: continue endpoint, kwargs = sections[section][tab] return url_for(endpoint, **kwargs) %> <%def name="write_menu(obj, section, tabs)"> <% url = _get_view_url(section, tabs) %> % if url:
  • % else:
  • % endif % if "icon" in obj: % endif ${ _(obj["name"]) }
  • <%def name="write_menu_expand(obj, sections)"> <%def name="write_section(section, tabs=None)"> <% tabs = tabs or _merge_tabs(section) %> % if tabs: % if not section.get("expand"): ${write_menu(section, section["name"], tabs)} % else: ${write_menu_expand(section, [(section["name"], [tab], tab) for tab in tabs])} % endif % endif <%def name="write_category(category)"> <% sections = [] %> % for section in category["sections"]: <% tabs = _merge_tabs(section) %> % if tabs: <% sections.append((section["name"], tabs, section["name"])) %> % endif % endfor % if sections: ${write_menu_expand(category, sections)} % endif % if env.request.user: % endif <%block name="main_content">
    <%block name="content">
    prewikka-5.2.0/prewikka/templates/error.mak0000644000000000000000000001523313726165107020743 0ustar rootroot00000000000000<%! from traceback import format_exception from prewikka import utils from prewikka.utils import html from mako.exceptions import RichTraceback try: from mako.exceptions import syntax_highlight, pygments_html_formatter except: pygments_html_formatter = None def syntax_highlight(filename='', language=None): return html.escape def inherit(context): if not context.get('is_ajax_error'): return "/prewikka/templates/baseview.mak" else: return None %> <%def name="tracebackf()"> <% tback = RichTraceback(error=traceback[1], traceback=traceback[2]) src = tback.source line = tback.lineno if src: if isinstance(src, bytes): src = src.decode() lines = src.split("\n") else: lines = None %>

    ${ _("Detail") }

    % if lines:
    % for index in range(max(0, line - 2), min(len(lines), line + 2)): <% if pygments_html_formatter: pygments_html_formatter.linenostart = index + 1 if index + 1 == line: old_cssclass = pygments_html_formatter.cssclass pygments_html_formatter.cssclass = 'error ' + old_cssclass %> ${ lines[index] | syntax_highlight(), n } <% if index + 1 == line and pygments_html_formatter: pygments_html_formatter.cssclass = old_cssclass %> % endfor
    % endif
    % for (filename, lineno, function, line) in tback.reverse_traceback:
    ${filename}, line ${lineno}:
    <% if pygments_html_formatter: pygments_html_formatter.linenostart = lineno %>
    ${ line | syntax_highlight(filename),n }
    % endfor
    <%inherit file="${inherit(context)}" /> <%block name="content"> prewikka-5.2.0/prewikka/templates/htmldocument.mak0000644000000000000000000000223613726165107022314 0ustar rootroot00000000000000 ${ env.config.interface.get("browser_title", "Prelude") } ## EventSource polyfill for IE/Edge % for resource in document.head_content: ${resource} % endfor <%block name="head_extra_content"> % for resource in document.body_content: ${resource} % endfor ${next.body()} prewikka-5.2.0/prewikka/templates/mainmenu.mak0000644000000000000000000001413413726165107021422 0ustar rootroot00000000000000<% root_id = 'main_menu_ng' if inline else 'main_menu_ng_block' %> %if not update:
    %endifprewikka-5.2.0/prewikka/templates/toplayout.mak0000644000000000000000000001003113726165107021641 0ustar rootroot00000000000000<%inherit file="/prewikka/templates/htmldocument.mak" /> <%! from prewikka import utils, env software = env.config.interface.get("software", "Prelude") %>
    <%block name="toplayout_content" />
    <%block name="main_content" />
    prewikka-5.2.0/prewikka/utils/0000755000000000000000000000000013726165110016250 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/utils/html/0000755000000000000000000000000013726165110017214 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/utils/html/__init__.py0000644000000000000000000000022013726165107021325 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals # flake8: noqa from .escape import Markup, escape, escapejs prewikka-5.2.0/prewikka/utils/html/escape.py0000644000000000000000000000263513726165107021042 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import markupsafe from prewikka.utils import json class Markup(markupsafe.Markup): __slots__ = () @classmethod def escape(cls, value): if value is None: return Markup() return markupsafe.escape(value) def escape(value): return Markup.escape(value) def escapejs(value): value = json.dumps(value, cls=json.PrewikkaHTMLJSONEncoder) if "__prewikka_class__" in value: value = "_prewikka_revive(%s)" % value return Markup(value) prewikka-5.2.0/prewikka/utils/html/helpers.py0000644000000000000000000000404413726165107021240 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import csrf, resource POPOVER_HTML = '' def csrftoken(): return resource.HTMLSource('' % (csrf.CSRF_POST_KEY, csrf.get_token(env.request.web))) def selected(condition): return "selected" if condition else "" def checked(condition): return "checked" if condition else "" def disabled(condition): return "disabled" if condition else "" class HTMLProgressBar(resource.HTMLNode): def __init__(self, color, progress, text): txtspan = resource.HTMLNode('span', text) pgdiv = resource.HTMLNode('div', txtspan, **{ 'class': "progress-bar progress-bar-%s progress-bar-striped" % color, 'aria-valuenow': progress, 'aria-valuemin': 0, 'aria-valuemax': 100, 'style': "width: %s%%" % progress }) resource.HTMLNode.__init__(self, 'div', pgdiv, _class='progress') def __jsonobj__(self): return {"__prewikka_class__": ("HTMLNode", self.__json__())} prewikka-5.2.0/prewikka/utils/__init__.py0000644000000000000000000000100413726165107020362 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals # flake8: noqa from . import html from . import timeutil from .cache import memoize, memoize_property, request_memoize, request_memoize_property from .misc import ( AttrObj, get_analyzer_status_from_latest_heartbeat, protocol_number_to_name, path_sort_key, find_unescaped_characters, split_unescaped_characters, soundex, hexdump, deprecated, get_file_size, CachingIterator ) from .url import mkdownload, iri2uri, urlencode prewikka-5.2.0/prewikka/utils/cache.py0000644000000000000000000001474713726165107017710 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import collections import functools _CacheInfo = collections.namedtuple("CacheInfo", ["hits", "misses", "size"]) class _Cache(object): _missing = object() def __init__(self, func): self._cache = {} self._cached_func = func self._hits = self._misses = 0 def _set(self, key, value): self._cache[key] = value return value def _get(self, *args, **kwargs): key = (args, tuple(kwargs.items())) try: value = self._cache.get(key, self._missing) if value is not self._missing: self._hits = self._hits + 1 return value self._misses = self._misses + 1 return self._set(key, self._cached_func(*args, **kwargs)) except TypeError as e: # uncachable -- for instance, passing a list as an argument. # Better to not cache than to blow up entirely. env.log.critical("request not cachable: %s(%s): %s" % (self._cached_func.__name__, repr(key), e)) return self._cached_func(*args, **kwargs) def clear(self): self._cache.clear() def infos(self): return _CacheInfo(self._hits, self._misses, len(self._cache)) class _memoize(object): def __init__(self, func, name): self.func = func self.cache_objname = name def __call__(self, obj, *args, **kwargs): return self._setup_cache(obj)._get(obj, *args, **kwargs) def _setup_cache(self, obj): cache = getattr(obj, self.cache_objname, None) if not cache: cache = _Cache(self.func) setattr(obj, self.cache_objname, cache) return cache def __get__(self, obj, objtype): return functools.partial(self.__call__, obj) class _memoize_property(_memoize): def __init__(self, func, name): self._set_func = None _memoize.__init__(self, func, name) def setter(self, func): self._set_func = func return self def __set__(self, obj, value): if not self._set_func: return self._set_func(obj, value) self._setup_cache(obj)._set((obj,), value) def __get__(self, obj, objtype): return _memoize.__get__(self, obj, objtype)() class _request_memoize(_memoize): def _setup_cache(self, obj): return _memoize._setup_cache(self, env.request.cache) class _request_memoize_property(_request_memoize, _memoize_property): pass class memoize(object): """ Decorator that will cache the decorated function result value. The cache is stored into the instance of the object providing the method. Note that calling the cached function with different arguments result in different cache entry. Usage : @memoize("expensive_cache") def get_expensive_stuff(self, arg1, argN): ... time consuming stuff ... The created cache object provide the following API: - Cache hits/misses/size statistics: self.expensive_cache.infos() - Clearing the cache: self.expensive_cache.clear() """ def __init__(self, name): self.name = name def __call__(self, func): return _memoize(func, self.name) class memoize_property(object): """ Property decorator that cache the method result value. The method is accessible as a Python @property, and the cache is stored into the instance of the object providing the method. Usage : @memoize_property("my_property_cache") def my_property(self): ... time consuming stuff ... The created cache object provide the following API: - Cache hits/misses/size statistics: self.my_property_cache.infos() - Clearing the cache: self.my_property_cache.clear() """ def __init__(self, name): self.name = name def __call__(self, func): return _memoize_property(func, self.name) class request_memoize(object): """ Decorator that will cache the decorated function result value only in the context of the current request. The cache will be stored into the env.request.cache object. Note that calling the cached function with different arguments result in different cache entry. Usage : @request_memoize("expensive_cache") def get_expensive_stuff(self, arg1, arg2): ... time consuming things ... The created caching object provide the following API: - Cache hits/misses/size statistics: env.request.cache.expensive_cache.infos() - Clearing the cache: env.request.cache.expensive_cache.clear() """ def __init__(self, name): self.name = name def __call__(self, func): return _request_memoize(func, self.name) class request_memoize_property(object): """ Property decorator that cache the method result value only in the context of the current request. The method is accessible like a Python @property, and the cache is stored into the env.request.cache object. Usage : @request_memoize_property("my_property_cache") def my_property(self): pass The created caching object provide the following API: - Cache hits/misses/size statistics: env.request.cache.my_property_cache.infos() - Clearing the cache: env.request.cache.my_property_cache.clear() """ def __init__(self, name): self.name = name def __call__(self, func): return _request_memoize_property(func, self.name) prewikka-5.2.0/prewikka/utils/crypto.py0000644000000000000000000000615513726165107020157 0ustar rootroot00000000000000# Copyright (c) Django Software Foundation and individual contributors. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of Django nor the names of its contributors may be used # to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import binascii import hashlib import hmac import os import random import time # Use the system PRNG if possible try: random = random.SystemRandom() using_sysrandom = True except NotImplementedError: import warnings warnings.warn('A secure pseudo-random number generator is not available ' 'on your system. Falling back to Mersenne Twister.') using_sysrandom = False PREWIKKA_SECRET = binascii.hexlify(os.urandom(24)) def get_random_string(length=12, allowed_chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'): """ Return a securely generated random string. The default length of 12 with the a-z, A-Z, 0-9 character set returns a 71-bit value. log_2((26+26+10)^12) =~ 71 bits """ if not using_sysrandom: # This is ugly, and a hack, but it makes things better than # the alternative of predictability. This re-seeds the PRNG # using a value that is hard for an attacker to predict, every # time a random string is required. This may change the # properties of the chosen random sequence slightly, but this # is better than absolute predictability. random.seed( hashlib.sha256( ('%s%s%s' % (random.getstate(), time.time(), PREWIKKA_SECRET)).encode() ).digest() ) return ''.join(random.choice(allowed_chars) for i in range(length)) def constant_time_compare(val1, val2): """Return True if the two strings are equal, False otherwise.""" return hmac.compare_digest(val1, val2) prewikka-5.2.0/prewikka/utils/json.py0000644000000000000000000000710013726165107017577 0ustar rootroot00000000000000# Copyright (C) 2016-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import collections import datetime import json from prewikka.compat import with_metaclass _TYPES = {} class _JSONMetaClass(type): def __new__(cls, clsname, bases, attrs): nclass = super(_JSONMetaClass, cls).__new__(cls, clsname, bases, attrs) _TYPES[nclass.__name__] = nclass return nclass class _JSONObject(object): @classmethod def from_json(cls, data): return cls(**data) def __jsonobj__(self): return {"__prewikka_class__": (self.__class__.__name__, self.__json__())} class JSONObject(with_metaclass(_JSONMetaClass, _JSONObject)): pass class PrewikkaJSONEncoder(json.JSONEncoder): def default(self, obj): if hasattr(obj, "__jsonobj__"): return obj.__jsonobj__() elif hasattr(obj, "__json__"): return obj.__json__() elif isinstance(obj, datetime.datetime): return text_type(obj) elif isinstance(obj, collections.Iterable): return list(obj) return json.JSONEncoder.default(self, obj) # The following class has been adapted from simplejson # class PrewikkaHTMLJSONEncoder(PrewikkaJSONEncoder): """An encoder that produces JSON safe to embed in HTML. To embed JSON content in, say, a script tag on a web page, the characters &, < and > should be escaped. They cannot be escaped with the usual entities (e.g. &) because they are not expanded within
    % if len(maintenance) > 0:
    ${ _("Plugin Maintenance") }
    ${ _("The following apps need to be updated before they can be loaded into the system") }
    % for name, list in sorted(maintenance.items()):
    ${ _(name) } % for mod, fv, uplist in sorted(list, key=lambda x: x[0].plugin_name or x[0].full_module_name): % endfor
    ${ _("Name") } ${ _("Description") } ${ _("Version") } ${ _("Current database version") } ${ _("Required database update") }
    ${ mod.plugin_name or mod.full_module_name } ${ _(mod.plugin_description) } ${ mod.plugin_version } ${ fv or '-' } ${ ", ".join([text_type(i) for i in uplist]) }
    % endfor
    % endif
    ${ _("Installed Apps") }
    % for name, list in sorted(installed.items()):
    ${ _(name) } % for mod, enabled in sorted(list, key=lambda x: x[0].plugin_name or x[0].full_module_name): % endfor
    ${ _("Name") } ${ _("Description") } ${ _("Version") } ${ _("Database version") } ${ _("Active") }
    ${ mod.plugin_name or mod.full_module_name } ${ _(mod.plugin_description) } ${ mod.plugin_version } ${ mod.plugin_database_version or '-' } % if mod.error and enabled: % endif
    % endfor
    prewikka-5.2.0/prewikka/views/aboutplugin/__init__.py0000644000000000000000000001450213726165107022717 0ustar rootroot00000000000000# Copyright (C) 2014-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import collections import itertools import json import pkg_resources from prewikka import cli, database, error, response, template, utils, version, view from prewikka.utils import html class AboutPlugin(view.View): plugin_name = "Plugin management" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Plugin installation and activation management page") plugin_mandatory = True plugin_htdocs = (("aboutplugin", pkg_resources.resource_filename(__name__, 'htdocs')),) view_permissions = [N_("USER_MANAGEMENT")] _all_plugins = ((N_("Apps: API"), "prewikka.plugins"), (N_("Apps: View"), "prewikka.views"), (N_("Apps: Dataprovider backend"), "prewikka.dataprovider.backend"), (N_("Apps: Dataprovider type"), "prewikka.dataprovider.type"), (N_("Apps: Authentication"), "prewikka.auth"), (N_("Apps: Identification"), "prewikka.session"), (N_("Apps: Renderer backend"), "prewikka.renderer.backend"), (N_("Apps: Renderer type"), "prewikka.renderer.type")) def _add_plugin_info(self, data, catname, mod): dbup = database.DatabaseUpdateHelper(mod.full_module_name, mod.plugin_database_version, mod.plugin_database_branch) curversion = dbup.get_schema_version() try: upinfo = dbup.list() if upinfo: data.maintenance_total += len(upinfo) data.maintenance.setdefault(catname, []).append((mod, curversion, upinfo)) else: data.installed.setdefault(catname, []).append((mod, env.db.is_plugin_active(mod))) except error.PrewikkaUserError as e: data.maintenance.setdefault(catname, []).append((mod, curversion, [e])) def _iter_plugin(self): for catname, entrypoint in self._all_plugins: for plugin in env.all_plugins[entrypoint].values(): yield catname, plugin def _get_plugin_infos(self): # FIXME: for some reason, the cache gets desynchronized at initialization. # This is a temporary fix. env.db.modinfos_cache.clear() data = utils.AttrObj(installed=collections.OrderedDict(), maintenance=collections.OrderedDict(), maintenance_total=0) for catname, plugin in self._iter_plugin(): self._add_plugin_info(data, catname, plugin) return data @cli.register("list", "plugin", help=N_("list plugin: list installed plugins")) def _list_plugins(self): ret = [] for plugins in self._get_plugin_infos().installed.values(): for mod, active in plugins: ret.append(mod.full_module_name) return sorted(ret) @view.route("/settings/apps", methods=["GET"], menu=(N_("Apps"), N_("Apps")), help="#apps") def render_get(self): dset = template.PrewikkaTemplate(__name__, "templates/aboutplugin.mak").dataset() data = self._get_plugin_infos() dset["installed"] = data.installed dset["maintenance"] = data.maintenance dset["maintenance_total"] = data.maintenance_total return dset.render() @view.route("/settings/apps/enable", methods=["POST"]) def enable(self): upsrt = [] for catname, plugin in self._iter_plugin(): enabled = plugin.plugin_mandatory or plugin.full_module_name in env.request.parameters["enable_plugin"] upsrt.append((plugin.full_module_name, enabled)) if upsrt: env.db.upsert("Prewikka_Module_Registry", ["module", "enabled"], upsrt, pkey=["module"]) env.db.trigger_plugin_change() return response.PrewikkaResponse({"type": "reload", "target": "window"}) @view.route("/settings/apps/update", methods=["GET"]) def update(self): self._update(env.request.web.send_stream) @cli.register("sync", "plugin", help=N_("sync plugin: initialize the plugin database schemas")) def _update_plugins(self): self._update(lambda *args, **kwargs: None) def _update(self, send_stream): data = self._get_plugin_infos() send_stream(json.dumps({"total": data.maintenance_total}), event="begin", sync=True) for mod, fromversion, uplist in itertools.chain.from_iterable(data.maintenance.values()): for upscript in uplist: if isinstance(upscript, Exception): continue label = _("Applying %(module)s %(script)s...") % {'module': mod.full_module_name, 'script': text_type(upscript)} send_stream(json.dumps({"label": html.escape(label), 'module': html.escape(mod.full_module_name), 'script': html.escape(text_type(upscript))}), sync=True) try: upscript.apply() except Exception as e: send_stream(json.dumps({"logs": "\n".join(html.escape(x) for x in upscript.query_logs), "error": html.escape(text_type(e))}), sync=True) break else: send_stream(json.dumps({"logs": "\n".join(html.escape(x) for x in upscript.query_logs), "success": True}), sync=True) send_stream(data=json.dumps({"label": _("All updates applied")}), event="finish", sync=True) send_stream("close", event="close") env.db.trigger_plugin_change() prewikka-5.2.0/prewikka/views/agents/0000755000000000000000000000000013726165110017526 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/agents/htdocs/0000755000000000000000000000000013726165110021012 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/agents/htdocs/css/0000755000000000000000000000000013726165110021602 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/agents/htdocs/css/agents.css0000644000000000000000000000071613726165107023607 0ustar rootroot00000000000000.heartbeat_analyzer_event_start, .heartbeat_analyzer_event_normal_stop, .heartbeat_analyzer_event_no_anomaly { color: green; } .heartbeat_analyzer_event_unexpected_restart, .heartbeat_analyzer_event_abnormal_heartbeat_interval { color: rgb(255,165,0); } .heartbeat_analyzer_event_down { color: red; } .heartbeat_analyze { color: white; text-align: center; } .heartbeat_analyze_sensor_info { font-weight: bold; border-top: 10px; } prewikka-5.2.0/prewikka/views/agents/templates/0000755000000000000000000000000013726165110021524 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/agents/templates/agents.mak0000644000000000000000000001033413726165107023506 0ustar rootroot00000000000000<%! from prewikka.utils import html, json from prewikka.utils.html.helpers import POPOVER_HTML %>
    prewikka-5.2.0/prewikka/views/agents/templates/heartbeatanalyze.mak0000644000000000000000000000505013726165107025547 0ustar rootroot00000000000000<% status_classes = {"online": "success", "offline": "default", "unknown": "warning", "missing": "danger"} %>
    prewikka-5.2.0/prewikka/views/agents/__init__.py0000644000000000000000000000076013726165107021650 0ustar rootroot00000000000000from __future__ import absolute_import, division, print_function, unicode_literals from prewikka import pluginmanager, version from .agents import Agents class AgentPlugin(pluginmanager.PluginPreload): plugin_name = "Agents status" plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Agents status information page") plugin_classes = [Agents] prewikka-5.2.0/prewikka/views/agents/agents.py0000644000000000000000000002462213726165107021375 0ustar rootroot00000000000000# Copyright (C) 2004-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import pkg_resources from prewikka import hookmanager, localization, mainmenu, resource, template, utils, view, response from prewikka.dataprovider import Criterion from prewikka.utils.viewhelpers import GridParameters class Agents(view.View): view_datatype = "heartbeat" plugin_htdocs = (("agents", pkg_resources.resource_filename(__name__, 'htdocs')),) @hookmanager.register("HOOK_RISKOVERVIEW_DATA", _order=0) def _set_agents_summary(self): results = env.dataprovider.query(["max(heartbeat.create_time)", "heartbeat.analyzer(-1).analyzerid/group_by"]) if not results: return c = Criterion() for create_time, analyzerid in results: c |= Criterion("heartbeat.create_time", "==", create_time) & Criterion("heartbeat.analyzer(-1).analyzerid", "==", analyzerid) agents = { "up": utils.AttrObj(count=0, title=_("Online"), label="label-success", status=["online"]), "down": utils.AttrObj(count=0, title=_("Offline"), label="label-danger", status=["offline", "missing", "unknown"]) } heartbeat_error_margin = env.config.general.get_int("heartbeat_error_margin", 3) for heartbeat in env.dataprovider.get(c): heartbeat = heartbeat["heartbeat"] analyzer = heartbeat["analyzer"][-1] analyzer.status = utils.get_analyzer_status_from_latest_heartbeat(heartbeat, heartbeat_error_margin)[0] for key, values in agents.items(): if analyzer.status in values.status: values.count += 1 parameters = env.request.menu_parameters val = agents["down"] if agents["down"].count else agents["up"] data = resource.HTMLNode("a", localization.format_number(val.count), title=val.title, _class="label " + val.label, href=url_for("Agents.agents", status=val.status, **parameters)) return utils.AttrObj( name="agents", title=resource.HTMLNode("a", _("Agents"), href=url_for("Agents.agents", **parameters)), data=[data] ) def __init__(self): env.dataprovider.check_datatype("heartbeat") view.View.__init__(self) self._heartbeat_count = env.config.general.get_int("heartbeat_count", 30) self._heartbeat_error_margin = env.config.general.get_int("heartbeat_error_margin", 3) def _get_analyzer(self, analyzerid): res = env.dataprovider.get(Criterion("heartbeat.analyzer(-1).analyzerid", "=", analyzerid), limit=1) heartbeat = res[0]["heartbeat"] analyzer = heartbeat["analyzer"][-1] return analyzer, heartbeat def _get_analyzers(self, reqstatus): # Do not take the control menu into account. # The expected behavior is yet to be determined. results = env.dataprovider.query(["max(heartbeat.create_time)", "heartbeat.analyzer(-1).analyzerid/group_by"]) if not results: return c = Criterion() for create_time, analyzerid in results: c |= Criterion("heartbeat.create_time", "==", create_time) & Criterion("heartbeat.analyzer(-1).analyzerid", "==", analyzerid) for heartbeat in env.dataprovider.get(c): heartbeat = heartbeat["heartbeat"] status, status_text = utils.get_analyzer_status_from_latest_heartbeat( heartbeat, self._heartbeat_error_margin ) if reqstatus and status not in reqstatus: continue delta = heartbeat.get("create_time") - utils.timeutil.now() analyzerid = heartbeat["analyzer(-1).analyzerid"] heartbeat_listing = url_for("HeartbeatDataSearch.forensic", criteria=Criterion("heartbeat.analyzer(-1).analyzerid", "==", analyzerid), _default=None) alert_listing = url_for("AlertDataSearch.forensic", criteria=Criterion("alert.analyzer.analyzerid", "==", analyzerid), _default=None) heartbeat_analyze = url_for(".analyze", analyzerid=analyzerid) analyzer = heartbeat["analyzer(-1)"] node_name = analyzer["node.name"] or _("Node name n/a") osversion = analyzer["osversion"] or _("OS version n/a") ostype = analyzer["ostype"] or _("OS type n/a") yield { "id": analyzerid, "label": "%s - %s %s" % (node_name, ostype, osversion), "location": analyzer["node.location"] or _("Node location n/a"), "node": node_name, "name": analyzer["name"], "model": analyzer["model"], "class": analyzer["class"], "version": analyzer["version"], "latest_heartbeat": localization.format_timedelta(delta, add_direction=True), "status": status, "status_text": status_text, "links": [ resource.HTMLNode("a", _("Alert listing"), href=alert_listing), resource.HTMLNode("a", _("Heartbeat listing"), href=heartbeat_listing), resource.HTMLNode("a", _("Heartbeat analysis"), href=heartbeat_analyze) ] } @view.route("/agents/agents", methods=["GET", "POST"], permissions=[N_("IDMEF_VIEW")], help="#agents", menu=(N_("Monitoring"), N_("Agents")), parameters=GridParameters("agents")) def agents(self): analyzer_data = list(self._get_analyzers(env.request.parameters.getlist("status"))) list(hookmanager.trigger("HOOK_AGENTS_EXTRA_CONTENT", analyzer_data)) extra_columns = filter(None, hookmanager.trigger("HOOK_AGENTS_EXTRA_COLUMN")) return view.ViewResponse(template.PrewikkaTemplate(__name__, "templates/agents.mak").render(data=analyzer_data, extra_columns=extra_columns), menu=mainmenu.HTMLMainMenu()) @view.route("/agents/delete", methods=["POST"], permissions=[N_("IDMEF_ALTER")]) def delete(self): for i in env.request.parameters.getlist("types"): if i not in ("alert", "heartbeat"): continue c = Criterion() for analyzerid in env.request.parameters.getlist("id"): c |= Criterion("%s.analyzer.analyzerid" % i, "=", analyzerid) env.dataprovider.delete(c) return response.PrewikkaRedirectResponse(url_for(".agents")) @view.route("/agents/analyze/", permissions=[N_("IDMEF_VIEW")], help="#heartbeatanalyze") def analyze(self, analyzerid): analyzer, heartbeat = self._get_analyzer(analyzerid) delta = heartbeat["create_time"] - utils.timeutil.now() analyzer.last_heartbeat_time = localization.format_timedelta(delta, add_direction=True) analyzer.status = None analyzer.events = [] res = env.dataprovider.get(Criterion("heartbeat.analyzer(-1).analyzerid", "=", analyzerid), limit=self._heartbeat_count) prev = None total_interval = 0 # Iterate from oldest heartbeat to newest for obj in reversed(res): cur = HeartbeatObject(obj["heartbeat"]) if not (prev and cur.status and cur.interval): prev = cur continue total_interval += cur.interval event = None if cur.status == "starting": if prev.status == "exiting": event = utils.AttrObj(time=cur.time_str, value=_("Normal sensor start"), type="start") else: event = utils.AttrObj(time=cur.time_str, value=_("Unexpected sensor restart"), type="unexpected_restart") elif cur.status == "running": delta = cur.time - prev.time if abs(delta.total_seconds() - cur.interval) > self._heartbeat_error_margin: delta = localization.format_timedelta(delta, granularity="second") event = utils.AttrObj(time=cur.time_str, value=_("Unexpected heartbeat interval: %(delta)s") % {'delta': delta}, type="abnormal_heartbeat_interval") elif cur.status == "exiting": event = utils.AttrObj(time=cur.time_str, value=_("Normal sensor stop"), type="normal_stop") if event: analyzer.events.append(event) prev = cur if prev: analyzer.status, analyzer.status_meaning = \ utils.get_analyzer_status_from_latest_heartbeat(obj["heartbeat"], self._heartbeat_error_margin) if analyzer.status == "missing": delta = utils.timeutil.now() - prev.time analyzer.events.append(utils.AttrObj(time=prev.time_str, value=_("Sensor is down since %s") % localization.format_timedelta(delta), type="down")) if not analyzer.status: analyzer.status, analyzer.status_meaning = "unknown", _("Unknown") if not analyzer.events: delta = localization.format_timedelta(total_interval / self._heartbeat_count) analyzer.events.append(utils.AttrObj( time="", value=_("No anomaly in the last %(count)d heartbeats (one heartbeat every %(delta)s average)") % {'count': self._heartbeat_count, 'delta': delta}, type="no_anomaly" )) return template.PrewikkaTemplate(__name__, "templates/heartbeatanalyze.mak").render(analyzer=analyzer) class HeartbeatObject(object): def __init__(self, heartbeat): self.status = heartbeat.get("additional_data('Analyzer status').data")[0] self.interval = heartbeat["heartbeat_interval"] self.time = heartbeat["create_time"] self.time_str = localization.format_datetime(self.time) prewikka-5.2.0/prewikka/views/crontab/0000755000000000000000000000000013726165110017675 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/crontab/templates/0000755000000000000000000000000013726165110021673 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/crontab/templates/cronjob.mak0000644000000000000000000001203713726165107024032 0ustar rootroot00000000000000<%! from prewikka import crontab DEFAULT_OPTION = "0 * * * *" %> <%def name="crontab_settings(enabled=True)"> <% is_custom = False custom_val = [ "", "", "", "", "" ] default_schedule_value = getattr(job, "schedule", DEFAULT_OPTION) default_schedule_label = crontab.DEFAULT_SCHEDULE.get(default_schedule_value) if not default_schedule_label: is_custom = True custom_val = default_schedule_value.split(" ") default_schedule_label = crontab.DEFAULT_SCHEDULE["custom"] if not getattr(job, "enabled", enabled): is_custom = False default_schedule_value = "disabled" default_schedule_label = crontab.DEFAULT_SCHEDULE.get(default_schedule_value) %> % if job: % endif
    prewikka-5.2.0/prewikka/views/crontab/templates/crontab.mak0000644000000000000000000000433213726165107024025 0ustar rootroot00000000000000<%! from prewikka.utils import html %>
    prewikka-5.2.0/prewikka/views/crontab/__init__.py0000644000000000000000000001105713726165107022020 0ustar rootroot00000000000000# Copyright (C) 2017-2020 CS GROUP - France. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from __future__ import absolute_import, division, print_function, unicode_literals import datetime import pkg_resources from prewikka import crontab, localization, resource, response, template, utils, version, view from prewikka.utils.viewhelpers import GridAjaxResponse, GridParameters class CrontabView(view.View): plugin_name = N_("Scheduling management") plugin_author = version.__author__ plugin_license = version.__license__ plugin_version = version.__version__ plugin_copyright = version.__copyright__ plugin_description = N_("Scheduled jobs management page") plugin_htdocs = (("crontab", pkg_resources.resource_filename(__name__, 'htdocs')),) view_permissions = [N_("USER_MANAGEMENT")] @view.route("/settings/scheduler/disable", methods=["POST"]) def disable(self): crontab.update(env.request.parameters.getlist("id", type=int), enabled=False) return response.PrewikkaResponse({"type": "reload", "target": "view"}) @view.route("/settings/scheduler/enable", methods=["POST"]) def enable(self): crontab.update(env.request.parameters.getlist("id", type=int), enabled=True) return response.PrewikkaResponse({"type": "reload", "target": "view"}) @view.route("/settings/scheduler//save", methods=["POST"]) def save(self, id=None): crontab.update_from_parameters(id) return response.PrewikkaResponse({"type": "reload", "target": "view"}) @view.route("/settings/scheduler//edit") def edit(self, id=None): dataset = template.PrewikkaTemplate(__name__, "templates/cronjob.mak").dataset() dataset["job"] = crontab.get(id) return dataset.render() @view.route("/settings/scheduler", menu=(N_("Configuration"), N_("Scheduling")), help="#scheduling", parameters=GridParameters("cronjobs")) def list(self): dataset = template.PrewikkaTemplate(__name__, "templates/crontab.mak").dataset() return dataset.render() @view.route("/settings/scheduler/ajax_listing") def ajax_listing(self): now = utils.timeutil.utcnow() sort_index = env.request.parameters.get("sort_index", "name") sort_order = env.request.parameters.get("sort_order", "asc") sort_func = { "name": lambda x: _(crontab.format(x.ext_type, x.name)).lower(), "user": lambda x: text_type(x.user) if x.user else _("SYSTEM"), "last": lambda x: x.base, "next": lambda x: x.next_schedule - now if x.enabled else datetime.timedelta.max, } sort_key = sort_func.get(sort_index, sort_func["name"]) rows = [] for i in sorted(crontab.list(), key=sort_key, reverse=(sort_order == "desc")): if not i.enabled: next = _("Disabled") else: next = i.next_schedule - now if next.total_seconds() < 0: next = _("Pending") else: next = localization.format_timedelta(next, granularity="minute") if i.runcnt > 0: last = localization.format_timedelta(i.base - now, add_direction=True) else: last = _("n/a") if i.error: last = resource.HTMLNode("a", _("Error"), _class="cronjob-error") rows.append({ "id": i.id, "name": resource.HTMLNode("a", _(crontab.format(i.ext_type, i.name)), href=url_for(".edit", id=i.id)), "schedule": crontab.format_schedule(i.schedule), "user": text_type(i.user) if i.user else _("SYSTEM"), "last": last, "next": next, "error": i.error }) return GridAjaxResponse(rows, len(rows)) prewikka-5.2.0/prewikka/views/custom/0000755000000000000000000000000013726165110017557 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/custom/templates/0000755000000000000000000000000013726165110021555 5ustar rootroot00000000000000prewikka-5.2.0/prewikka/views/custom/templates/custom.mak0000644000000000000000000000037113726165107023570 0ustar rootroot00000000000000