From c4d43e7884c3fd6fa8614a3587d5677ed98b1dce Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Mon, 8 Apr 2019 10:27:51 -0700 Subject: [PATCH 001/396] Fix out of bounds when the model url is incorrect --- libraries/hfm/src/hfm/HFM.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index e930f30d1a..6a9a714234 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -166,7 +166,9 @@ void HFMModel::computeKdops() { glm::vec3(INV_SQRT_3, INV_SQRT_3, -INV_SQRT_3), glm::vec3(INV_SQRT_3, -INV_SQRT_3, -INV_SQRT_3) }; - + if (joints.size() != shapeVertices.size()) { + return; + } // now that all joints have been scanned compute a k-Dop bounding volume of mesh for (int i = 0; i < joints.size(); ++i) { HFMJoint& joint = joints[i]; From f08b5e3e277e34cdfb697a2d353e89a38baa2595 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 8 Apr 2019 11:03:21 -0700 Subject: [PATCH 002/396] disable jsbaker (cherry picked from commit 7cbda006a088ec5613dce484514466666ac73b1f) --- tools/oven/src/BakerCLI.cpp | 5 +++-- tools/oven/src/DomainBaker.cpp | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index f09db3ed26..64462a4e37 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -55,8 +55,9 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& } } } else if (type == SCRIPT_EXTENSION) { - _baker = std::unique_ptr { new JSBaker(inputUrl, outputPath) }; - _baker->moveToThread(Oven::instance().getNextWorkerThread()); + // FIXME: disabled for now because it breaks some scripts + //_baker = std::unique_ptr { new JSBaker(inputUrl, outputPath) }; + //_baker->moveToThread(Oven::instance().getNextWorkerThread()); } else if (type == MATERIAL_EXTENSION) { _baker = std::unique_ptr { new MaterialBaker(inputUrl.toDisplayString(), true, outputPath) }; _baker->moveToThread(Oven::instance().getNextWorkerThread()); diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index b92a310f5d..8a4489fcac 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -397,6 +397,8 @@ void DomainBaker::enumerateEntities() { } } + // FIXME: disabled for now because it breaks some scripts + /* // Scripts if (entity.contains(SCRIPT_KEY)) { addScriptBaker(SCRIPT_KEY, entity[SCRIPT_KEY].toString(), *it); @@ -404,6 +406,7 @@ void DomainBaker::enumerateEntities() { if (entity.contains(SERVER_SCRIPTS_KEY)) { // TODO: serverScripts can be multiple scripts, need to handle that } + */ // Materials if (entity.contains(MATERIAL_URL_KEY)) { From 4b7274f02fc0c2a98009e70e5a35f206e7d5f2b6 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Mon, 8 Apr 2019 11:28:10 -0700 Subject: [PATCH 003/396] Fix comparison warning --- libraries/hfm/src/hfm/HFM.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index 6a9a714234..236445bfda 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -166,7 +166,7 @@ void HFMModel::computeKdops() { glm::vec3(INV_SQRT_3, INV_SQRT_3, -INV_SQRT_3), glm::vec3(INV_SQRT_3, -INV_SQRT_3, -INV_SQRT_3) }; - if (joints.size() != shapeVertices.size()) { + if (joints.size() != (int)shapeVertices.size()) { return; } // now that all joints have been scanned compute a k-Dop bounding volume of mesh From 8a460276e59842e5d4ac307fd878f8cd511a71b2 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 8 Apr 2019 23:45:47 -0700 Subject: [PATCH 004/396] use # instead of ? for material URL name selection (cherry picked from commit a50cca006e5d1be145e03d851663937a640652cd) --- libraries/baking/src/ModelBaker.cpp | 2 +- .../entities-renderer/src/RenderableMaterialEntityItem.cpp | 6 +++++- libraries/entities/src/EntityItemProperties.cpp | 2 +- libraries/render-utils/src/Model.cpp | 4 ++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index 82af2f94e9..e58ec00afa 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -285,7 +285,7 @@ void ModelBaker::handleFinishedMaterialBaker() { QJsonArray materialMapping; for (auto material : _hfmModel->materials) { QJsonObject json; - json["mat::" + material.name] = relativeBakedMaterialURL + "?" + material.name; + json["mat::" + material.name] = relativeBakedMaterialURL + "#" + material.name; materialMapping.push_back(json); } diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index da8baca95a..01d1098daa 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -121,7 +121,11 @@ void MaterialEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo QString materialURL = entity->getMaterialURL(); if (materialURL != _materialURL) { _materialURL = materialURL; - if (_materialURL.contains("?")) { + if (_materialURL.contains("#")) { + auto split = _materialURL.split("#"); + newCurrentMaterialName = split.last().toStdString(); + } else if (_materialURL.contains("?")) { + qDebug() << "DEPRECATED: Use # instead of ? for material URLS:" << _materialURL; auto split = _materialURL.split("?"); newCurrentMaterialName = split.last().toStdString(); } diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 5958af66dd..44e317696c 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -976,7 +976,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * by setting the entityHostType parameter in {@link Entities.addEntity} to "avatar". * Material entities render as non-scalable spheres if they don't have their parent set. * @typedef {object} Entities.EntityProperties-Material - * @property {string} materialURL="" - URL to a {@link MaterialResource}. If you append ?name to the URL, the + * @property {string} materialURL="" - URL to a {@link MaterialResource}. If you append #name to the URL, the * material with that name in the {@link MaterialResource} will be applied to the entity.
* Alternatively, set the property value to "materialData" to use the materialData property * for the {@link MaterialResource} values. diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 6b33012adf..fbe0af11f2 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1561,8 +1561,8 @@ void Model::applyMaterialMapping() { { QString url = networkMaterialResource->getURL().toString(); bool foundMaterialName = false; - if (url.contains("?")) { - auto split = url.split("?"); + if (url.contains("#")) { + auto split = url.split("#"); std::string materialName = split.last().toStdString(); auto networkMaterialIter = networkMaterialResource->parsedMaterials.networkMaterials.find(materialName); if (networkMaterialIter != networkMaterialResource->parsedMaterials.networkMaterials.end()) { From 2d2fd0d2a4e54a3461061c0a71083d5ec7a8fc2c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 10 Apr 2019 09:44:56 -0700 Subject: [PATCH 005/396] only call onMove on lastMouseEvent change --- scripts/system/libraries/entitySelectionTool.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index a0265a6ab8..60c9533e6a 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -1347,12 +1347,16 @@ SelectionDisplay = (function() { }; that.updateLastMouseEvent = function(event) { - if (activeTool && lastMouseEvent !== null) { + if (activeTool && lastMouseEvent !== null) { + var change = lastMouseEvent.isShifted !== event.isShifted || lastMouseEvent.isMeta !== event.isMeta || + lastMouseEvent.isControl !== event.isControl || lastMouseEvent.isAlt !== event.isAlt; lastMouseEvent.isShifted = event.isShifted; lastMouseEvent.isMeta = event.isMeta; lastMouseEvent.isControl = event.isControl; - lastMouseEvent.isAlt = event.isAlt; - activeTool.onMove(lastMouseEvent); + lastMouseEvent.isAlt = event.isAlt; + if (change) { + activeTool.onMove(lastMouseEvent); + } } }; From f94c78e15d111c81aa506d2ca2d50e6f7b511ca9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 8 Apr 2019 13:29:43 -0700 Subject: [PATCH 006/396] fix avatar/shape material targets, refresh material target when parent changes --- scripts/system/edit.js | 29 +++++++++++++--------- scripts/system/html/js/entityProperties.js | 25 +++++++++++++++++-- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 8ca6c5b14c..b98d28ea48 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2523,18 +2523,23 @@ var PropertiesTool = function (opts) { propertyRanges: propertyRanges, }); } else if (data.type === "materialTargetRequest") { - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - var parentModel = properties.parentID !== Uuid.NULL && - Entities.getEntityProperties(properties.parentID, ["type"]).type === "Model"; - var parentModelData; - if (properties.type === "Material" && parentModel) { - parentModelData = Graphics.getModel(properties.parentID); - } - emitScriptEvent({ - type: 'materialTargetReply', - materialTargetData: parentModelData, - }); - } + var parentModelData; + var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); + if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { + var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; + if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { + parentModelData = Graphics.getModel(properties.parentID); + } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { + parentModelData = {}; + parentModelData.numMeshes = 1; + parentModelData.materialNames = []; + } + } + emitScriptEvent({ + type: 'materialTargetReply', + materialTargetData: parentModelData, + }); + } }; HMD.displayModeChanged.connect(function() { diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index ca04f36dc9..1fe29cc579 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -55,6 +55,7 @@ const GROUPS = [ label: "Parent", type: "string", propertyID: "parentID", + onChange: parentIDChanged, }, { label: "Parent Joint Index", @@ -2007,6 +2008,9 @@ function createStringProperty(property, elProperty) { elInput.addEventListener('change', createEmitTextPropertyUpdateFunction(property)); + if (propertyData.onChange !== undefined) { + elInput.addEventListener('change', propertyData.onChange); + } elProperty.appendChild(elInput); @@ -2622,6 +2626,17 @@ function createProperty(propertyData, propertyElementID, propertyName, propertyI } +/** + * PROPERTY-SPECIFIC CALLBACKS + */ + +function parentIDChanged() { + if (selectedEntityProperties.type === "Material") { + requestMaterialTarget(); + } +} + + /** * BUTTON CALLBACKS */ @@ -3156,6 +3171,10 @@ function setTextareaScrolling(element) { * MATERIAL TARGET FUNCTIONS */ +function requestMaterialTarget() { + EventBridge.emitWebEvent(JSON.stringify({ type: 'materialTargetRequest', entityID: selectedEntityProperties.id })); +} + function setMaterialTargetData(materialTargetData) { let elDivOptions = getPropertyInputElement("parentMaterialName"); resetDynamicMultiselectProperty(elDivOptions); @@ -3256,7 +3275,9 @@ function sendMaterialTargetProperty() { if (materialTargetList !== "") { materialTargetList = materialTargetList.substring(0, materialTargetList.length - 1); - materialTargetList = "[" + materialTargetList + "]"; + if (materialTargetList.length > 1) { + materialTargetList = "[" + materialTargetList + "]"; + } } updateProperty("parentMaterialName", materialTargetList, false); @@ -3780,7 +3801,7 @@ function loaded() { } if (hasSelectedEntityChanged && selectedEntityProperties.type === "Material") { - EventBridge.emitWebEvent(JSON.stringify({ type: 'materialTargetRequest', entityID: selectedEntityProperties.id })); + requestMaterialTarget(); } let activeElement = document.activeElement; From 6ea92a4698b6ec58e47793d6f951f8bb7fac94fa Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 3 Apr 2019 12:27:32 -0700 Subject: [PATCH 007/396] Fix TextureBaker failures and heap corruption in MaterialBaker --- libraries/baking/src/MaterialBaker.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/baking/src/MaterialBaker.cpp b/libraries/baking/src/MaterialBaker.cpp index 9fcd7d0354..7fc2573d7b 100644 --- a/libraries/baking/src/MaterialBaker.cpp +++ b/libraries/baking/src/MaterialBaker.cpp @@ -144,7 +144,12 @@ void MaterialBaker::processMaterial() { connect(textureBaker.data(), &TextureBaker::finished, this, &MaterialBaker::handleFinishedTextureBaker); _textureBakers.insert(textureKey, textureBaker); textureBaker->moveToThread(_getNextOvenWorkerThreadOperator ? _getNextOvenWorkerThreadOperator() : thread()); - QMetaObject::invokeMethod(textureBaker.data(), "bake"); + // By default, Qt will invoke this bake immediately if the TextureBaker is on the same worker thread as this MaterialBaker. + // We don't want that, because threads may be waiting for work while this thread is stuck processing a TextureBaker. + // On top of that, _textureBakers isn't fully populated. + // So, use Qt::QueuedConnection. + // TODO: Better thread utilization at the top level, not just the MaterialBaker level + QMetaObject::invokeMethod(textureBaker.data(), "bake", Qt::QueuedConnection); } _materialsNeedingRewrite.insert(textureKey, networkMaterial.second); } else { From 4954d64c9e803072b60c6d4d0e00ac5e7de4df7b Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 11 Apr 2019 14:20:52 -0700 Subject: [PATCH 008/396] Fix lack of ranges on numerical types in Create --- libraries/entities/src/EntityItemProperties.cpp | 10 +++++----- libraries/entities/src/EntityItemProperties.h | 13 +++++++++++++ libraries/entities/src/EntityItemPropertiesMacros.h | 3 ++- scripts/system/html/js/entityProperties.js | 2 ++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 44e317696c..2b738bc4e7 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -2630,11 +2630,11 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ENTITY_ITEM_MIN_FRICTION, ENTITY_ITEM_MAX_FRICTION); ADD_PROPERTY_TO_MAP(PROP_LIFETIME, Lifetime, lifetime, float); ADD_PROPERTY_TO_MAP(PROP_COLLISIONLESS, Collisionless, collisionless, bool); - ADD_PROPERTY_TO_MAP(PROP_COLLISIONLESS, unused, ignoreForCollisions, unused); // legacy support - ADD_PROPERTY_TO_MAP(PROP_COLLISION_MASK, unused, collisionMask, unused); - ADD_PROPERTY_TO_MAP(PROP_COLLISION_MASK, unused, collidesWith, unused); - ADD_PROPERTY_TO_MAP(PROP_DYNAMIC, unused, collisionsWillMove, unused); // legacy support - ADD_PROPERTY_TO_MAP(PROP_DYNAMIC, unused, dynamic, unused); + ADD_PROPERTY_TO_MAP(PROP_COLLISIONLESS, unused, ignoreForCollisions, bool); // legacy support + ADD_PROPERTY_TO_MAP(PROP_COLLISION_MASK, unused, collisionMask, uint16_t); + ADD_PROPERTY_TO_MAP(PROP_COLLISION_MASK, unused, collidesWith, uint16_t); + ADD_PROPERTY_TO_MAP(PROP_DYNAMIC, unused, collisionsWillMove, bool); // legacy support + ADD_PROPERTY_TO_MAP(PROP_DYNAMIC, unused, dynamic, bool); ADD_PROPERTY_TO_MAP(PROP_COLLISION_SOUND_URL, CollisionSoundURL, collisionSoundURL, QString); ADD_PROPERTY_TO_MAP(PROP_ACTION_DATA, ActionData, actionData, QByteArray); diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index d030f4f2e4..0142f42536 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -14,6 +14,9 @@ #include +#include +#include + #include #include @@ -85,6 +88,16 @@ struct EntityPropertyInfo { QVariant maximum; }; +template +EntityPropertyInfo makePropertyInfo(EntityPropertyList p, typename std::enable_if::value>::type* = 0) { + return EntityPropertyInfo(p); +} + +template +EntityPropertyInfo makePropertyInfo(EntityPropertyList p, typename std::enable_if::value>::type* = 0) { + return EntityPropertyInfo(p, std::numeric_limits::min(), std::numeric_limits::max()); +} + /// A collection of properties of an entity item used in the scripting API. Translates between the actual properties of an /// entity and a JavaScript style hash/QScriptValue storing a set of properties. Used in scripting to set/get the complete /// set of entity item properties via JavaScript hashes/QScriptValues diff --git a/libraries/entities/src/EntityItemPropertiesMacros.h b/libraries/entities/src/EntityItemPropertiesMacros.h index 7064f3e62e..4c989ef74e 100644 --- a/libraries/entities/src/EntityItemPropertiesMacros.h +++ b/libraries/entities/src/EntityItemPropertiesMacros.h @@ -416,9 +416,10 @@ inline QRect QRect_convertFromScriptValue(const QScriptValue& v, bool& isValid) T _##n; \ static T _static##N; + #define ADD_PROPERTY_TO_MAP(P, N, n, T) \ { \ - EntityPropertyInfo propertyInfo = EntityPropertyInfo(P); \ + EntityPropertyInfo propertyInfo { makePropertyInfo(P) }; \ _propertyInfos[#n] = propertyInfo; \ _enumsToPropertyStrings[P] = #n; \ } diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index ca04f36dc9..3283e6c266 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -616,6 +616,8 @@ const GROUPS = [ decimals: 3, propertyID: "webAlpha", propertyName: "alpha", + min: 0, + max: 1, }, { label: "Max FPS", From e912500cc2ac5dd0892c9ab9f67ec390bb150054 Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 12 Apr 2019 09:10:12 -0700 Subject: [PATCH 009/396] Fix oven integration in the asset server --- assignment-client/src/assets/AssetServer.cpp | 134 +++++++++++------- assignment-client/src/assets/AssetServer.h | 7 +- .../src/assets/BakeAssetTask.cpp | 34 +++-- assignment-client/src/assets/BakeAssetTask.h | 2 +- 4 files changed, 111 insertions(+), 66 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index c2aec9b058..88f81f639b 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -1326,12 +1326,40 @@ void AssetServer::handleFailedBake(QString originalAssetHash, QString assetPath, } void AssetServer::handleCompletedBake(QString originalAssetHash, QString originalAssetPath, - QString bakedTempOutputDir, QVector bakedFilePaths) { + QString bakedTempOutputDir) { bool errorCompletingBake { false }; QString errorReason; qDebug() << "Completing bake for " << originalAssetHash; + + + QDir outputDir(bakedTempOutputDir); + auto directories = outputDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); + assert(directories.size() == 1); + QString bakedDirectoryPath; + for (const auto& dirName : directories) { + outputDir.cd(dirName); + if (outputDir.exists("baked") && outputDir.exists("original")) { + bakedDirectoryPath = outputDir.filePath("baked"); + } + outputDir.cdUp(); + } + + assert(!bakedDirectoryPath.isEmpty()); + + QDirIterator it(bakedDirectoryPath, QDirIterator::Subdirectories); + QVector bakedFilePaths; + while (it.hasNext()) { + it.next(); + if (it.fileInfo().isFile()) { + bakedFilePaths.push_back(it.filePath()); + } + } + + QDir bakedDirectory(bakedDirectoryPath); + QString redirectTarget; + for (auto& filePath : bakedFilePaths) { // figure out the hash for the contents of this file QFile file(filePath); @@ -1340,62 +1368,59 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina AssetUtils::AssetHash bakedFileHash; - if (file.open(QIODevice::ReadOnly)) { - QCryptographicHash hasher(QCryptographicHash::Sha256); - - if (hasher.addData(&file)) { - bakedFileHash = hasher.result().toHex(); - } else { - // stop handling this bake, couldn't hash the contents of the file - errorCompletingBake = true; - errorReason = "Failed to finalize bake"; - break; - } - - // first check that we don't already have this bake file in our list - auto bakeFileDestination = _filesDirectory.absoluteFilePath(bakedFileHash); - if (!QFile::exists(bakeFileDestination)) { - // copy each to our files folder (with the hash as their filename) - if (!file.copy(_filesDirectory.absoluteFilePath(bakedFileHash))) { - // stop handling this bake, couldn't copy the bake file into our files directory - errorCompletingBake = true; - errorReason = "Failed to copy baked assets to asset server"; - break; - } - } - - // setup the mapping for this bake file - auto relativeFilePath = QUrl(filePath).fileName(); - qDebug() << "Relative file path is: " << relativeFilePath; - if (relativeFilePath.endsWith(".fbx", Qt::CaseInsensitive)) { - // for an FBX file, we replace the filename with the simple name - // (to handle the case where two mapped assets have the same hash but different names) - relativeFilePath = BAKED_ASSET_SIMPLE_FBX_NAME; - } else if (relativeFilePath.endsWith(".js", Qt::CaseInsensitive)) { - relativeFilePath = BAKED_ASSET_SIMPLE_JS_NAME; - } else if (!originalAssetPath.endsWith(".fbx", Qt::CaseInsensitive)) { - relativeFilePath = BAKED_ASSET_SIMPLE_TEXTURE_NAME; - } - - QString bakeMapping = getBakeMapping(originalAssetHash, relativeFilePath); - - // add a mapping (under the hidden baked folder) for this file resulting from the bake - if (setMapping(bakeMapping, bakedFileHash)) { - qDebug() << "Added" << bakeMapping << "for bake file" << bakedFileHash << "from bake of" << originalAssetHash; - } else { - qDebug() << "Failed to set mapping"; - // stop handling this bake, couldn't add a mapping for this bake file - errorCompletingBake = true; - errorReason = "Failed to finalize bake"; - break; - } - } else { + if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Failed to open baked file: " << filePath; // stop handling this bake, we couldn't open one of the files for reading errorCompletingBake = true; errorReason = "Failed to finalize bake"; break; } + + QCryptographicHash hasher(QCryptographicHash::Sha256); + + if (!hasher.addData(&file)) { + // stop handling this bake, couldn't hash the contents of the file + errorCompletingBake = true; + errorReason = "Failed to finalize bake"; + break; + } + + bakedFileHash = hasher.result().toHex(); + + // first check that we don't already have this bake file in our list + auto bakeFileDestination = _filesDirectory.absoluteFilePath(bakedFileHash); + if (!QFile::exists(bakeFileDestination)) { + // copy each to our files folder (with the hash as their filename) + if (!file.copy(_filesDirectory.absoluteFilePath(bakedFileHash))) { + // stop handling this bake, couldn't copy the bake file into our files directory + errorCompletingBake = true; + errorReason = "Failed to copy baked assets to asset server"; + break; + } + } + + // setup the mapping for this bake file + auto relativeFilePath = bakedDirectory.relativeFilePath(filePath); + qDebug() << "Relative file path is: " << relativeFilePath; + + QString bakeMapping = getBakeMapping(originalAssetHash, relativeFilePath); + + // Check if this is the file we should redirect to when someone asks for the original asset + if ((relativeFilePath.endsWith(".baked.fst", Qt::CaseInsensitive) && originalAssetPath.endsWith(".fbx")) || + (relativeFilePath.endsWith(".texmeta.json", Qt::CaseInsensitive) && !originalAssetPath.endsWith(".fbx"))) { + redirectTarget = bakeMapping; + } + + // add a mapping (under the hidden baked folder) for this file resulting from the bake + if (!setMapping(bakeMapping, bakedFileHash)) { + qDebug() << "Failed to set mapping"; + // stop handling this bake, couldn't add a mapping for this bake file + errorCompletingBake = true; + errorReason = "Failed to finalize bake"; + break; + } + + qDebug() << "Added" << bakeMapping << "for bake file" << bakedFileHash << "from bake of" << originalAssetHash; } for (auto& filePath : bakedFilePaths) { @@ -1411,9 +1436,12 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina auto type = assetTypeForFilename(originalAssetPath); auto currentTypeVersion = currentBakeVersionForAssetType(type); + assert(!redirectTarget.isEmpty()); + AssetMeta meta; meta.bakeVersion = currentTypeVersion; meta.failedLastBake = errorCompletingBake; + meta.redirectTarget = redirectTarget; if (errorCompletingBake) { qWarning() << "Could not complete bake for" << originalAssetHash; @@ -1435,6 +1463,7 @@ void AssetServer::handleAbortedBake(QString originalAssetHash, QString assetPath static const QString BAKE_VERSION_KEY = "bake_version"; static const QString FAILED_LAST_BAKE_KEY = "failed_last_bake"; static const QString LAST_BAKE_ERRORS_KEY = "last_bake_errors"; +static const QString REDIRECT_TARGET_KEY = "redirect_target"; std::pair AssetServer::readMetaFile(AssetUtils::AssetHash hash) { auto metaFilePath = AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + hash + "/" + "meta.json"; @@ -1461,6 +1490,7 @@ std::pair AssetServer::readMetaFile(AssetUtils::AssetHash hash) auto bakeVersion = root[BAKE_VERSION_KEY]; auto failedLastBake = root[FAILED_LAST_BAKE_KEY]; auto lastBakeErrors = root[LAST_BAKE_ERRORS_KEY]; + auto redirectTarget = root[REDIRECT_TARGET_KEY]; if (bakeVersion.isDouble() && failedLastBake.isBool() @@ -1470,6 +1500,7 @@ std::pair AssetServer::readMetaFile(AssetUtils::AssetHash hash) meta.bakeVersion = bakeVersion.toInt(); meta.failedLastBake = failedLastBake.toBool(); meta.lastBakeErrors = lastBakeErrors.toString(); + meta.redirectTarget = redirectTarget.toString(); return { true, meta }; } else { @@ -1488,6 +1519,7 @@ bool AssetServer::writeMetaFile(AssetUtils::AssetHash originalAssetHash, const A metaFileObject[BAKE_VERSION_KEY] = (int)meta.bakeVersion; metaFileObject[FAILED_LAST_BAKE_KEY] = meta.failedLastBake; metaFileObject[LAST_BAKE_ERRORS_KEY] = meta.lastBakeErrors; + metaFileObject[REDIRECT_TARGET_KEY] = meta.redirectTarget; QJsonDocument metaFileDoc; metaFileDoc.setObject(metaFileObject); diff --git a/assignment-client/src/assets/AssetServer.h b/assignment-client/src/assets/AssetServer.h index b3d0f18a8f..fe84df5141 100644 --- a/assignment-client/src/assets/AssetServer.h +++ b/assignment-client/src/assets/AssetServer.h @@ -62,12 +62,10 @@ enum class ScriptBakeVersion : BakeVersion { }; struct AssetMeta { - AssetMeta() { - } - BakeVersion bakeVersion { INITIAL_BAKE_VERSION }; bool failedLastBake { false }; QString lastBakeErrors; + QString redirectTarget; }; class BakeAssetTask; @@ -139,8 +137,7 @@ private: void bakeAsset(const AssetUtils::AssetHash& assetHash, const AssetUtils::AssetPath& assetPath, const QString& filePath); /// Move baked content for asset to baked directory and update baked status - void handleCompletedBake(QString originalAssetHash, QString assetPath, QString bakedTempOutputDir, - QVector bakedFilePaths); + void handleCompletedBake(QString originalAssetHash, QString assetPath, QString bakedTempOutputDir); void handleFailedBake(QString originalAssetHash, QString assetPath, QString errors); void handleAbortedBake(QString originalAssetHash, QString assetPath); diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index ecb4ede5d8..7ca87fe4e3 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -57,12 +57,19 @@ void BakeAssetTask::run() { return; } + // Make a new temporary directory for the Oven to work in QString tempOutputDir = PathUtils::generateTemporaryDir(); + + // Copy file to bake the temporary dir and give a name the oven can work with + auto assetName = _assetPath.split("/").last(); + auto tempAssetPath = tempOutputDir + "/" + assetName; + QFile::copy(_filePath, tempAssetPath); + auto base = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir(); QString path = base.absolutePath() + "/oven"; QString extension = _assetPath.mid(_assetPath.lastIndexOf('.') + 1); QStringList args { - "-i", _filePath, + "-i", tempAssetPath, "-o", tempOutputDir, "-t", extension, }; @@ -72,7 +79,7 @@ void BakeAssetTask::run() { QEventLoop loop; connect(_ovenProcess.get(), static_cast(&QProcess::finished), - this, [&loop, this, tempOutputDir](int exitCode, QProcess::ExitStatus exitStatus) { + this, [&loop, this, tempOutputDir, tempAssetPath](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "Baking process finished: " << exitCode << exitStatus; if (exitStatus == QProcess::CrashExit) { @@ -82,18 +89,20 @@ void BakeAssetTask::run() { QString errors = "Fatal error occurred while baking"; emit bakeFailed(_assetHash, _assetPath, errors); } - } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { - QDir outputDir = tempOutputDir; - auto files = outputDir.entryInfoList(QDir::Files); - QVector outputFiles; - for (auto& file : files) { - outputFiles.push_back(file.absoluteFilePath()); + if (!QDir(tempOutputDir).rmdir(".")) { + qWarning() << "Failed to remove temporary directory:" << tempOutputDir; } + } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { + // Remove temp copy of the original asset + QFile::remove(tempAssetPath); - emit bakeComplete(_assetHash, _assetPath, tempOutputDir, outputFiles); + emit bakeComplete(_assetHash, _assetPath, tempOutputDir); } else if (exitStatus == QProcess::NormalExit && exitCode == OVEN_STATUS_CODE_ABORT) { _wasAborted.store(true); emit bakeAborted(_assetHash, _assetPath); + if (!QDir(tempOutputDir).rmdir(".")) { + qWarning() << "Failed to remove temporary directory:" << tempOutputDir; + } } else { QString errors; if (exitCode == OVEN_STATUS_CODE_FAIL) { @@ -108,6 +117,9 @@ void BakeAssetTask::run() { } } emit bakeFailed(_assetHash, _assetPath, errors); + if (!QDir(tempOutputDir).rmdir(".")) { + qWarning() << "Failed to remove temporary directory:" << tempOutputDir; + } } loop.quit(); @@ -115,9 +127,13 @@ void BakeAssetTask::run() { qDebug() << "Starting oven for " << _assetPath; _ovenProcess->start(path, args, QIODevice::ReadOnly); + qDebug() << "Running:" << path << args; if (!_ovenProcess->waitForStarted(-1)) { QString errors = "Oven process failed to start"; emit bakeFailed(_assetHash, _assetPath, errors); + if (!QDir(tempOutputDir).rmdir(".")) { + qWarning() << "Failed to remove temporary directory:" << tempOutputDir; + } return; } diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index 24b070d08a..2d50a26bc1 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -37,7 +37,7 @@ public slots: void abort(); signals: - void bakeComplete(QString assetHash, QString assetPath, QString tempOutputDir, QVector outputFiles); + void bakeComplete(QString assetHash, QString assetPath, QString tempOutputDir); void bakeFailed(QString assetHash, QString assetPath, QString errors); void bakeAborted(QString assetHash, QString assetPath); From dc41fea46e66e4764d748825a8892f4f0f3d4ae0 Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 12 Apr 2019 11:26:40 -0700 Subject: [PATCH 010/396] Update Asset Server redirect and baking conditions --- assignment-client/src/assets/AssetServer.cpp | 132 +++++++++---------- 1 file changed, 60 insertions(+), 72 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index 88f81f639b..4805d2fe4c 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -107,6 +107,10 @@ BakeVersion currentBakeVersionForAssetType(BakedAssetType type) { } } +QString getBakeMapping(const AssetUtils::AssetHash& hash, const QString& relativeFilePath) { + return AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + hash + "/" + relativeFilePath; +} + const QString ASSET_SERVER_LOGGING_TARGET_NAME = "asset-server"; void AssetServer::bakeAsset(const AssetUtils::AssetHash& assetHash, const AssetUtils::AssetPath& assetPath, const QString& filePath) { @@ -141,26 +145,22 @@ std::pair AssetServer::getAssetStatus(const A return { AssetUtils::Baked, "" }; } - auto dotIndex = path.lastIndexOf("."); - if (dotIndex == -1) { + BakedAssetType type = assetTypeForFilename(path); + + if (type == BakedAssetType::Undefined) { return { AssetUtils::Irrelevant, "" }; } - auto extension = path.mid(dotIndex + 1); + bool loaded; + AssetMeta meta; + std::tie(loaded, meta) = readMetaFile(hash); - QString bakedFilename; - - if (BAKEABLE_MODEL_EXTENSIONS.contains(extension)) { - bakedFilename = BAKED_MODEL_SIMPLE_NAME; - } else if (BAKEABLE_TEXTURE_EXTENSIONS.contains(extension.toLocal8Bit()) && hasMetaFile(hash)) { - bakedFilename = BAKED_TEXTURE_SIMPLE_NAME; - } else if (BAKEABLE_SCRIPT_EXTENSIONS.contains(extension)) { - bakedFilename = BAKED_SCRIPT_SIMPLE_NAME; - } else { - return { AssetUtils::Irrelevant, "" }; + QString bakedFilename = bakedFilenameForAssetType(type); + auto bakedPath = getBakeMapping(hash, bakedFilename); + if (loaded && !meta.redirectTarget.isEmpty()) { + bakedPath = meta.redirectTarget; } - auto bakedPath = AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + hash + "/" + bakedFilename; auto jt = _fileMappings.find(bakedPath); if (jt != _fileMappings.end()) { if (jt->second == hash) { @@ -168,14 +168,8 @@ std::pair AssetServer::getAssetStatus(const A } else { return { AssetUtils::Baked, "" }; } - } else { - bool loaded; - AssetMeta meta; - - std::tie(loaded, meta) = readMetaFile(hash); - if (loaded && meta.failedLastBake) { - return { AssetUtils::Error, meta.lastBakeErrors }; - } + } else if (loaded && meta.failedLastBake) { + return { AssetUtils::Error, meta.lastBakeErrors }; } return { AssetUtils::Pending, "" }; @@ -227,8 +221,16 @@ bool AssetServer::needsToBeBaked(const AssetUtils::AssetPath& path, const AssetU return false; } + bool loaded; + AssetMeta meta; + std::tie(loaded, meta) = readMetaFile(assetHash); + QString bakedFilename = bakedFilenameForAssetType(type); - auto bakedPath = AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + assetHash + "/" + bakedFilename; + auto bakedPath = getBakeMapping(assetHash, bakedFilename); + if (loaded && !meta.redirectTarget.isEmpty()) { + bakedPath = meta.redirectTarget; + } + auto mappingIt = _fileMappings.find(bakedPath); bool bakedMappingExists = mappingIt != _fileMappings.end(); @@ -238,10 +240,6 @@ bool AssetServer::needsToBeBaked(const AssetUtils::AssetPath& path, const AssetU return false; } - bool loaded; - AssetMeta meta; - std::tie(loaded, meta) = readMetaFile(assetHash); - if (type == BakedAssetType::Texture && !loaded) { return false; } @@ -633,36 +631,33 @@ void AssetServer::handleGetMappingOperation(ReceivedMessage& message, NLPacketLi if (it != _fileMappings.end()) { // check if we should re-direct to a baked asset - - // first, figure out from the mapping extension what type of file this is - auto assetPathExtension = assetPath.mid(assetPath.lastIndexOf('.') + 1).toLower(); - - auto type = assetTypeForFilename(assetPath); - QString bakedRootFile = bakedFilenameForAssetType(type); - auto originalAssetHash = it->second; QString redirectedAssetHash; - QString bakedAssetPath; quint8 wasRedirected = false; bool bakingDisabled = false; - if (!bakedRootFile.isEmpty()) { - // we ran into an asset for which we could have a baked version, let's check if it's ready - bakedAssetPath = AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + originalAssetHash + "/" + bakedRootFile; - auto bakedIt = _fileMappings.find(bakedAssetPath); + bool loaded; + AssetMeta meta; + std::tie(loaded, meta) = readMetaFile(originalAssetHash); - if (bakedIt != _fileMappings.end()) { - if (bakedIt->second != originalAssetHash) { - qDebug() << "Did find baked version for: " << originalAssetHash << assetPath; - // we found a baked version of the requested asset to serve, redirect to that - redirectedAssetHash = bakedIt->second; - wasRedirected = true; - } else { - qDebug() << "Did not find baked version for: " << originalAssetHash << assetPath << " (disabled)"; - bakingDisabled = true; - } + auto type = assetTypeForFilename(assetPath); + QString bakedRootFile = bakedFilenameForAssetType(type); + QString bakedAssetPath = getBakeMapping(originalAssetHash, bakedRootFile); + + if (loaded && !meta.redirectTarget.isEmpty()) { + bakedAssetPath = meta.redirectTarget; + } + + auto bakedIt = _fileMappings.find(bakedAssetPath); + if (bakedIt != _fileMappings.end()) { + if (bakedIt->second != originalAssetHash) { + qDebug() << "Did find baked version for: " << originalAssetHash << assetPath; + // we found a baked version of the requested asset to serve, redirect to that + redirectedAssetHash = bakedIt->second; + wasRedirected = true; } else { - qDebug() << "Did not find baked version for: " << originalAssetHash << assetPath; + qDebug() << "Did not find baked version for: " << originalAssetHash << assetPath << " (disabled)"; + bakingDisabled = true; } } @@ -684,20 +679,13 @@ void AssetServer::handleGetMappingOperation(ReceivedMessage& message, NLPacketLi auto query = QUrlQuery(url.query()); bool isSkybox = query.hasQueryItem("skybox"); - if (isSkybox) { - bool loaded; - AssetMeta meta; - std::tie(loaded, meta) = readMetaFile(originalAssetHash); - - if (!loaded) { - AssetMeta needsBakingMeta; - needsBakingMeta.bakeVersion = NEEDS_BAKING_BAKE_VERSION; - - writeMetaFile(originalAssetHash, needsBakingMeta); - if (!bakingDisabled) { - maybeBake(assetPath, originalAssetHash); - } + if (isSkybox && !loaded) { + AssetMeta needsBakingMeta; + needsBakingMeta.bakeVersion = NEEDS_BAKING_BAKE_VERSION; + writeMetaFile(originalAssetHash, needsBakingMeta); + if (!bakingDisabled) { + maybeBake(assetPath, originalAssetHash); } } } @@ -1297,14 +1285,6 @@ bool AssetServer::renameMapping(AssetUtils::AssetPath oldPath, AssetUtils::Asset } } -static const QString BAKED_ASSET_SIMPLE_FBX_NAME = "asset.fbx"; -static const QString BAKED_ASSET_SIMPLE_TEXTURE_NAME = "texture.ktx"; -static const QString BAKED_ASSET_SIMPLE_JS_NAME = "asset.js"; - -QString getBakeMapping(const AssetUtils::AssetHash& hash, const QString& relativeFilePath) { - return AssetUtils::HIDDEN_BAKED_CONTENT_FOLDER + hash + "/" + relativeFilePath; -} - void AssetServer::handleFailedBake(QString originalAssetHash, QString assetPath, QString errors) { qDebug() << "Failed to bake: " << originalAssetHash << assetPath << "(" << errors << ")"; @@ -1553,10 +1533,18 @@ bool AssetServer::setBakingEnabled(const AssetUtils::AssetPathList& paths, bool if (type == BakedAssetType::Undefined) { continue; } - QString bakedFilename = bakedFilenameForAssetType(type); auto hash = it->second; + + bool loaded; + AssetMeta meta; + std::tie(loaded, meta) = readMetaFile(hash); + + QString bakedFilename = bakedFilenameForAssetType(type); auto bakedMapping = getBakeMapping(hash, bakedFilename); + if (loaded && !meta.redirectTarget.isEmpty()) { + bakedMapping = meta.redirectTarget; + } auto it = _fileMappings.find(bakedMapping); bool currentlyDisabled = (it != _fileMappings.end() && it->second == hash); From 77d8a3691412733f10fa9f0be87752abc518581a Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 11 Apr 2019 16:41:31 -0700 Subject: [PATCH 011/396] attempt to handle atp redirects from .fbx to .baked.fst --- .../src/material-networking/TextureCache.cpp | 6 +- .../src/model-networking/ModelCache.cpp | 315 ++++++++---------- .../src/model-networking/ModelCache.h | 43 ++- 3 files changed, 171 insertions(+), 193 deletions(-) diff --git a/libraries/material-networking/src/material-networking/TextureCache.cpp b/libraries/material-networking/src/material-networking/TextureCache.cpp index 6af59930fa..8ae5b12286 100644 --- a/libraries/material-networking/src/material-networking/TextureCache.cpp +++ b/libraries/material-networking/src/material-networking/TextureCache.cpp @@ -630,11 +630,9 @@ void NetworkTexture::makeLocalRequest() { } bool NetworkTexture::handleFailedRequest(ResourceRequest::Result result) { - if (_currentlyLoadingResourceType != ResourceType::KTX - && result == ResourceRequest::Result::RedirectFail) { - + if (_shouldFailOnRedirect && result == ResourceRequest::Result::RedirectFail) { auto newPath = _request->getRelativePathUrl(); - if (newPath.fileName().endsWith(".ktx")) { + if (newPath.fileName().toLower().endsWith(".ktx")) { _currentlyLoadingResourceType = ResourceType::KTX; _activeUrl = newPath; _shouldFailOnRedirect = false; diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 23b365dd03..fe242335e7 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -31,8 +31,6 @@ Q_LOGGING_CATEGORY(trace_resource_parse_geometry, "trace.resource.parse.geometry") -class GeometryReader; - class GeometryExtra { public: const GeometryMappingPair& mapping; @@ -87,113 +85,6 @@ namespace std { }; } -QUrl resolveTextureBaseUrl(const QUrl& url, const QUrl& textureBaseUrl) { - return textureBaseUrl.isValid() ? textureBaseUrl : url; -} - -class GeometryMappingResource : public GeometryResource { - Q_OBJECT -public: - GeometryMappingResource(const QUrl& url) : GeometryResource(url) {}; - - QString getType() const override { return "GeometryMapping"; } - - virtual void downloadFinished(const QByteArray& data) override; - -private slots: - void onGeometryMappingLoaded(bool success); - -private: - GeometryResource::Pointer _geometryResource; - QMetaObject::Connection _connection; -}; - -void GeometryMappingResource::downloadFinished(const QByteArray& data) { - PROFILE_ASYNC_BEGIN(resource_parse_geometry, "GeometryMappingResource::downloadFinished", _url.toString(), - { { "url", _url.toString() } }); - - // store parsed contents of FST file - _mapping = FSTReader::readMapping(data); - - QString filename = _mapping.value("filename").toString(); - - if (filename.isNull()) { - finishedLoading(false); - } else { - const QString baseURL = _mapping.value("baseURL").toString(); - const QUrl base = _effectiveBaseURL.resolved(baseURL); - QUrl url = base.resolved(filename); - - QString texdir = _mapping.value(TEXDIR_FIELD).toString(); - if (!texdir.isNull()) { - if (!texdir.endsWith('/')) { - texdir += '/'; - } - _textureBaseUrl = resolveTextureBaseUrl(url, base.resolved(texdir)); - } else { - _textureBaseUrl = url.resolved(QUrl(".")); - } - - auto scripts = FSTReader::getScripts(base, _mapping); - if (scripts.size() > 0) { - _mapping.remove(SCRIPT_FIELD); - for (auto &scriptPath : scripts) { - _mapping.insertMulti(SCRIPT_FIELD, scriptPath); - } - } - - auto animGraphVariant = _mapping.value("animGraphUrl"); - - if (animGraphVariant.isValid()) { - QUrl fstUrl(animGraphVariant.toString()); - if (fstUrl.isValid()) { - _animGraphOverrideUrl = base.resolved(fstUrl); - } else { - _animGraphOverrideUrl = QUrl(); - } - } else { - _animGraphOverrideUrl = QUrl(); - } - - auto modelCache = DependencyManager::get(); - GeometryExtra extra { GeometryMappingPair(base, _mapping), _textureBaseUrl, false }; - - // Get the raw GeometryResource - _geometryResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); - // Avoid caching nested resources - their references will be held by the parent - _geometryResource->_isCacheable = false; - - if (_geometryResource->isLoaded()) { - onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); - } else { - if (_connection) { - disconnect(_connection); - } - - _connection = connect(_geometryResource.data(), &Resource::finished, - this, &GeometryMappingResource::onGeometryMappingLoaded); - } - } -} - -void GeometryMappingResource::onGeometryMappingLoaded(bool success) { - if (success && _geometryResource) { - _hfmModel = _geometryResource->_hfmModel; - _materialMapping = _geometryResource->_materialMapping; - _meshParts = _geometryResource->_meshParts; - _meshes = _geometryResource->_meshes; - _materials = _geometryResource->_materials; - - // Avoid holding onto extra references - _geometryResource.reset(); - // Make sure connection will not trigger again - disconnect(_connection); // FIXME Should not have to do this - } - - PROFILE_ASYNC_END(resource_parse_geometry, "GeometryMappingResource::downloadFinished", _url.toString()); - finishedLoading(success); -} - class GeometryReader : public QRunnable { public: GeometryReader(const ModelLoader& modelLoader, QWeakPointer& resource, const QUrl& url, const GeometryMappingPair& mapping, @@ -300,47 +191,137 @@ void GeometryReader::run() { } } -class GeometryDefinitionResource : public GeometryResource { - Q_OBJECT -public: - GeometryDefinitionResource(const ModelLoader& modelLoader, const QUrl& url) : GeometryResource(url), _modelLoader(modelLoader) {} - GeometryDefinitionResource(const GeometryDefinitionResource& other) : - GeometryResource(other), - _modelLoader(other._modelLoader), - _mapping(other._mapping), - _combineParts(other._combineParts) {} +QUrl resolveTextureBaseUrl(const QUrl& url, const QUrl& textureBaseUrl) { + return textureBaseUrl.isValid() ? textureBaseUrl : url; +} - QString getType() const override { return "GeometryDefinition"; } +GeometryResource::GeometryResource(const GeometryResource& other) : + Resource(other), + Geometry(other), + _modelLoader(other._modelLoader), + _mappingPair(other._mappingPair), + _textureBaseURL(other._textureBaseURL), + _combineParts(other._combineParts), + _isCacheable(other._isCacheable) +{ + if (other._geometryResource) { + _startedLoading = false; + } +} - virtual void downloadFinished(const QByteArray& data) override; +void GeometryResource::downloadFinished(const QByteArray& data) { + if (_activeUrl.fileName().toLower().endsWith(".fst")) { + PROFILE_ASYNC_BEGIN(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); - void setExtra(void* extra) override; + // store parsed contents of FST file + _mapping = FSTReader::readMapping(data); -protected: - Q_INVOKABLE void setGeometryDefinition(HFMModel::Pointer hfmModel, const GeometryMappingPair& mapping); + QString filename = _mapping.value("filename").toString(); -private: - ModelLoader _modelLoader; - GeometryMappingPair _mapping; - bool _combineParts; -}; + if (filename.isNull()) { + finishedLoading(false); + } else { + const QString baseURL = _mapping.value("baseURL").toString(); + const QUrl base = _effectiveBaseURL.resolved(baseURL); + QUrl url = base.resolved(filename); -void GeometryDefinitionResource::setExtra(void* extra) { + QString texdir = _mapping.value(TEXDIR_FIELD).toString(); + if (!texdir.isNull()) { + if (!texdir.endsWith('/')) { + texdir += '/'; + } + _textureBaseURL = resolveTextureBaseUrl(url, base.resolved(texdir)); + } else { + _textureBaseURL = url.resolved(QUrl(".")); + } + + auto scripts = FSTReader::getScripts(base, _mapping); + if (scripts.size() > 0) { + _mapping.remove(SCRIPT_FIELD); + for (auto &scriptPath : scripts) { + _mapping.insertMulti(SCRIPT_FIELD, scriptPath); + } + } + + auto animGraphVariant = _mapping.value("animGraphUrl"); + + if (animGraphVariant.isValid()) { + QUrl fstUrl(animGraphVariant.toString()); + if (fstUrl.isValid()) { + _animGraphOverrideUrl = base.resolved(fstUrl); + } else { + _animGraphOverrideUrl = QUrl(); + } + } else { + _animGraphOverrideUrl = QUrl(); + } + + auto modelCache = DependencyManager::get(); + GeometryExtra extra { GeometryMappingPair(base, _mapping), _textureBaseURL, false }; + + // Get the raw GeometryResource + _geometryResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); + // Avoid caching nested resources - their references will be held by the parent + _geometryResource->_isCacheable = false; + + if (_geometryResource->isLoaded()) { + onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); + } else { + if (_connection) { + disconnect(_connection); + } + + _connection = connect(_geometryResource.data(), &Resource::finished, this, &GeometryResource::onGeometryMappingLoaded); + } + } + } else { + if (_url != _effectiveBaseURL) { + _url = _effectiveBaseURL; + _textureBaseURL = _effectiveBaseURL; + } + QThreadPool::globalInstance()->start(new GeometryReader(_modelLoader, _self, _effectiveBaseURL, _mappingPair, data, _combineParts, _request->getWebMediaType())); + } +} + +bool GeometryResource::handleFailedRequest(ResourceRequest::Result result) { + if (_shouldFailOnRedirect && result == ResourceRequest::Result::RedirectFail) { + auto newPath = _request->getRelativePathUrl(); + if (newPath.fileName().toLower().endsWith(".fst")) { + _activeUrl = newPath; + _shouldFailOnRedirect = false; + makeRequest(); + return true; + } + } + return Resource::handleFailedRequest(result); +} + +void GeometryResource::onGeometryMappingLoaded(bool success) { + if (success && _geometryResource) { + _hfmModel = _geometryResource->_hfmModel; + _materialMapping = _geometryResource->_materialMapping; + _meshParts = _geometryResource->_meshParts; + _meshes = _geometryResource->_meshes; + _materials = _geometryResource->_materials; + + // Avoid holding onto extra references + _geometryResource.reset(); + // Make sure connection will not trigger again + disconnect(_connection); // FIXME Should not have to do this + } + + PROFILE_ASYNC_END(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString()); + finishedLoading(success); +} + +void GeometryResource::setExtra(void* extra) { const GeometryExtra* geometryExtra = static_cast(extra); - _mapping = geometryExtra ? geometryExtra->mapping : GeometryMappingPair(QUrl(), QVariantHash()); - _textureBaseUrl = geometryExtra ? resolveTextureBaseUrl(_url, geometryExtra->textureBaseUrl) : QUrl(); + _mappingPair = geometryExtra ? geometryExtra->mapping : GeometryMappingPair(QUrl(), QVariantHash()); + _textureBaseURL = geometryExtra ? resolveTextureBaseUrl(_url, geometryExtra->textureBaseUrl) : QUrl(); _combineParts = geometryExtra ? geometryExtra->combineParts : true; } -void GeometryDefinitionResource::downloadFinished(const QByteArray& data) { - if (_url != _effectiveBaseURL) { - _url = _effectiveBaseURL; - _textureBaseUrl = _effectiveBaseURL; - } - QThreadPool::globalInstance()->start(new GeometryReader(_modelLoader, _self, _effectiveBaseURL, _mapping, data, _combineParts, _request->getWebMediaType())); -} - -void GeometryDefinitionResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const GeometryMappingPair& mapping) { +void GeometryResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const GeometryMappingPair& mapping) { // Do processing on the model baker::Baker modelBaker(hfmModel, mapping.second, mapping.first); modelBaker.run(); @@ -353,7 +334,7 @@ void GeometryDefinitionResource::setGeometryDefinition(HFMModel::Pointer hfmMode QHash materialIDAtlas; for (const HFMMaterial& material : _hfmModel->materials) { materialIDAtlas[material.materialID] = _materials.size(); - _materials.push_back(std::make_shared(material, _textureBaseUrl)); + _materials.push_back(std::make_shared(material, _textureBaseURL)); } std::shared_ptr meshes = std::make_shared(); @@ -376,6 +357,23 @@ void GeometryDefinitionResource::setGeometryDefinition(HFMModel::Pointer hfmMode finishedLoading(true); } +void GeometryResource::deleter() { + resetTextures(); + Resource::deleter(); +} + +void GeometryResource::setTextures() { + if (_hfmModel) { + for (const HFMMaterial& material : _hfmModel->materials) { + _materials.push_back(std::make_shared(material, _textureBaseURL)); + } + } +} + +void GeometryResource::resetTextures() { + _materials.clear(); +} + ModelCache::ModelCache() { const qint64 GEOMETRY_DEFAULT_UNUSED_MAX_SIZE = DEFAULT_UNUSED_MAX_SIZE; setUnusedResourceCacheSize(GEOMETRY_DEFAULT_UNUSED_MAX_SIZE); @@ -388,26 +386,14 @@ ModelCache::ModelCache() { } QSharedPointer ModelCache::createResource(const QUrl& url) { - Resource* resource = nullptr; - if (url.path().toLower().endsWith(".fst")) { - resource = new GeometryMappingResource(url); - } else { - resource = new GeometryDefinitionResource(_modelLoader, url); - } - - return QSharedPointer(resource, &Resource::deleter); + return QSharedPointer(new GeometryResource(url, _modelLoader), &GeometryResource::deleter); } QSharedPointer ModelCache::createResourceCopy(const QSharedPointer& resource) { - if (resource->getURL().path().toLower().endsWith(".fst")) { - return QSharedPointer(new GeometryMappingResource(*resource.staticCast()), &Resource::deleter); - } else { - return QSharedPointer(new GeometryDefinitionResource(*resource.staticCast()), &Resource::deleter); - } + return QSharedPointer(new GeometryResource(*resource.staticCast()), &GeometryResource::deleter); } -GeometryResource::Pointer ModelCache::getGeometryResource(const QUrl& url, - const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { +GeometryResource::Pointer ModelCache::getGeometryResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { bool combineParts = true; GeometryExtra geometryExtra = { mapping, textureBaseUrl, combineParts }; GeometryResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); @@ -513,23 +499,6 @@ const std::shared_ptr Geometry::getShapeMaterial(int partID) co return nullptr; } -void GeometryResource::deleter() { - resetTextures(); - Resource::deleter(); -} - -void GeometryResource::setTextures() { - if (_hfmModel) { - for (const HFMMaterial& material : _hfmModel->materials) { - _materials.push_back(std::make_shared(material, _textureBaseUrl)); - } - } -} - -void GeometryResource::resetTextures() { - _materials.clear(); -} - void GeometryResourceWatcher::startWatching() { connect(_resource.data(), &Resource::finished, this, &GeometryResourceWatcher::resourceFinished); connect(_resource.data(), &Resource::onRefresh, this, &GeometryResourceWatcher::resourceRefreshed); diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index ca1ceaff16..93a3d811b3 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -24,8 +24,6 @@ class MeshPart; -class GeometryMappingResource; - using GeometryMappingPair = std::pair; Q_DECLARE_METATYPE(GeometryMappingPair) @@ -60,8 +58,6 @@ public: const QVariantHash& getMapping() const { return _mapping; } protected: - friend class GeometryMappingResource; - // Shared across all geometries, constant throughout lifetime std::shared_ptr _hfmModel; MaterialMapping _materialMapping; @@ -80,23 +76,30 @@ private: /// A geometry loaded from the network. class GeometryResource : public Resource, public Geometry { + Q_OBJECT public: using Pointer = QSharedPointer; - GeometryResource(const QUrl& url) : Resource(url) {} - GeometryResource(const GeometryResource& other) : - Resource(other), - Geometry(other), - _textureBaseUrl(other._textureBaseUrl), - _isCacheable(other._isCacheable) {} + GeometryResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) { _shouldFailOnRedirect = !url.fileName().toLower().endsWith(".fst"); } + GeometryResource(const GeometryResource& other); - virtual bool areTexturesLoaded() const override { return isLoaded() && Geometry::areTexturesLoaded(); } + QString getType() const override { return "Geometry"; } virtual void deleter() override; + virtual void downloadFinished(const QByteArray& data) override; + bool handleFailedRequest(ResourceRequest::Result result) override; + void setExtra(void* extra) override; + + virtual bool areTexturesLoaded() const override { return isLoaded() && Geometry::areTexturesLoaded(); } + +private slots: + void onGeometryMappingLoaded(bool success); + protected: friend class ModelCache; - friend class GeometryMappingResource; + + Q_INVOKABLE void setGeometryDefinition(HFMModel::Pointer hfmModel, const GeometryMappingPair& mapping); // Geometries may not hold onto textures while cached - that is for the texture cache // Instead, these methods clear and reset textures from the geometry when caching/loading @@ -104,10 +107,18 @@ protected: void setTextures(); void resetTextures(); - QUrl _textureBaseUrl; - virtual bool isCacheable() const override { return _loaded && _isCacheable; } - bool _isCacheable { true }; + +private: + ModelLoader _modelLoader; + GeometryMappingPair _mappingPair; + QUrl _textureBaseURL; + bool _combineParts; + + GeometryResource::Pointer _geometryResource; + QMetaObject::Connection _connection; + + bool _isCacheable{ true }; }; class GeometryResourceWatcher : public QObject { @@ -158,7 +169,7 @@ public: const QUrl& textureBaseUrl = QUrl()); protected: - friend class GeometryMappingResource; + friend class GeometryResource; virtual QSharedPointer createResource(const QUrl& url) override; QSharedPointer createResourceCopy(const QSharedPointer& resource) override; From 67f35e70745e9ba595829b1838daf3fb13b156de Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 12 Apr 2019 14:47:48 -0700 Subject: [PATCH 012/396] fix material targets when re-opening properties to same entity --- scripts/system/html/js/entityProperties.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 3f2ee4e699..630c9396ff 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -3505,6 +3505,7 @@ function loaded() { deleteJSONMaterialEditor(); } } + lastEntityID = null; resetProperties(); showGroupsForType("None"); From 794cedaa6070c87dc7fd45d11af959384d72974d Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 12 Apr 2019 15:49:34 -0700 Subject: [PATCH 013/396] Patch interface redirect code --- .../src/model-networking/ModelCache.cpp | 15 +-------------- .../src/model-networking/ModelCache.h | 3 +-- libraries/networking/src/ResourceCache.cpp | 1 + 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index fe242335e7..a837599b57 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -210,7 +210,7 @@ GeometryResource::GeometryResource(const GeometryResource& other) : } void GeometryResource::downloadFinished(const QByteArray& data) { - if (_activeUrl.fileName().toLower().endsWith(".fst")) { + if (_effectiveBaseURL.fileName().toLower().endsWith(".fst")) { PROFILE_ASYNC_BEGIN(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); // store parsed contents of FST file @@ -283,19 +283,6 @@ void GeometryResource::downloadFinished(const QByteArray& data) { } } -bool GeometryResource::handleFailedRequest(ResourceRequest::Result result) { - if (_shouldFailOnRedirect && result == ResourceRequest::Result::RedirectFail) { - auto newPath = _request->getRelativePathUrl(); - if (newPath.fileName().toLower().endsWith(".fst")) { - _activeUrl = newPath; - _shouldFailOnRedirect = false; - makeRequest(); - return true; - } - } - return Resource::handleFailedRequest(result); -} - void GeometryResource::onGeometryMappingLoaded(bool success) { if (success && _geometryResource) { _hfmModel = _geometryResource->_hfmModel; diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index 93a3d811b3..b14dcd7199 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -80,7 +80,7 @@ class GeometryResource : public Resource, public Geometry { public: using Pointer = QSharedPointer; - GeometryResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) { _shouldFailOnRedirect = !url.fileName().toLower().endsWith(".fst"); } + GeometryResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) {} GeometryResource(const GeometryResource& other); QString getType() const override { return "Geometry"; } @@ -88,7 +88,6 @@ public: virtual void deleter() override; virtual void downloadFinished(const QByteArray& data) override; - bool handleFailedRequest(ResourceRequest::Result result) override; void setExtra(void* extra) override; virtual bool areTexturesLoaded() const override { return isLoaded() && Geometry::areTexturesLoaded(); } diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index d5abb27a27..746c28a306 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -577,6 +577,7 @@ Resource::Resource(const Resource& other) : Resource::Resource(const QUrl& url) : _url(url), _activeUrl(url), + _effectiveBaseURL(url), _requestID(++requestID) { init(); } From d19b1c18a05c29612961b90f74474df71e95b3ae Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 27 Mar 2019 15:31:22 -0700 Subject: [PATCH 014/396] Fix MaterialBaker not including names in baked multi-materials --- libraries/graphics/src/graphics/Material.h | 1 + .../src/material-networking/MaterialCache.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index d24e906f98..80b247bed0 100755 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -318,6 +318,7 @@ public: void setTextureTransforms(const Transform& transform, MaterialMappingMode mode, bool repeat); const std::string& getName() const { return _name; } + void setName(const std::string& name) { _name = name; } const std::string& getModel() const { return _model; } void setModel(const std::string& model) { _model = model; } diff --git a/libraries/material-networking/src/material-networking/MaterialCache.cpp b/libraries/material-networking/src/material-networking/MaterialCache.cpp index 9eef89d5c9..5a5f4ab54b 100644 --- a/libraries/material-networking/src/material-networking/MaterialCache.cpp +++ b/libraries/material-networking/src/material-networking/MaterialCache.cpp @@ -184,6 +184,7 @@ std::pair> NetworkMaterialResource auto nameJSON = materialJSON.value(key); if (nameJSON.isString()) { name = nameJSON.toString().toStdString(); + material->setName(name); } } else if (key == "model") { auto modelJSON = materialJSON.value(key); From 8e3b76d2e35fadb75b55f28050f9c2c35357b387 Mon Sep 17 00:00:00 2001 From: danteruiz Date: Fri, 12 Apr 2019 17:11:35 -0700 Subject: [PATCH 015/396] fixing bubble --- interface/src/avatar/AvatarManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 575d87dfb7..6c0eb4a371 100755 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -498,8 +498,10 @@ void AvatarManager::handleRemovedAvatar(const AvatarSharedPointer& removedAvatar // on the creation of entities for that avatar instance and the deletion of entities for this instance avatar->removeAvatarEntitiesFromTree(); if (removalReason != KillAvatarReason::AvatarDisconnected) { - emit AvatarInputs::getInstance()->avatarEnteredIgnoreRadius(avatar->getSessionUUID()); - emit DependencyManager::get()->enteredIgnoreRadius(); + if (removalReason == KillAvatarReason::TheirAvatarEnteredYourBubble) { + emit AvatarInputs::getInstance()->avatarEnteredIgnoreRadius(avatar->getSessionUUID()); + emit DependencyManager::get()->enteredIgnoreRadius(); + } workload::Transaction workloadTransaction; workloadTransaction.remove(avatar->getSpaceIndex()); From c5b7bdc802096d9264f731cddd422a2e7f339fc1 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 12 Apr 2019 17:51:03 -0700 Subject: [PATCH 016/396] Fix unix warning --- libraries/networking/src/ResourceCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 746c28a306..44d3d1ee4d 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -576,8 +576,8 @@ Resource::Resource(const Resource& other) : Resource::Resource(const QUrl& url) : _url(url), - _activeUrl(url), _effectiveBaseURL(url), + _activeUrl(url), _requestID(++requestID) { init(); } From 0a62bf3e487e96046c424697e5395560b7337951 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 27 Mar 2019 15:31:22 -0700 Subject: [PATCH 017/396] Fix MaterialBaker not including names in baked multi-materials --- libraries/graphics/src/graphics/Material.h | 1 + .../src/material-networking/MaterialCache.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index d24e906f98..80b247bed0 100755 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -318,6 +318,7 @@ public: void setTextureTransforms(const Transform& transform, MaterialMappingMode mode, bool repeat); const std::string& getName() const { return _name; } + void setName(const std::string& name) { _name = name; } const std::string& getModel() const { return _model; } void setModel(const std::string& model) { _model = model; } diff --git a/libraries/material-networking/src/material-networking/MaterialCache.cpp b/libraries/material-networking/src/material-networking/MaterialCache.cpp index 9eef89d5c9..5a5f4ab54b 100644 --- a/libraries/material-networking/src/material-networking/MaterialCache.cpp +++ b/libraries/material-networking/src/material-networking/MaterialCache.cpp @@ -184,6 +184,7 @@ std::pair> NetworkMaterialResource auto nameJSON = materialJSON.value(key); if (nameJSON.isString()) { name = nameJSON.toString().toStdString(); + material->setName(name); } } else if (key == "model") { auto modelJSON = materialJSON.value(key); From 0940931068d31b165eb1114f1a9112e62654778c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 15 Apr 2019 10:37:28 -0700 Subject: [PATCH 018/396] Disable baking of embedded material textures in material entities --- tools/oven/src/DomainBaker.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index 8a4489fcac..50a3d212c0 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -412,9 +412,13 @@ void DomainBaker::enumerateEntities() { if (entity.contains(MATERIAL_URL_KEY)) { addMaterialBaker(MATERIAL_URL_KEY, entity[MATERIAL_URL_KEY].toString(), true, *it); } + // FIXME: Disabled for now because relative texture URLs are not supported for embedded materials in material entities + // We need to make texture URLs absolute in this particular case only, keeping in mind that FSTBaker also uses embedded materials + /* if (entity.contains(MATERIAL_DATA_KEY)) { addMaterialBaker(MATERIAL_DATA_KEY, entity[MATERIAL_DATA_KEY].toString(), false, *it); } + */ } } From ea8bc72bbf25762ae4f274c9cfc06586df57c46e Mon Sep 17 00:00:00 2001 From: Clement Date: Mon, 15 Apr 2019 19:08:44 -0700 Subject: [PATCH 019/396] Fix Asset Server reporting bad status for textures --- assignment-client/src/assets/AssetServer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index 4805d2fe4c..297a622c25 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -146,7 +146,6 @@ std::pair AssetServer::getAssetStatus(const A } BakedAssetType type = assetTypeForFilename(path); - if (type == BakedAssetType::Undefined) { return { AssetUtils::Irrelevant, "" }; } @@ -155,6 +154,12 @@ std::pair AssetServer::getAssetStatus(const A AssetMeta meta; std::tie(loaded, meta) = readMetaFile(hash); + // We create a meta file for Skyboxes at runtime when they get requested + // Otherwise, textures don't get baked by themselves. + if (type == BakedAssetType::Texture && !loaded) { + return { AssetUtils::Irrelevant, "" }; + } + QString bakedFilename = bakedFilenameForAssetType(type); auto bakedPath = getBakeMapping(hash, bakedFilename); if (loaded && !meta.redirectTarget.isEmpty()) { @@ -240,6 +245,8 @@ bool AssetServer::needsToBeBaked(const AssetUtils::AssetPath& path, const AssetU return false; } + // We create a meta file for Skyboxes at runtime when they get requested + // Otherwise, textures don't get baked by themselves. if (type == BakedAssetType::Texture && !loaded) { return false; } From 1b1b651b22a9d63327a139a9cc7d7f03492e0bc1 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 16 Apr 2019 15:16:26 -0700 Subject: [PATCH 020/396] fix oven crash (cherry picked from commit 2d5cfbf4f50b8a65713f23498124ee952cf61923) --- libraries/baking/src/FBXBaker.cpp | 7 ++++++- libraries/render-utils/src/Model.cpp | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index b7eb56c921..01897ee5e9 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -104,13 +104,15 @@ void FBXBaker::rewriteAndBakeSceneModels(const QVector& meshes, const int meshIndex = 0; for (FBXNode& rootChild : _rootNode.children) { if (rootChild.name == "Objects") { - for (auto object = rootChild.children.begin(); object != rootChild.children.end(); object++) { + auto object = rootChild.children.begin(); + while (object != rootChild.children.end()) { if (object->name == "Geometry") { if (object->properties.at(2) == "Mesh") { int meshNum = meshIndexToRuntimeOrder[meshIndex]; replaceMeshNodeWithDraco(*object, dracoMeshes[meshNum], dracoMaterialLists[meshNum]); meshIndex++; } + object++; } else if (object->name == "Model") { for (FBXNode& modelChild : object->children) { if (modelChild.name == "Properties60" || modelChild.name == "Properties70") { @@ -136,9 +138,12 @@ void FBXBaker::rewriteAndBakeSceneModels(const QVector& meshes, const meshIndex++; } } + object++; } else if (object->name == "Texture" || object->name == "Video") { // this is an embedded texture, we need to remove it from the FBX object = rootChild.children.erase(object); + } else { + object++; } if (hasErrors()) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index fbe0af11f2..23f385ba3e 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1540,9 +1540,13 @@ void Model::applyMaterialMapping() { auto& materialMapping = getMaterialMapping(); for (auto& mapping : materialMapping) { - std::set shapeIDs = getMeshIDsFromMaterialID(QString(mapping.first.c_str())); auto networkMaterialResource = mapping.second; - if (!networkMaterialResource || shapeIDs.size() == 0) { + if (!networkMaterialResource) { + continue; + } + + std::set shapeIDs = getMeshIDsFromMaterialID(QString(mapping.first.c_str())); + if (shapeIDs.size() == 0) { continue; } From 461c70301a82e48eb9134de19629d25f9f30ee0e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 16 Apr 2019 15:48:42 -0700 Subject: [PATCH 021/396] Fix Interface not loading some baked models correctly --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index c34b4678c7..3da08ade7c 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -358,7 +358,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me std::vector dracoMaterialList; for (const auto& dracoChild : child.children) { if (dracoChild.name == "FBXDracoMeshVersion") { - if (!dracoChild.children.isEmpty()) { + if (!dracoChild.properties.isEmpty()) { dracoMeshNodeVersion = dracoChild.properties[0].toUInt(); } } else if (dracoChild.name == "MaterialList") { From 03b28b3dfaabbcfe18724b4f62d980a0f9f09e13 Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 16 Apr 2019 19:40:59 -0700 Subject: [PATCH 022/396] Add error reporting + Make temp dir erase safer --- assignment-client/src/assets/AssetServer.cpp | 91 ++++++++++++------- .../src/assets/BakeAssetTask.cpp | 54 +++++------ libraries/shared/src/PathUtils.cpp | 24 +++++ libraries/shared/src/PathUtils.h | 1 + 4 files changed, 102 insertions(+), 68 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index 297a622c25..502cf15aa2 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -1314,27 +1314,57 @@ void AssetServer::handleFailedBake(QString originalAssetHash, QString assetPath, void AssetServer::handleCompletedBake(QString originalAssetHash, QString originalAssetPath, QString bakedTempOutputDir) { + auto reportCompletion = [this, originalAssetPath, originalAssetHash](bool errorCompletingBake, + QString errorReason, + QString redirectTarget) { + auto type = assetTypeForFilename(originalAssetPath); + auto currentTypeVersion = currentBakeVersionForAssetType(type); + + AssetMeta meta; + meta.bakeVersion = currentTypeVersion; + meta.failedLastBake = errorCompletingBake; + meta.redirectTarget = redirectTarget; + + if (errorCompletingBake) { + qWarning() << "Could not complete bake for" << originalAssetHash; + meta.lastBakeErrors = errorReason; + } + + writeMetaFile(originalAssetHash, meta); + + _pendingBakes.remove(originalAssetHash); + }; + bool errorCompletingBake { false }; QString errorReason; + QString redirectTarget; qDebug() << "Completing bake for " << originalAssetHash; - - + // Find the directory containing the baked content QDir outputDir(bakedTempOutputDir); + QString outputDirName = outputDir.dirName(); auto directories = outputDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); - assert(directories.size() == 1); QString bakedDirectoryPath; for (const auto& dirName : directories) { outputDir.cd(dirName); if (outputDir.exists("baked") && outputDir.exists("original")) { bakedDirectoryPath = outputDir.filePath("baked"); + break; } outputDir.cdUp(); } + if (bakedDirectoryPath.isEmpty()) { + errorCompletingBake = true; + errorReason = "Failed to find baking output"; - assert(!bakedDirectoryPath.isEmpty()); + // Cleanup temporary output directory + PathUtils::deleteMyTemporaryDir(outputDirName); + reportCompletion(errorCompletingBake, errorReason, redirectTarget); + return; + } + // Compile list of all the baked files QDirIterator it(bakedDirectoryPath, QDirIterator::Subdirectories); QVector bakedFilePaths; while (it.hasNext()) { @@ -1343,9 +1373,17 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina bakedFilePaths.push_back(it.filePath()); } } + if (bakedFilePaths.isEmpty()) { + errorCompletingBake = true; + errorReason = "Baking output has no files"; + + // Cleanup temporary output directory + PathUtils::deleteMyTemporaryDir(outputDirName); + reportCompletion(errorCompletingBake, errorReason, redirectTarget); + return; + } QDir bakedDirectory(bakedDirectoryPath); - QString redirectTarget; for (auto& filePath : bakedFilePaths) { // figure out the hash for the contents of this file @@ -1359,7 +1397,7 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina qDebug() << "Failed to open baked file: " << filePath; // stop handling this bake, we couldn't open one of the files for reading errorCompletingBake = true; - errorReason = "Failed to finalize bake"; + errorReason = "Could not open baked file " + file.fileName(); break; } @@ -1368,7 +1406,7 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina if (!hasher.addData(&file)) { // stop handling this bake, couldn't hash the contents of the file errorCompletingBake = true; - errorReason = "Failed to finalize bake"; + errorReason = "Could not hash data for " + file.fileName(); break; } @@ -1388,13 +1426,15 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina // setup the mapping for this bake file auto relativeFilePath = bakedDirectory.relativeFilePath(filePath); - qDebug() << "Relative file path is: " << relativeFilePath; QString bakeMapping = getBakeMapping(originalAssetHash, relativeFilePath); // Check if this is the file we should redirect to when someone asks for the original asset if ((relativeFilePath.endsWith(".baked.fst", Qt::CaseInsensitive) && originalAssetPath.endsWith(".fbx")) || (relativeFilePath.endsWith(".texmeta.json", Qt::CaseInsensitive) && !originalAssetPath.endsWith(".fbx"))) { + if (!redirectTarget.isEmpty()) { + qWarning() << "Found multiple baked redirect target for" << originalAssetPath; + } redirectTarget = bakeMapping; } @@ -1403,41 +1443,22 @@ void AssetServer::handleCompletedBake(QString originalAssetHash, QString origina qDebug() << "Failed to set mapping"; // stop handling this bake, couldn't add a mapping for this bake file errorCompletingBake = true; - errorReason = "Failed to finalize bake"; + errorReason = "Failed to set mapping for baked file " + file.fileName(); break; } qDebug() << "Added" << bakeMapping << "for bake file" << bakedFileHash << "from bake of" << originalAssetHash; } - for (auto& filePath : bakedFilePaths) { - QFile file(filePath); - if (!file.remove()) { - qWarning() << "Failed to remove temporary file:" << filePath; - } - } - if (!QDir(bakedTempOutputDir).rmdir(".")) { - qWarning() << "Failed to remove temporary directory:" << bakedTempOutputDir; + + if (redirectTarget.isEmpty()) { + errorCompletingBake = true; + errorReason = "Could not find root file for baked output"; } - auto type = assetTypeForFilename(originalAssetPath); - auto currentTypeVersion = currentBakeVersionForAssetType(type); - - assert(!redirectTarget.isEmpty()); - - AssetMeta meta; - meta.bakeVersion = currentTypeVersion; - meta.failedLastBake = errorCompletingBake; - meta.redirectTarget = redirectTarget; - - if (errorCompletingBake) { - qWarning() << "Could not complete bake for" << originalAssetHash; - meta.lastBakeErrors = errorReason; - } - - writeMetaFile(originalAssetHash, meta); - - _pendingBakes.remove(originalAssetHash); + // Cleanup temporary output directory + PathUtils::deleteMyTemporaryDir(outputDirName); + reportCompletion(errorCompletingBake, errorReason, redirectTarget); } void AssetServer::handleAbortedBake(QString originalAssetHash, QString assetPath) { diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 7ca87fe4e3..99fff4f180 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -36,21 +36,6 @@ BakeAssetTask::BakeAssetTask(const AssetUtils::AssetHash& assetHash, const Asset }); } -void cleanupTempFiles(QString tempOutputDir, std::vector files) { - for (const auto& filename : files) { - QFile f { filename }; - if (!f.remove()) { - qDebug() << "Failed to remove:" << filename; - } - } - if (!tempOutputDir.isEmpty()) { - QDir dir { tempOutputDir }; - if (!dir.rmdir(".")) { - qDebug() << "Failed to remove temporary directory:" << tempOutputDir; - } - } -}; - void BakeAssetTask::run() { if (_isBaking.exchange(true)) { qWarning() << "Tried to start bake asset task while already baking"; @@ -59,11 +44,24 @@ void BakeAssetTask::run() { // Make a new temporary directory for the Oven to work in QString tempOutputDir = PathUtils::generateTemporaryDir(); + QString tempOutputDirName = QDir(tempOutputDir).dirName(); + if (tempOutputDir.isEmpty()) { + QString errors = "Could not create temporary working directory"; + emit bakeFailed(_assetHash, _assetPath, errors); + PathUtils::deleteMyTemporaryDir(tempOutputDirName); + return; + } // Copy file to bake the temporary dir and give a name the oven can work with auto assetName = _assetPath.split("/").last(); auto tempAssetPath = tempOutputDir + "/" + assetName; - QFile::copy(_filePath, tempAssetPath); + auto sucess = QFile::copy(_filePath, tempAssetPath); + if (!sucess) { + QString errors = "Couldn't copy file to bake to temporary directory"; + emit bakeFailed(_assetHash, _assetPath, errors); + PathUtils::deleteMyTemporaryDir(tempOutputDirName); + return; + } auto base = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir(); QString path = base.absolutePath() + "/oven"; @@ -79,30 +77,23 @@ void BakeAssetTask::run() { QEventLoop loop; connect(_ovenProcess.get(), static_cast(&QProcess::finished), - this, [&loop, this, tempOutputDir, tempAssetPath](int exitCode, QProcess::ExitStatus exitStatus) { + this, [&loop, this, tempOutputDir, tempAssetPath, tempOutputDirName](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "Baking process finished: " << exitCode << exitStatus; if (exitStatus == QProcess::CrashExit) { + PathUtils::deleteMyTemporaryDir(tempOutputDirName); if (_wasAborted) { emit bakeAborted(_assetHash, _assetPath); } else { QString errors = "Fatal error occurred while baking"; emit bakeFailed(_assetHash, _assetPath, errors); } - if (!QDir(tempOutputDir).rmdir(".")) { - qWarning() << "Failed to remove temporary directory:" << tempOutputDir; - } } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { - // Remove temp copy of the original asset - QFile::remove(tempAssetPath); - emit bakeComplete(_assetHash, _assetPath, tempOutputDir); } else if (exitStatus == QProcess::NormalExit && exitCode == OVEN_STATUS_CODE_ABORT) { _wasAborted.store(true); + PathUtils::deleteMyTemporaryDir(tempOutputDirName); emit bakeAborted(_assetHash, _assetPath); - if (!QDir(tempOutputDir).rmdir(".")) { - qWarning() << "Failed to remove temporary directory:" << tempOutputDir; - } } else { QString errors; if (exitCode == OVEN_STATUS_CODE_FAIL) { @@ -116,10 +107,8 @@ void BakeAssetTask::run() { errors = "Unknown error occurred while baking"; } } + PathUtils::deleteMyTemporaryDir(tempOutputDirName); emit bakeFailed(_assetHash, _assetPath, errors); - if (!QDir(tempOutputDir).rmdir(".")) { - qWarning() << "Failed to remove temporary directory:" << tempOutputDir; - } } loop.quit(); @@ -128,12 +117,11 @@ void BakeAssetTask::run() { qDebug() << "Starting oven for " << _assetPath; _ovenProcess->start(path, args, QIODevice::ReadOnly); qDebug() << "Running:" << path << args; - if (!_ovenProcess->waitForStarted(-1)) { + if (!_ovenProcess->waitForStarted()) { + PathUtils::deleteMyTemporaryDir(tempOutputDirName); + QString errors = "Oven process failed to start"; emit bakeFailed(_assetHash, _assetPath, errors); - if (!QDir(tempOutputDir).rmdir(".")) { - qWarning() << "Failed to remove temporary directory:" << tempOutputDir; - } return; } diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 60b426e46d..be60533406 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -185,6 +185,30 @@ QString PathUtils::generateTemporaryDir() { return ""; } +bool PathUtils::deleteMyTemporaryDir(QString dirName) { + QDir rootTempDir = QDir::tempPath(); + + QString appName = qApp->applicationName(); + QRegularExpression re { "^" + QRegularExpression::escape(appName) + "\\-(?\\d+)\\-(?\\d+)$" }; + + auto match = re.match(dirName); + auto pid = match.capturedRef("pid").toLongLong(); + + if (match.hasMatch() && rootTempDir.exists(dirName) && pid == qApp->applicationPid()) { + auto absoluteDirPath = QDir(rootTempDir.absoluteFilePath(dirName)); + + bool success = absoluteDirPath.removeRecursively(); + if (success) { + qDebug() << " Removing temporary directory: " << absoluteDirPath.absolutePath(); + } else { + qDebug() << " Failed to remove temporary directory: " << absoluteDirPath.absolutePath(); + } + return success; + } + + return false; +} + // Delete all temporary directories for an application int PathUtils::removeTemporaryApplicationDirs(QString appName) { if (appName.isNull()) { diff --git a/libraries/shared/src/PathUtils.h b/libraries/shared/src/PathUtils.h index 0096cb6c90..cac5c58ca4 100644 --- a/libraries/shared/src/PathUtils.h +++ b/libraries/shared/src/PathUtils.h @@ -56,6 +56,7 @@ public: static QString getAppLocalDataFilePath(const QString& filename); static QString generateTemporaryDir(); + static bool deleteMyTemporaryDir(QString dirName); static int removeTemporaryApplicationDirs(QString appName = QString::null); From 7f42ecaa746d781617094b53724e59717f0a55e9 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 17 Apr 2019 11:33:53 -0700 Subject: [PATCH 023/396] Fix another Interface issue loading baked models --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 3da08ade7c..22e6a0ddb2 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -492,7 +492,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me // Figure out what material this part is if (dracoMeshNodeVersion >= 2) { // Define the materialID now - if (dracoMaterialList.size() - 1 <= materialID) { + if (materialID <= dracoMaterialList.size() - 1) { part.materialID = dracoMaterialList[materialID]; } } else { From f371b7b2d9a408b9bcf86c5563dfd8636d1b0f27 Mon Sep 17 00:00:00 2001 From: Clement Date: Wed, 17 Apr 2019 12:57:15 -0700 Subject: [PATCH 024/396] Fix typo --- assignment-client/src/assets/BakeAssetTask.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 99fff4f180..7c845f9b38 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -55,8 +55,8 @@ void BakeAssetTask::run() { // Copy file to bake the temporary dir and give a name the oven can work with auto assetName = _assetPath.split("/").last(); auto tempAssetPath = tempOutputDir + "/" + assetName; - auto sucess = QFile::copy(_filePath, tempAssetPath); - if (!sucess) { + auto success = QFile::copy(_filePath, tempAssetPath); + if (!success) { QString errors = "Couldn't copy file to bake to temporary directory"; emit bakeFailed(_assetHash, _assetPath, errors); PathUtils::deleteMyTemporaryDir(tempOutputDirName); From c7f270a9ba2aec62b4a54d83c2fa3f2f75e152cb Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 17 Apr 2019 13:47:39 -0700 Subject: [PATCH 025/396] Combine PR15375 & PR15376 for RC82 branch --- libraries/networking/src/LimitedNodeList.cpp | 6 ++++-- libraries/networking/src/NetworkPeer.h | 2 +- libraries/networking/src/NodeList.cpp | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 18a180ad79..82f3459c15 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -588,6 +588,8 @@ void LimitedNodeList::eraseAllNodes() { foreach(const SharedNodePointer& killedNode, killedNodes) { handleNodeKill(killedNode); } + + _delayedNodeAdds.clear(); } void LimitedNodeList::reset() { @@ -755,7 +757,7 @@ void LimitedNodeList::delayNodeAdd(NewNodeInfo info) { } void LimitedNodeList::removeDelayedAdd(QUuid nodeUUID) { - auto it = std::find_if(_delayedNodeAdds.begin(), _delayedNodeAdds.end(), [&](auto info) { + auto it = std::find_if(_delayedNodeAdds.begin(), _delayedNodeAdds.end(), [&](const auto& info) { return info.uuid == nodeUUID; }); if (it != _delayedNodeAdds.end()) { @@ -764,7 +766,7 @@ void LimitedNodeList::removeDelayedAdd(QUuid nodeUUID) { } bool LimitedNodeList::isDelayedNode(QUuid nodeUUID) { - auto it = std::find_if(_delayedNodeAdds.begin(), _delayedNodeAdds.end(), [&](auto info) { + auto it = std::find_if(_delayedNodeAdds.begin(), _delayedNodeAdds.end(), [&](const auto& info) { return info.uuid == nodeUUID; }); return it != _delayedNodeAdds.end(); diff --git a/libraries/networking/src/NetworkPeer.h b/libraries/networking/src/NetworkPeer.h index b75d2f8b86..43fbc753eb 100644 --- a/libraries/networking/src/NetworkPeer.h +++ b/libraries/networking/src/NetworkPeer.h @@ -26,7 +26,7 @@ const quint16 ICE_SERVER_DEFAULT_PORT = 7337; const int ICE_HEARBEAT_INTERVAL_MSECS = 2 * 1000; const int MAX_ICE_CONNECTION_ATTEMPTS = 5; -const int UDP_PUNCH_PING_INTERVAL_MS = 25; +const int UDP_PUNCH_PING_INTERVAL_MS = 250; class NetworkPeer : public QObject { Q_OBJECT diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 0021a594bc..0a4c63d712 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -752,11 +752,11 @@ void NodeList::pingPunchForInactiveNode(const SharedNodePointer& node) { flagTimeForConnectionStep(LimitedNodeList::ConnectionStep::SendAudioPing); } - // every second we're trying to ping this node and we're not getting anywhere - debug that out - const int NUM_DEBUG_CONNECTION_ATTEMPTS = 1000 / (UDP_PUNCH_PING_INTERVAL_MS); + // every two seconds we're trying to ping this node and we're not getting anywhere - debug that out + const int NUM_DEBUG_CONNECTION_ATTEMPTS = 2000 / (UDP_PUNCH_PING_INTERVAL_MS); if (node->getConnectionAttempts() > 0 && node->getConnectionAttempts() % NUM_DEBUG_CONNECTION_ATTEMPTS == 0) { - qCDebug(networking) << "No response to UDP hole punch pings for node" << node->getUUID() << "in last second."; + qCDebug(networking) << "No response to UDP hole punch pings for node" << node->getUUID() << "in last 2 s."; } auto nodeID = node->getUUID(); From ca15d3d3a8ea371dab65487fff3f0b8cf90bb93b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 17 Apr 2019 15:11:52 -0700 Subject: [PATCH 026/396] Fix baked FSTs unable to be rebaked by creating an FST in the original output folder --- libraries/baking/src/ModelBaker.cpp | 36 +++++++++++++++++++++++++++++ libraries/baking/src/ModelBaker.h | 1 + libraries/fbx/src/FSTReader.h | 1 + 3 files changed, 38 insertions(+) diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index e58ec00afa..00f7a38627 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -167,6 +167,10 @@ void ModelBaker::saveSourceModel() { connect(networkReply, &QNetworkReply::finished, this, &ModelBaker::handleModelNetworkReply); } + + if (_mappingURL.isEmpty()) { + outputUnbakedFST(); + } } void ModelBaker::handleModelNetworkReply() { @@ -313,6 +317,37 @@ void ModelBaker::handleFinishedMaterialBaker() { outputBakedFST(); } +void ModelBaker::outputUnbakedFST() { + // Output an unbaked FST file in the original output folder to make it easier for FSTBaker to rebake this model + // TODO: Consider a more robust method that does not depend on FSTBaker navigating to a hardcoded relative path + QString outputFSTFilename = _modelURL.fileName(); + auto extensionStart = outputFSTFilename.indexOf("."); + if (extensionStart != -1) { + outputFSTFilename.resize(extensionStart); + } + outputFSTFilename += FST_EXTENSION; + QString outputFSTURL = _originalOutputDir + "/" + outputFSTFilename; + + hifi::VariantHash outputMapping; + outputMapping[FST_VERSION_FIELD] = FST_VERSION; + outputMapping[FILENAME_FIELD] = _modelURL.fileName(); + outputMapping[COMMENT_FIELD] = "This FST file was generated by Oven for use during rebaking. It is not part of the original model. This file's existence is subject to change."; + hifi::ByteArray fstOut = FSTReader::writeMapping(outputMapping); + + QFile fstOutputFile { outputFSTURL }; + if (fstOutputFile.exists()) { + handleWarning("The file '" + outputFSTURL + "' already exists. Should that be baked instead of '" + _modelURL.toString() + "'?"); + return; + } + if (!fstOutputFile.open(QIODevice::WriteOnly)) { + handleWarning("Failed to open file '" + outputFSTURL + "' for writing. Rebaking may fail on the associated model."); + return; + } + if (fstOutputFile.write(fstOut) == -1) { + handleWarning("Failed to write to file '" + outputFSTURL + "'. Rebaking may fail on the associated model."); + } +} + void ModelBaker::outputBakedFST() { // Output FST file, copying over input mappings if available QString outputFSTFilename = !_mappingURL.isEmpty() ? _mappingURL.fileName() : _modelURL.fileName(); @@ -327,6 +362,7 @@ void ModelBaker::outputBakedFST() { outputMapping[FST_VERSION_FIELD] = FST_VERSION; outputMapping[FILENAME_FIELD] = _bakedModelURL.fileName(); outputMapping.remove(TEXDIR_FIELD); + outputMapping.remove(COMMENT_FIELD); hifi::ByteArray fstOut = FSTReader::writeMapping(outputMapping); QFile fstOutputFile { outputFSTURL }; diff --git a/libraries/baking/src/ModelBaker.h b/libraries/baking/src/ModelBaker.h index d612a0a43a..f280481803 100644 --- a/libraries/baking/src/ModelBaker.h +++ b/libraries/baking/src/ModelBaker.h @@ -82,6 +82,7 @@ protected slots: void handleFinishedMaterialBaker(); private: + void outputUnbakedFST(); void outputBakedFST(); bool _hasBeenBaked { false }; diff --git a/libraries/fbx/src/FSTReader.h b/libraries/fbx/src/FSTReader.h index 2b13bf3078..3945fe1d8b 100644 --- a/libraries/fbx/src/FSTReader.h +++ b/libraries/fbx/src/FSTReader.h @@ -33,6 +33,7 @@ static const QString BLENDSHAPE_FIELD = "bs"; static const QString SCRIPT_FIELD = "script"; static const QString JOINT_NAME_MAPPING_FIELD = "jointMap"; static const QString MATERIAL_MAPPING_FIELD = "materialMap"; +static const QString COMMENT_FIELD = "comment"; class FSTReader { public: From 7e445e40f8f6af3a61f016abe8e417ee7677eb5e Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Wed, 17 Apr 2019 17:25:02 -0700 Subject: [PATCH 027/396] change text to display --- interface/resources/qml/hifi/audio/Audio.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/audio/Audio.qml b/interface/resources/qml/hifi/audio/Audio.qml index f7e2494813..c603131b9c 100644 --- a/interface/resources/qml/hifi/audio/Audio.qml +++ b/interface/resources/qml/hifi/audio/Audio.qml @@ -254,7 +254,7 @@ Rectangle { switchWidth: root.switchWidth; anchors.top: parent.top anchors.left: parent.left - labelTextOn: qsTr("Warn when muted in HMD"); + labelTextOn: qsTr("HMD Mute Warning"); labelTextSize: 16; backgroundOnColor: "#E3E3E3"; checked: AudioScriptingInterface.warnWhenMuted; From ddb040eaf7a40d9afb09db6eba45bb36c16f6186 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 18 Apr 2019 07:48:59 -0700 Subject: [PATCH 028/396] adding settingsLoaded bool check --- interface/src/scripting/Audio.cpp | 5 +++-- interface/src/scripting/Audio.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index caae946116..0a29152c7c 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -174,7 +174,7 @@ void Audio::setPTTDesktop(bool enabled) { _pttDesktop = enabled; } }); - if (!enabled) { + if (!enabled && _settingsLoaded) { // Set to default behavior (unmuted for Desktop) on Push-To-Talk disable. setMutedDesktop(true); } else { @@ -202,7 +202,7 @@ void Audio::setPTTHMD(bool enabled) { _pttHMD = enabled; } }); - if (!enabled) { + if (!enabled && _settingsLoaded) { // Set to default behavior (unmuted for HMD) on Push-To-Talk disable. setMutedHMD(false); } else { @@ -231,6 +231,7 @@ void Audio::loadData() { auto client = DependencyManager::get().data(); QMetaObject::invokeMethod(client, "setMuted", Q_ARG(bool, isMuted()), Q_ARG(bool, false)); + _settingsLoaded = true; } bool Audio::getPTTHMD() const { diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index 00da566b30..f7116ced3a 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -409,6 +409,7 @@ protected: private: + bool _settingsLoaded { false }; float _inputVolume { 1.0f }; float _inputLevel { 0.0f }; float _localInjectorGain { 0.0f }; // in dB From b89dbf834625b59c02a025a373118b2ee1e51f36 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 18 Apr 2019 11:22:37 -0700 Subject: [PATCH 029/396] fix transparent textures on baked assets --- .../src/model-networking/ModelCache.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 23b365dd03..75c63f99ca 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -498,6 +498,20 @@ bool Geometry::areTexturesLoaded() const { material->checkResetOpacityMap(); } + for (auto& materialMapping : _materialMapping) { + if (materialMapping.second) { + for (auto& materialPair : materialMapping.second->parsedMaterials.networkMaterials) { + if (materialPair.second) { + if (materialPair.second->isMissingTexture()) { + return false; + } + + materialPair.second->checkResetOpacityMap(); + } + } + } + } + _areTexturesLoaded = true; } return true; From 3bb8da3f290bf860a4a088a4125dad757e82efd0 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 18 Apr 2019 14:46:08 -0700 Subject: [PATCH 030/396] real fix --- interface/src/scripting/Audio.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index 0a29152c7c..ce340f2665 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -174,9 +174,11 @@ void Audio::setPTTDesktop(bool enabled) { _pttDesktop = enabled; } }); - if (!enabled && _settingsLoaded) { - // Set to default behavior (unmuted for Desktop) on Push-To-Talk disable. - setMutedDesktop(true); + if (!enabled) { + if (_settingsLoaded) { + // Set to default behavior (unmuted for Desktop) on Push-To-Talk disable. + setMutedDesktop(true); + } } else { // Should be muted when not pushing to talk while PTT is enabled. setMutedDesktop(true); @@ -202,9 +204,11 @@ void Audio::setPTTHMD(bool enabled) { _pttHMD = enabled; } }); - if (!enabled && _settingsLoaded) { - // Set to default behavior (unmuted for HMD) on Push-To-Talk disable. - setMutedHMD(false); + if (!enabled) { + if (_settingsLoaded) { + // Set to default behavior (unmuted for HMD) on Push-To-Talk disable. + setMutedHMD(false); + } } else { // Should be muted when not pushing to talk while PTT is enabled. setMutedHMD(true); @@ -358,11 +362,6 @@ void Audio::onContextChanged() { changed = true; } }); - if (isHMD) { - setMuted(getMutedHMD()); - } else { - setMuted(getMutedDesktop()); - } if (changed) { emit contextChanged(isHMD ? Audio::HMD : Audio::DESKTOP); } From 389667ae563fd3cf54a3f41f3ee02489dbc58b80 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Wed, 17 Apr 2019 20:18:17 -0700 Subject: [PATCH 031/396] adding proper logic for shield icon behavior --- interface/resources/qml/BubbleIcon.qml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/BubbleIcon.qml b/interface/resources/qml/BubbleIcon.qml index f4e99f136c..b5a7ddb2d8 100644 --- a/interface/resources/qml/BubbleIcon.qml +++ b/interface/resources/qml/BubbleIcon.qml @@ -23,15 +23,15 @@ Rectangle { property bool ignoreRadiusEnabled: AvatarInputs.ignoreRadiusEnabled; function updateOpacity() { - if (ignoreRadiusEnabled) { - bubbleRect.opacity = 1.0; - } else { - bubbleRect.opacity = 0.7; - } + var rectOpacity = ignoreRadiusEnabled ? 1.0 : (mouseArea.containsMouse ? 1.0 : 0.7); + bubbleRect.opacity = rectOpacity; } Component.onCompleted: { updateOpacity(); + AvatarInputs.ignoreRadiusEnabledChanged.connect(function() { + ignoreRadiusEnabled = AvatarInputs.ignoreRadiusEnabled; + }); } onIgnoreRadiusEnabledChanged: { @@ -74,10 +74,10 @@ Rectangle { } drag.target: dragTarget; onContainsMouseChanged: { - var rectOpacity = (ignoreRadiusEnabled && containsMouse) ? 1.0 : (containsMouse ? 1.0 : 0.7); if (containsMouse) { Tablet.playSound(TabletEnums.ButtonHover); } + var rectOpacity = ignoreRadiusEnabled ? 1.0 : (mouseArea.containsMouse ? 1.0 : 0.7); bubbleRect.opacity = rectOpacity; } } From 94e51b136c7f5c4890d0a74d75b22fc884bfde1e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 18 Apr 2019 16:54:20 -0700 Subject: [PATCH 032/396] Fix baked models not preserving scale in some cases --- libraries/baking/src/FBXBaker.cpp | 21 ++++++ .../src/graphics-scripting/Forward.h | 5 +- .../GraphicsScriptingInterface.cpp | 4 + .../graphics-scripting/ScriptableModel.cpp | 4 + libraries/graphics/src/graphics/Material.h | 1 + .../src/material-networking/MaterialCache.cpp | 23 +++++- libraries/shared/src/RegisteredMetaTypes.cpp | 73 +++++++++++++++++++ libraries/shared/src/RegisteredMetaTypes.h | 4 + 8 files changed, 131 insertions(+), 4 deletions(-) diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index 01897ee5e9..9b80041bcf 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -142,6 +142,27 @@ void FBXBaker::rewriteAndBakeSceneModels(const QVector& meshes, const } else if (object->name == "Texture" || object->name == "Video") { // this is an embedded texture, we need to remove it from the FBX object = rootChild.children.erase(object); + } else if (object->name == "Material") { + for (FBXNode& materialChild : object->children) { + if (materialChild.name == "Properties60" || materialChild.name == "Properties70") { + // This is a properties node + // Remove the material texture scale because that is now included in the material JSON + // Texture nodes are removed, so their texture scale is effectively gone already + static const QVariant MAYA_UV_SCALE = hifi::ByteArray("Maya|uv_scale"); + static const QVariant MAYA_UV_OFFSET = hifi::ByteArray("Maya|uv_offset"); + for (int i = 0; i < materialChild.children.size(); i++) { + const auto& prop = materialChild.children[i]; + const auto& propertyName = prop.properties.at(0); + if (propertyName == MAYA_UV_SCALE || + propertyName == MAYA_UV_OFFSET) { + materialChild.children.removeAt(i); + --i; + } + } + } + } + + object++; } else { object++; } diff --git a/libraries/graphics-scripting/src/graphics-scripting/Forward.h b/libraries/graphics-scripting/src/graphics-scripting/Forward.h index d2d330167d..6d1b9d83d2 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/Forward.h +++ b/libraries/graphics-scripting/src/graphics-scripting/Forward.h @@ -59,8 +59,8 @@ namespace scriptable { * @property {string} occlusionMap * @property {string} lightmapMap * @property {string} scatteringMap - * @property {string} texCoordTransform0 - * @property {string} texCoordTransform1 + * @property {Mat4|string} texCoordTransform0 + * @property {Mat4|string} texCoordTransform1 * @property {string} lightmapParams * @property {string} materialParams * @property {boolean} defaultFallthrough @@ -93,6 +93,7 @@ namespace scriptable { QString occlusionMap; QString lightmapMap; QString scatteringMap; + std::array texCoordTransforms; bool defaultFallthrough; std::unordered_map propertyFallthroughs; // not actually exposed to script diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index 3bd4af601c..4182b52309 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -470,9 +470,13 @@ namespace scriptable { // These need to be implemented, but set the fallthrough for now if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM0)) { obj.setProperty("texCoordTransform0", FALLTHROUGH); + } else { + obj.setProperty("texCoordTransform0", mat4toScriptValue(engine, material.texCoordTransforms[0])); } if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM1)) { obj.setProperty("texCoordTransform1", FALLTHROUGH); + } else { + obj.setProperty("texCoordTransform1", mat4toScriptValue(engine, material.texCoordTransforms[1])); } if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::LIGHTMAP_PARAMS)) { obj.setProperty("lightmapParams", FALLTHROUGH); diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp index caee4ceb2a..8825a26bfe 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp @@ -119,6 +119,10 @@ scriptable::ScriptableMaterial::ScriptableMaterial(const graphics::MaterialPoint if (map && map->getTextureSource()) { scatteringMap = map->getTextureSource()->getUrl().toString(); } + + for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { + texCoordTransforms[i] = material->getTexCoordTransform(i); + } } } diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index 80b247bed0..330feaa61c 100755 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -324,6 +324,7 @@ public: void setModel(const std::string& model) { _model = model; } glm::mat4 getTexCoordTransform(uint i) const { return _texcoordTransforms[i]; } + void setTexCoordTransform(uint i, const glm::mat4& mat4) { _texcoordTransforms[i] = mat4; } glm::vec2 getLightmapParams() const { return _lightmapParams; } glm::vec2 getMaterialParams() const { return _materialParams; } diff --git a/libraries/material-networking/src/material-networking/MaterialCache.cpp b/libraries/material-networking/src/material-networking/MaterialCache.cpp index 5a5f4ab54b..9d6fc06d01 100644 --- a/libraries/material-networking/src/material-networking/MaterialCache.cpp +++ b/libraries/material-networking/src/material-networking/MaterialCache.cpp @@ -177,6 +177,9 @@ std::pair> NetworkMaterialResource material->setModel(modelString); } + std::array hasTexcoordTransform; + std::array texcoordTransforms; + if (modelString == HIFI_PBR) { const QString FALLTHROUGH("fallthrough"); for (auto& key : materialJSON.keys()) { @@ -372,8 +375,12 @@ std::pair> NetworkMaterialResource if (valueString == FALLTHROUGH) { material->setPropertyDoesFallthrough(graphics::Material::ExtraFlagBit::TEXCOORDTRANSFORM0); } + } else if (value.isObject()) { + auto valueVariant = value.toVariant(); + glm::mat4 transform = mat4FromVariant(valueVariant); + hasTexcoordTransform[0] = true; + texcoordTransforms[0] = transform; } - // TODO: implement texCoordTransform0 } else if (key == "texCoordTransform1") { auto value = materialJSON.value(key); if (value.isString()) { @@ -381,8 +388,12 @@ std::pair> NetworkMaterialResource if (valueString == FALLTHROUGH) { material->setPropertyDoesFallthrough(graphics::Material::ExtraFlagBit::TEXCOORDTRANSFORM1); } + } else if (value.isObject()) { + auto valueVariant = value.toVariant(); + glm::mat4 transform = mat4FromVariant(valueVariant); + hasTexcoordTransform[1] = true; + texcoordTransforms[1] = transform; } - // TODO: implement texCoordTransform1 } else if (key == "lightmapParams") { auto value = materialJSON.value(key); if (value.isString()) { @@ -409,6 +420,14 @@ std::pair> NetworkMaterialResource } } } + + // Do this after the texture maps are defined, so it overrides the default transforms + for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { + if (hasTexcoordTransform[i]) { + material->setTexCoordTransform(i, texcoordTransforms[i]); + } + } + return std::pair>(name, material); } diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index 597e537d8d..e453b7bff4 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -636,6 +636,79 @@ void mat4FromScriptValue(const QScriptValue& object, glm::mat4& mat4) { mat4[3][3] = object.property("r3c3").toVariant().toFloat(); } +QVariant mat4ToVariant(const glm::mat4& mat4) { + if (mat4 != mat4) { + // NaN + return QVariant(); + } + QVariantMap object; + + object["r0c0"] = mat4[0][0]; + object["r1c0"] = mat4[0][1]; + object["r2c0"] = mat4[0][2]; + object["r3c0"] = mat4[0][3]; + object["r0c1"] = mat4[1][0]; + object["r1c1"] = mat4[1][1]; + object["r2c1"] = mat4[1][2]; + object["r3c1"] = mat4[1][3]; + object["r0c2"] = mat4[2][0]; + object["r1c2"] = mat4[2][1]; + object["r2c2"] = mat4[2][2]; + object["r3c2"] = mat4[2][3]; + object["r0c3"] = mat4[3][0]; + object["r1c3"] = mat4[3][1]; + object["r2c3"] = mat4[3][2]; + object["r3c3"] = mat4[3][3]; + + return object; +} + +glm::mat4 mat4FromVariant(const QVariant& object, bool& valid) { + glm::mat4 mat4; + valid = false; + if (!object.isValid() || object.isNull()) { + return mat4; + } else { + const static auto getElement = [](const QVariantMap& map, const char * key, float& value, bool& everyConversionValid) { + auto variantValue = map[key]; + if (variantValue.canConvert()) { + value = variantValue.toFloat(); + } else { + everyConversionValid = false; + } + }; + + auto map = object.toMap(); + bool everyConversionValid = true; + + getElement(map, "r0c0", mat4[0][0], everyConversionValid); + getElement(map, "r1c0", mat4[0][1], everyConversionValid); + getElement(map, "r2c0", mat4[0][2], everyConversionValid); + getElement(map, "r3c0", mat4[0][3], everyConversionValid); + getElement(map, "r0c1", mat4[1][0], everyConversionValid); + getElement(map, "r1c1", mat4[1][1], everyConversionValid); + getElement(map, "r2c1", mat4[1][2], everyConversionValid); + getElement(map, "r3c1", mat4[1][3], everyConversionValid); + getElement(map, "r0c2", mat4[2][0], everyConversionValid); + getElement(map, "r1c2", mat4[2][1], everyConversionValid); + getElement(map, "r2c2", mat4[2][2], everyConversionValid); + getElement(map, "r3c2", mat4[2][3], everyConversionValid); + getElement(map, "r0c3", mat4[3][0], everyConversionValid); + getElement(map, "r1c3", mat4[3][1], everyConversionValid); + getElement(map, "r2c3", mat4[3][2], everyConversionValid); + getElement(map, "r3c3", mat4[3][3], everyConversionValid); + + if (everyConversionValid) { + valid = true; + } + } +} + +glm::mat4 mat4FromVariant(const QVariant& object) { + bool valid = false; + return mat4FromVariant(object, valid); +} + QScriptValue qVectorVec3ColorToScriptValue(QScriptEngine* engine, const QVector& vector) { QScriptValue array = engine->newArray(); for (int i = 0; i < vector.size(); i++) { diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index ea2c5b8354..96c64f7384 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -67,6 +67,10 @@ void registerMetaTypes(QScriptEngine* engine); QScriptValue mat4toScriptValue(QScriptEngine* engine, const glm::mat4& mat4); void mat4FromScriptValue(const QScriptValue& object, glm::mat4& mat4); +QVariant mat4ToVariant(const glm::mat4& mat4); +glm::mat4 mat4FromVariant(const QVariant& object, bool& valid); +glm::mat4 mat4FromVariant(const QVariant& object); + /**jsdoc * A 2-dimensional vector. * From b1e3a149ffb5f6232164bc738b8c28225d5c3d4d Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 18 Apr 2019 17:40:56 -0700 Subject: [PATCH 033/396] Remove unnecessary hasTexcoordTransform --- .../src/material-networking/MaterialCache.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libraries/material-networking/src/material-networking/MaterialCache.cpp b/libraries/material-networking/src/material-networking/MaterialCache.cpp index 9d6fc06d01..745504fb3d 100644 --- a/libraries/material-networking/src/material-networking/MaterialCache.cpp +++ b/libraries/material-networking/src/material-networking/MaterialCache.cpp @@ -177,7 +177,6 @@ std::pair> NetworkMaterialResource material->setModel(modelString); } - std::array hasTexcoordTransform; std::array texcoordTransforms; if (modelString == HIFI_PBR) { @@ -378,7 +377,6 @@ std::pair> NetworkMaterialResource } else if (value.isObject()) { auto valueVariant = value.toVariant(); glm::mat4 transform = mat4FromVariant(valueVariant); - hasTexcoordTransform[0] = true; texcoordTransforms[0] = transform; } } else if (key == "texCoordTransform1") { @@ -391,7 +389,6 @@ std::pair> NetworkMaterialResource } else if (value.isObject()) { auto valueVariant = value.toVariant(); glm::mat4 transform = mat4FromVariant(valueVariant); - hasTexcoordTransform[1] = true; texcoordTransforms[1] = transform; } } else if (key == "lightmapParams") { @@ -423,8 +420,9 @@ std::pair> NetworkMaterialResource // Do this after the texture maps are defined, so it overrides the default transforms for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { - if (hasTexcoordTransform[i]) { - material->setTexCoordTransform(i, texcoordTransforms[i]); + mat4 newTransform = texcoordTransforms[i]; + if (newTransform != mat4() || newTransform != material->getTexCoordTransform(i)) { + material->setTexCoordTransform(i, newTransform); } } From d711e1a9b7c8f4d69b631fd4810bcf9d6aee32b7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 18 Apr 2019 17:43:03 -0700 Subject: [PATCH 034/396] Save some bandwidth by not including unity texture transforms in material jsons --- .../src/graphics-scripting/GraphicsScriptingInterface.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index 4182b52309..eb4bfa197c 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -470,12 +470,12 @@ namespace scriptable { // These need to be implemented, but set the fallthrough for now if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM0)) { obj.setProperty("texCoordTransform0", FALLTHROUGH); - } else { + } else if (material.texCoordTransforms[0] != mat4()) { obj.setProperty("texCoordTransform0", mat4toScriptValue(engine, material.texCoordTransforms[0])); } if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM1)) { obj.setProperty("texCoordTransform1", FALLTHROUGH); - } else { + } else if (material.texCoordTransforms[1] != mat4()) { obj.setProperty("texCoordTransform1", mat4toScriptValue(engine, material.texCoordTransforms[1])); } if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::LIGHTMAP_PARAMS)) { From 474041d5d1524d45c9e79cf6b2f7b32a9f03391d Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Thu, 18 Apr 2019 21:00:15 -0700 Subject: [PATCH 035/396] simplify PTT logic --- interface/src/scripting/Audio.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index ce340f2665..bceafc3c42 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -174,16 +174,10 @@ void Audio::setPTTDesktop(bool enabled) { _pttDesktop = enabled; } }); - if (!enabled) { - if (_settingsLoaded) { - // Set to default behavior (unmuted for Desktop) on Push-To-Talk disable. - setMutedDesktop(true); - } - } else { - // Should be muted when not pushing to talk while PTT is enabled. + if (enabled || _settingsLoaded) { + // Set to default behavior (muted for Desktop) on Push-To-Talk disable or when enabled. Settings also need to be loaded. setMutedDesktop(true); } - if (changed) { emit pushToTalkChanged(enabled); emit pushToTalkDesktopChanged(enabled); @@ -204,14 +198,9 @@ void Audio::setPTTHMD(bool enabled) { _pttHMD = enabled; } }); - if (!enabled) { - if (_settingsLoaded) { - // Set to default behavior (unmuted for HMD) on Push-To-Talk disable. - setMutedHMD(false); - } - } else { - // Should be muted when not pushing to talk while PTT is enabled. - setMutedHMD(true); + if (enabled || _settingsLoaded) { + // Set to default behavior (unmuted for HMD) on Push-To-Talk disable or muted for when PTT is enabled. + setMutedHMD(enabled); } if (changed) { From aea9ed91db427dace99578dae1e660e9f38c2c9b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 19 Apr 2019 09:00:28 -0700 Subject: [PATCH 036/396] Fix mat4FromVariant --- libraries/shared/src/RegisteredMetaTypes.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index e453b7bff4..98b67d3f75 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -701,6 +701,8 @@ glm::mat4 mat4FromVariant(const QVariant& object, bool& valid) { if (everyConversionValid) { valid = true; } + + return mat4; } } From 67ea9055e005c9080575fbd1a065c0a4fd6ea59a Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 Apr 2019 09:32:42 -0700 Subject: [PATCH 037/396] Fix domain baker not finishing (threading, material key) This addresses 2 cases where the domain baker would not finish 1. For material baking, we were storing a value in _entitiesNeedingRewrite with a different key than what we use when we later remove it from _entitiesNeedingRewrite 2. The domain baker runs on a worker thread. When starting a baker for an item in the domain, we do an invokeMethod, which will happen synchronously if the baker ends up on the same thread as the thread that the domain baker is on. This can cause issues if the baker finishes immediately. The case I saw was a local model url that immediately failed, and finished before return from the invokeMethod in the domain baker . --- tools/oven/src/DomainBaker.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index 50a3d212c0..bf8509fefe 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -171,7 +171,7 @@ void DomainBaker::addModelBaker(const QString& property, const QString& url, con // move the baker to the baker thread // and kickoff the bake baker->moveToThread(Oven::instance().getNextWorkerThread()); - QMetaObject::invokeMethod(baker.data(), "bake"); + QMetaObject::invokeMethod(baker.data(), "bake", Qt::QueuedConnection); // keep track of the total number of baking entities ++_totalNumberOfSubBakes; @@ -212,7 +212,7 @@ void DomainBaker::addTextureBaker(const QString& property, const QString& url, i // move the baker to a worker thread and kickoff the bake textureBaker->moveToThread(Oven::instance().getNextWorkerThread()); - QMetaObject::invokeMethod(textureBaker.data(), "bake"); + QMetaObject::invokeMethod(textureBaker.data(), "bake", Qt::QueuedConnection); // keep track of the total number of baking entities ++_totalNumberOfSubBakes; @@ -247,7 +247,7 @@ void DomainBaker::addScriptBaker(const QString& property, const QString& url, co // move the baker to a worker thread and kickoff the bake scriptBaker->moveToThread(Oven::instance().getNextWorkerThread()); - QMetaObject::invokeMethod(scriptBaker.data(), "bake"); + QMetaObject::invokeMethod(scriptBaker.data(), "bake", Qt::QueuedConnection); // keep track of the total number of baking entities ++_totalNumberOfSubBakes; @@ -272,7 +272,7 @@ void DomainBaker::addMaterialBaker(const QString& property, const QString& data, // setup a baker for this material QSharedPointer materialBaker { - new MaterialBaker(data, isURL, _contentOutputPath), + new MaterialBaker(materialData, isURL, _contentOutputPath), &MaterialBaker::deleteLater }; @@ -284,7 +284,7 @@ void DomainBaker::addMaterialBaker(const QString& property, const QString& data, // move the baker to a worker thread and kickoff the bake materialBaker->moveToThread(Oven::instance().getNextWorkerThread()); - QMetaObject::invokeMethod(materialBaker.data(), "bake"); + QMetaObject::invokeMethod(materialBaker.data(), "bake", Qt::QueuedConnection); // keep track of the total number of baking entities ++_totalNumberOfSubBakes; From a9ece60888e46861c6eb32ecd898b95648455ce2 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Fri, 19 Apr 2019 18:21:31 -0700 Subject: [PATCH 038/396] allowing context change to change mute state --- interface/src/scripting/Audio.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index bceafc3c42..5dd1488606 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -351,6 +351,13 @@ void Audio::onContextChanged() { changed = true; } }); + if (_settingsLoaded) { + if (isHMD) { + setMuted(getMutedHMD()); + } else { + setMuted(getMutedDesktop()); + } + } if (changed) { emit contextChanged(isHMD ? Audio::HMD : Audio::DESKTOP); } From 7574912629c98b583402b363c9c633115f436381 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 22 Apr 2019 11:34:58 -0700 Subject: [PATCH 039/396] fix version not being preserved (cherry picked from commit 98a7e4e7110996ea972d0b859af7eb9783502b24) --- tools/oven/src/DomainBaker.cpp | 14 ++++---------- tools/oven/src/DomainBaker.h | 2 ++ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index bf8509fefe..3444077922 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include "Gzip.h" @@ -132,10 +131,10 @@ void DomainBaker::loadLocalFile() { } // read the file contents to a JSON document - auto jsonDocument = QJsonDocument::fromJson(fileContents); + _json = QJsonDocument::fromJson(fileContents); // grab the entities object from the root JSON object - _entities = jsonDocument.object()[ENTITIES_OBJECT_KEY].toArray(); + _entities = _json.object()[ENTITIES_OBJECT_KEY].toArray(); if (_entities.isEmpty()) { // add an error to our list stating that the models file was empty @@ -753,15 +752,10 @@ void DomainBaker::writeNewEntitiesFile() { // time to write out a main models.json.gz file // first setup a document with the entities array below the entities key - QJsonDocument entitiesDocument; - - QJsonObject rootObject; - rootObject[ENTITIES_OBJECT_KEY] = _entities; - - entitiesDocument.setObject(rootObject); + _json.object()[ENTITIES_OBJECT_KEY] = _entities; // turn that QJsonDocument into a byte array ready for compression - QByteArray jsonByteArray = entitiesDocument.toJson(); + QByteArray jsonByteArray = _json.toJson(); // compress the json byte array using gzip QByteArray compressedJson; diff --git a/tools/oven/src/DomainBaker.h b/tools/oven/src/DomainBaker.h index 81f5c345cd..5e3f7c3b9a 100644 --- a/tools/oven/src/DomainBaker.h +++ b/tools/oven/src/DomainBaker.h @@ -12,6 +12,7 @@ #ifndef hifi_DomainBaker_h #define hifi_DomainBaker_h +#include #include #include #include @@ -59,6 +60,7 @@ private: QString _originalOutputPath; QUrl _destinationPath; + QJsonDocument _json; QJsonArray _entities; QHash> _modelBakers; From d7b12bcc3b6fc75f1fae9c0aae70748044c08817 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Mon, 22 Apr 2019 19:08:15 -0700 Subject: [PATCH 040/396] set AudioClient mute state as catch-all --- interface/src/scripting/Audio.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index 5dd1488606..b406c097e7 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -352,11 +352,11 @@ void Audio::onContextChanged() { } }); if (_settingsLoaded) { - if (isHMD) { - setMuted(getMutedHMD()); - } else { - setMuted(getMutedDesktop()); - } + bool isMuted = isHMD ? getMutedHMD() : getMutedDesktop(); + setMuted(isMuted); + // always set audio client muted state on context changed - sometimes setMuted does not catch it. + auto client = DependencyManager::get().data(); + QMetaObject::invokeMethod(client, "setMuted", Q_ARG(bool, isMuted), Q_ARG(bool, false)); } if (changed) { emit contextChanged(isHMD ? Audio::HMD : Audio::DESKTOP); From 90e993844a26ea44468d764d8c7d9e39f1410b64 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Tue, 23 Apr 2019 16:50:54 -0700 Subject: [PATCH 041/396] changing method name to reflect recent change in code --- .../resources/qml/hifi/commerce/marketplace/Marketplace.qml | 2 +- interface/resources/qml/hifi/commerce/wallet/NeedsLogIn.qml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/marketplace/Marketplace.qml b/interface/resources/qml/hifi/commerce/marketplace/Marketplace.qml index 5f8cc2eefb..65453ba21d 100644 --- a/interface/resources/qml/hifi/commerce/marketplace/Marketplace.qml +++ b/interface/resources/qml/hifi/commerce/marketplace/Marketplace.qml @@ -952,7 +952,7 @@ Rectangle { text: "LOG IN" onClicked: { - sendToScript({method: 'needsLogIn_loginClicked'}); + sendToScript({method: 'marketplace_loginClicked'}); } } diff --git a/interface/resources/qml/hifi/commerce/wallet/NeedsLogIn.qml b/interface/resources/qml/hifi/commerce/wallet/NeedsLogIn.qml index 0a1593161a..e17196b492 100644 --- a/interface/resources/qml/hifi/commerce/wallet/NeedsLogIn.qml +++ b/interface/resources/qml/hifi/commerce/wallet/NeedsLogIn.qml @@ -137,7 +137,7 @@ Item { width: parent.width/2 - anchors.leftMargin*2; text: "Cancel" onClicked: { - sendToScript({method: 'needsLogIn_cancelClicked'}); + sendToScript({method: 'passphrasePopup_cancelClicked'}); } } @@ -155,7 +155,7 @@ Item { width: parent.width/2 - anchors.rightMargin*2; text: "Log In" onClicked: { - sendToScript({method: 'needsLogIn_loginClicked'}); + sendToScript({method: 'marketplace_loginClicked'}); } } } From 5f3a37d40e6747906785580ee63ee3e0fffb411c Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 23 Apr 2019 17:34:46 -0700 Subject: [PATCH 042/396] possible fix for openUrl exploit (cherry picked from commit 31b3f0e8f1faa8f9e4a2d89c2375607deaed2fb3) --- .../qml/LoginDialog/CompleteProfileBody.qml | 2 +- .../qml/LoginDialog/LinkAccountBody.qml | 2 +- .../resources/qml/LoginDialog/SignUpBody.qml | 2 +- .../qml/LoginDialog/UsernameCollisionBody.qml | 2 +- interface/src/Application.cpp | 40 ++++++++++++------- interface/src/Application.h | 4 +- .../scripting/WindowScriptingInterface.cpp | 7 +++- .../src/scripting/WindowScriptingInterface.h | 7 ++-- interface/src/ui/LoginDialog.cpp | 4 -- interface/src/ui/LoginDialog.h | 2 - libraries/ui/src/FileDialogHelper.cpp | 10 ++++- 11 files changed, 50 insertions(+), 32 deletions(-) diff --git a/interface/resources/qml/LoginDialog/CompleteProfileBody.qml b/interface/resources/qml/LoginDialog/CompleteProfileBody.qml index 17d6a7d3b3..f90a7d8561 100644 --- a/interface/resources/qml/LoginDialog/CompleteProfileBody.qml +++ b/interface/resources/qml/LoginDialog/CompleteProfileBody.qml @@ -398,7 +398,7 @@ Item { lineHeight: 1 lineHeightMode: Text.ProportionalHeight - onLinkActivated: loginDialog.openUrl(link); + onLinkActivated: Window.openUrl(link); Component.onCompleted: { if (termsTextMetrics.width > root.bannerWidth) { diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 4dd05f594d..04ffe72a57 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -363,7 +363,7 @@ Item { linkColor: hifi.colors.blueAccent onLinkActivated: { Tablet.playSound(TabletEnums.ButtonClick); - loginDialog.openUrl(link); + Window.openUrl(link); lightboxPopup.titleText = "Can't Access Account"; lightboxPopup.bodyText = lightboxPopup.cantAccessBodyText; lightboxPopup.button2text = "CLOSE"; diff --git a/interface/resources/qml/LoginDialog/SignUpBody.qml b/interface/resources/qml/LoginDialog/SignUpBody.qml index 69ac2f5a6c..f1e0cfe685 100644 --- a/interface/resources/qml/LoginDialog/SignUpBody.qml +++ b/interface/resources/qml/LoginDialog/SignUpBody.qml @@ -411,7 +411,7 @@ Item { lineHeight: 1 lineHeightMode: Text.ProportionalHeight - onLinkActivated: loginDialog.openUrl(link); + onLinkActivated: Window.openUrl(link); Component.onCompleted: { if (termsTextMetrics.width > root.bannerWidth) { diff --git a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml index d450b1e7bc..d2fd1dfe35 100644 --- a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml +++ b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml @@ -234,7 +234,7 @@ Item { lineHeight: 1 lineHeightMode: Text.ProportionalHeight - onLinkActivated: loginDialog.openUrl(link); + onLinkActivated: Window.openUrl(link); Component.onCompleted: { if (termsTextMetrics.width > root.bannerWidth) { diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e809120a74..184c153f0e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2443,6 +2443,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get()->preloadSounds(); DependencyManager::get()->createKeyboard(); + QDesktopServices::setUrlHandler("file", this, "showUrlHandler"); + QDesktopServices::setUrlHandler("", this, "showUrlHandler"); + auto drives = QDir::drives(); + for (auto drive : drives) { + QDesktopServices::setUrlHandler(QUrl(drive.absolutePath()).scheme(), this, "showUrlHandler"); + } + _pendingIdleEvent = false; _graphicsEngine.startup(); @@ -8259,19 +8266,6 @@ void Application::packageModel() { ModelPackager::package(); } -void Application::openUrl(const QUrl& url) const { - if (!url.isEmpty()) { - if (url.scheme() == URL_SCHEME_HIFI) { - DependencyManager::get()->handleLookupString(url.toString()); - } else if (url.scheme() == URL_SCHEME_HIFIAPP) { - DependencyManager::get()->openSystemApp(url.path()); - } else { - // address manager did not handle - ask QDesktopServices to handle - QDesktopServices::openUrl(url); - } - } -} - void Application::loadDialog() { ModalDialogListener* dlg = OffscreenUi::getOpenFileNameAsync(_glWidget, tr("Open Script"), getPreviousScriptLocation(), @@ -9140,7 +9134,7 @@ void Application::readArgumentsFromLocalSocket() const { // If we received a message, try to open it as a URL if (message.length() > 0) { - qApp->openUrl(QString::fromUtf8(message)); + DependencyManager::get()->openUrl(QString::fromUtf8(message)); } } @@ -9257,6 +9251,24 @@ QString Application::getGraphicsCardType() { return GPUIdent::getInstance()->getName(); } +void Application::showUrlHandler(const QUrl& url) { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "showUrlHandler", Q_ARG(const QUrl&, url)); + return; + } + + ModalDialogListener* dlg = OffscreenUi::asyncQuestion("Confirm openUrl", "Do you recognize this path or code and want to open or execute it: " + url.toDisplayString()); + QObject::connect(dlg, &ModalDialogListener::response, this, [=](QVariant answer) { + QObject::disconnect(dlg, &ModalDialogListener::response, this, nullptr); + if (QMessageBox::Yes == static_cast(answer.toInt())) { + // Unset the handler, open the URL, and the reset the handler + QDesktopServices::unsetUrlHandler(url.scheme()); + QDesktopServices::openUrl(url); + QDesktopServices::setUrlHandler(url.scheme(), this, "showUrlHandler"); + } + }); +} + #if defined(Q_OS_ANDROID) void Application::beforeEnterBackground() { auto nodeList = DependencyManager::get(); diff --git a/interface/src/Application.h b/interface/src/Application.h index 99e57f1866..96feeba39f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -403,8 +403,6 @@ public slots: static void packageModel(); - void openUrl(const QUrl& url) const; - void resetSensors(bool andReload = false); void setActiveFaceTracker() const; @@ -471,6 +469,8 @@ public slots: QString getGraphicsCardType(); + void showUrlHandler(const QUrl& url); + private slots: void onDesktopRootItemCreated(QQuickItem* qmlContext); void onDesktopRootContextCreated(QQmlContext* qmlContext); diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index 0f3d859093..2c1311924f 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -27,6 +27,7 @@ #include "MainWindow.h" #include "Menu.h" #include "OffscreenUi.h" +#include "commerce/QmlCommerce.h" static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); static const QString LAST_BROWSE_LOCATION_SETTING = "LastBrowseLocation"; @@ -134,15 +135,17 @@ void WindowScriptingInterface::disconnectedFromDomain() { void WindowScriptingInterface::openUrl(const QUrl& url) { if (!url.isEmpty()) { - if (url.scheme() == URL_SCHEME_HIFI) { + auto scheme = url.scheme(); + if (scheme == URL_SCHEME_HIFI) { DependencyManager::get()->handleLookupString(url.toString()); + } else if (scheme == URL_SCHEME_HIFIAPP) { + DependencyManager::get()->openSystemApp(url.path()); } else { #if defined(Q_OS_ANDROID) QMap args; args["url"] = url.toString(); AndroidHelper::instance().requestActivity("WebView", true, args); #else - // address manager did not handle - ask QDesktopServices to handle QDesktopServices::openUrl(url); #endif } diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index baff6444e1..77b586ec70 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -535,9 +535,10 @@ public slots: int openMessageBox(QString title, QString text, int buttons, int defaultButton); /**jsdoc - * Open a URL in the Interface window or other application, depending on the URL's scheme. If the URL starts with - * hifi:// then that URL is navigated to in Interface, otherwise the URL is opened in the application the OS - * associates with the URL's scheme (e.g., a Web browser for http://). + * Open a URL in the Interface window or other application, depending on the URL's scheme. The following schemes are supported: + * hifi (navigate to the URL in Interface), hifiapp (open a system app in Interface). Other schemes will either be handled by the OS + * (e.g. http, https, mailto) or will create a confirmation dialog asking the user to confirm that they want to try to open + * the URL. * @function Window.openUrl * @param {string} url - The URL to open. */ diff --git a/interface/src/ui/LoginDialog.cpp b/interface/src/ui/LoginDialog.cpp index b4f504822f..50acdeaa1e 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -279,10 +279,6 @@ void LoginDialog::createAccountFromSteam(QString username) { } } -void LoginDialog::openUrl(const QString& url) const { - QDesktopServices::openUrl(QUrl(url)); -} - void LoginDialog::linkCompleted(QNetworkReply* reply) { emit handleLinkCompleted(); } diff --git a/interface/src/ui/LoginDialog.h b/interface/src/ui/LoginDialog.h index e2fa8adc61..7c659a9320 100644 --- a/interface/src/ui/LoginDialog.h +++ b/interface/src/ui/LoginDialog.h @@ -80,8 +80,6 @@ protected slots: Q_INVOKABLE void signup(const QString& email, const QString& username, const QString& password); - Q_INVOKABLE void openUrl(const QString& url) const; - Q_INVOKABLE bool getLoginDialogPoppedUp() const; }; diff --git a/libraries/ui/src/FileDialogHelper.cpp b/libraries/ui/src/FileDialogHelper.cpp index 6d14adf1db..e6a48da01b 100644 --- a/libraries/ui/src/FileDialogHelper.cpp +++ b/libraries/ui/src/FileDialogHelper.cpp @@ -111,7 +111,15 @@ QStringList FileDialogHelper::drives() { } void FileDialogHelper::openDirectory(const QString& path) { - QDesktopServices::openUrl(path); + QString dirPath = path; + const QString FILE_SCHEME = "file://"; + if (dirPath.startsWith(FILE_SCHEME)) { + dirPath.remove(0, FILE_SCHEME.length()); + } + QFileInfo fileInfo(dirPath); + if (fileInfo.isDir()) { + QDesktopServices::openUrl(path); + } } QList FileDialogHelper::urlToList(const QUrl& url) { From b9ba764e0ff9c153ae34c1c2f8bbeadf5bddc763 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 25 Apr 2019 12:24:02 -0700 Subject: [PATCH 043/396] fix openDirectory (cherry picked from commit 609e58a0ddcff0ace1d75a85fafd73bfa4a5eacd) --- interface/src/Application.cpp | 21 +++++++++++++++++++++ interface/src/Application.h | 2 ++ libraries/ui/src/FileDialogHelper.cpp | 11 +++-------- libraries/ui/src/FileDialogHelper.h | 3 +++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 184c153f0e..ba28eb6068 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2443,6 +2443,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo DependencyManager::get()->preloadSounds(); DependencyManager::get()->createKeyboard(); + FileDialogHelper::setOpenDirectoryOperator([this](const QString& path) { openDirectory(path); }); QDesktopServices::setUrlHandler("file", this, "showUrlHandler"); QDesktopServices::setUrlHandler("", this, "showUrlHandler"); auto drives = QDir::drives(); @@ -9251,6 +9252,26 @@ QString Application::getGraphicsCardType() { return GPUIdent::getInstance()->getName(); } +void Application::openDirectory(const QString& path) { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "openDirectory", Q_ARG(const QString&, path)); + return; + } + + QString dirPath = path; + const QString FILE_SCHEME = "file:///"; + if (dirPath.startsWith(FILE_SCHEME)) { + dirPath.remove(0, FILE_SCHEME.length()); + } + QFileInfo fileInfo(dirPath); + if (fileInfo.isDir()) { + auto scheme = QUrl(path).scheme(); + QDesktopServices::unsetUrlHandler(scheme); + QDesktopServices::openUrl(path); + QDesktopServices::setUrlHandler(scheme, this, "showUrlHandler"); + } +} + void Application::showUrlHandler(const QUrl& url) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "showUrlHandler", Q_ARG(const QUrl&, url)); diff --git a/interface/src/Application.h b/interface/src/Application.h index 96feeba39f..d3b4ab1d44 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -344,6 +344,8 @@ public: void toggleAwayMode(); #endif + void openDirectory(const QString& path); + signals: void svoImportRequested(const QString& url); diff --git a/libraries/ui/src/FileDialogHelper.cpp b/libraries/ui/src/FileDialogHelper.cpp index e6a48da01b..4fa4e0bd54 100644 --- a/libraries/ui/src/FileDialogHelper.cpp +++ b/libraries/ui/src/FileDialogHelper.cpp @@ -17,6 +17,7 @@ #include #include +std::function FileDialogHelper::_openDiretoryOperator = nullptr; QUrl FileDialogHelper::home() { return pathToUrl(QStandardPaths::standardLocations(QStandardPaths::HomeLocation)[0]); @@ -111,14 +112,8 @@ QStringList FileDialogHelper::drives() { } void FileDialogHelper::openDirectory(const QString& path) { - QString dirPath = path; - const QString FILE_SCHEME = "file://"; - if (dirPath.startsWith(FILE_SCHEME)) { - dirPath.remove(0, FILE_SCHEME.length()); - } - QFileInfo fileInfo(dirPath); - if (fileInfo.isDir()) { - QDesktopServices::openUrl(path); + if (_openDiretoryOperator) { + _openDiretoryOperator(path); } } diff --git a/libraries/ui/src/FileDialogHelper.h b/libraries/ui/src/FileDialogHelper.h index 12fd60daac..55561a40dd 100644 --- a/libraries/ui/src/FileDialogHelper.h +++ b/libraries/ui/src/FileDialogHelper.h @@ -16,6 +16,7 @@ #include #include +#include class FileDialogHelper : public QObject { Q_OBJECT @@ -62,6 +63,7 @@ public: Q_INVOKABLE QUrl saveHelper(const QString& saveText, const QUrl& currentFolder, const QStringList& selectionFilters); Q_INVOKABLE QList urlToList(const QUrl& url); + static void setOpenDirectoryOperator(std::function openDiretoryOperator) { _openDiretoryOperator = openDiretoryOperator; } Q_INVOKABLE void openDirectory(const QString& path); Q_INVOKABLE void monitorDirectory(const QString& path); @@ -72,6 +74,7 @@ signals: private: QFileSystemWatcher _fsWatcher; QString _fsWatcherPath; + static std::function _openDiretoryOperator; }; From 0f3d755cb0f99592c8359a42ce16e19000c66887 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 25 Apr 2019 16:00:05 -0700 Subject: [PATCH 044/396] fix baking --- tools/oven/src/DomainBaker.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index 3444077922..3c06ec1096 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -752,10 +752,11 @@ void DomainBaker::writeNewEntitiesFile() { // time to write out a main models.json.gz file // first setup a document with the entities array below the entities key - _json.object()[ENTITIES_OBJECT_KEY] = _entities; + QJsonObject json = _json.object(); + json[ENTITIES_OBJECT_KEY] = _entities; // turn that QJsonDocument into a byte array ready for compression - QByteArray jsonByteArray = _json.toJson(); + QByteArray jsonByteArray = QJsonDocument(json).toJson(); // compress the json byte array using gzip QByteArray compressedJson; From 43d005d47059d577dda7afa3c5cae9adf57009b1 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 30 Apr 2019 16:00:35 -0700 Subject: [PATCH 045/396] Set default av-mixer connection-rate to 1e7 --- domain-server/resources/describe-settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 352106dcf7..74c744aced 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -1307,8 +1307,8 @@ "name": "connection_rate", "label": "Connection Rate", "help": "Number of new agents that can connect to the mixer every second", - "placeholder": "50", - "default": "50", + "placeholder": "10000000", + "default": "10000000", "advanced": true }, { From 099e04f7bbcffe16efdea5e61634d9a7ce94da3c Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 30 Apr 2019 17:57:37 -0700 Subject: [PATCH 046/396] Query shape type outside lock --- libraries/entities/src/EntityItem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 8a50c39da9..9ae9246176 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -2023,9 +2023,10 @@ void EntityItem::setCollisionMask(uint16_t value) { void EntityItem::setDynamic(bool value) { if (getDynamic() != value) { + auto shapeType = getShapeType(); withWriteLock([&] { // dynamic and STATIC_MESH are incompatible so we check for that case - if (value && getShapeType() == SHAPE_TYPE_STATIC_MESH) { + if (value && shapeType == SHAPE_TYPE_STATIC_MESH) { if (_dynamic) { _dynamic = false; _flags |= Simulation::DIRTY_MOTION_TYPE; From d0fc5c771377b30a627c2f729279325d199aeb92 Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 30 Apr 2019 18:29:00 -0700 Subject: [PATCH 047/396] Push protocol version --- libraries/networking/src/udt/PacketHeaders.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 1dafc561f6..30c102ca4f 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -269,6 +269,7 @@ enum class EntityVersion : PacketVersion { CertificateTypeProperty, DisableWebMedia, ParticleShapeType, + ParticleShapeTypeDeadlockFix, // Add new versions above here NUM_PACKET_TYPE, From 47af406440daaccdc48bf01cb3669233a940f811 Mon Sep 17 00:00:00 2001 From: Revofire Date: Sat, 30 Mar 2019 00:27:11 -0400 Subject: [PATCH 048/396] merged 0.80.0-kasen into 0.81.0-kasen, 0.81.0-kasen source ready for build. various changes, idk, added a whitelist filter to ent script filter --- cmake/externals/polyvox/CMakeLists.txt | 6 +- interface/CMakeLists.txt | 28 +++++---- interface/src/Application.cpp | 8 +-- libraries/audio-client/src/AudioClient.cpp | 2 +- .../networking/src/UserActivityLogger.cpp | 2 + libraries/script-engine/src/ScriptEngine.cpp | 63 ++++++++++++++++--- plugins/CMakeLists.txt | 12 ++-- 7 files changed, 89 insertions(+), 32 deletions(-) diff --git a/cmake/externals/polyvox/CMakeLists.txt b/cmake/externals/polyvox/CMakeLists.txt index a92c07da86..e5c3521b63 100644 --- a/cmake/externals/polyvox/CMakeLists.txt +++ b/cmake/externals/polyvox/CMakeLists.txt @@ -1,11 +1,15 @@ set(EXTERNAL_NAME polyvox) include(ExternalProject) + +message(STATUS "===== POLYVOX BUILD_TYPE ${BUILD_TYPE} ${CMAKE_BUILD_TYPE}") +set(CMAKE_BUILD_TYPE Release) + ExternalProject_Add( ${EXTERNAL_NAME} URL https://public.highfidelity.com/dependencies/polyvox-master-2015-7-15.zip URL_MD5 9ec6323b87e849ae36e562ae1c7494a9 - CMAKE_ARGS -DENABLE_EXAMPLES=OFF -DENABLE_BINDINGS=OFF -DCMAKE_INSTALL_PREFIX:PATH= + CMAKE_ARGS -DENABLE_EXAMPLES=OFF -DENABLE_BINDINGS=OFF -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build LOG_DOWNLOAD 1 LOG_CONFIGURE 1 diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index bb8ebbd2a0..bf152ba5d8 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -15,9 +15,9 @@ set(CUSTOM_INTERFACE_QRC_PATHS "") find_npm() -if (BUILD_TOOLS AND NPM_EXECUTABLE) - add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_SOURCE_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json") -endif () +#if (BUILD_TOOLS AND NPM_EXECUTABLE) +# add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_SOURCE_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json") +#endif () set(RESOURCES_QRC ${CMAKE_CURRENT_BINARY_DIR}/resources.qrc) set(RESOURCES_RCC ${CMAKE_CURRENT_SOURCE_DIR}/compiledResources/resources.rcc) @@ -156,7 +156,9 @@ elseif (WIN32) configure_file("${HF_CMAKE_DIR}/templates/VersionInfo.rc.in" ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) # add an executable that also has the icon itself and the configured rc file as resources - add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) + #add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) + ##^^^^^ creates native Win32 app w/o cmd console vvvvvv forces cmd console for logging + add_executable(${TARGET_NAME} ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) if (NOT DEV_BUILD) add_custom_command( @@ -175,10 +177,10 @@ else () endif () -if (BUILD_TOOLS AND NPM_EXECUTABLE) +#if (BUILD_TOOLS AND NPM_EXECUTABLE) # require JSDoc to be build before interface is deployed - add_dependencies(resources jsdoc) -endif() +# add_dependencies(resources jsdoc) +#endif() add_dependencies(${TARGET_NAME} resources) @@ -318,9 +320,9 @@ if (APPLE) "${CMAKE_SOURCE_DIR}/scripts" "${RESOURCES_DEV_DIR}/scripts" # copy JSDoc files beside the executable - COMMAND "${CMAKE_COMMAND}" -E copy_directory - "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" - "${RESOURCES_DEV_DIR}/jsdoc" + #COMMAND "${CMAKE_COMMAND}" -E copy_directory + # "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" + # "${RESOURCES_DEV_DIR}/jsdoc" # copy the resources files beside the executable COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${RESOURCES_RCC}" @@ -373,9 +375,9 @@ else() "${PROJECT_SOURCE_DIR}/resources/serverless/redirect.json" "${RESOURCES_DEV_DIR}/serverless/redirect.json" # copy JSDoc files beside the executable - COMMAND "${CMAKE_COMMAND}" -E copy_directory - "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" - "${INTERFACE_EXEC_DIR}/jsdoc" + #COMMAND "${CMAKE_COMMAND}" -E copy_directory + # "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" + # "${INTERFACE_EXEC_DIR}/jsdoc" ) # link target to external libraries diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ba28eb6068..daf8d0a77c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2767,14 +2767,14 @@ Application::~Application() { avatarManager->handleProcessedPhysicsTransaction(transaction); avatarManager->deleteAllAvatars(); - + auto myCharacterController = getMyAvatar()->getCharacterController(); myCharacterController->clearDetailedMotionStates(); - + myCharacterController->buildPhysicsTransaction(transaction); _physicsEngine->processTransaction(transaction); myCharacterController->handleProcessedPhysicsTransaction(transaction); - + _physicsEngine->setCharacterController(nullptr); // the _shapeManager should have zero references @@ -6978,7 +6978,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - " + QString buildVersion = " - Kasen v0.81.1 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index c537fea646..8979b5a8a6 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1915,7 +1915,7 @@ bool AudioClient::switchOutputToAudioDevice(const QAudioDeviceInfo outputDeviceI int deviceChannelCount = _outputFormat.channelCount(); int frameSize = (AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * deviceChannelCount * _outputFormat.sampleRate()) / _desiredOutputFormat.sampleRate(); int requestedSize = _sessionOutputBufferSizeFrames * frameSize * AudioConstants::SAMPLE_SIZE; - _audioOutput->setBufferSize(requestedSize); + _audioOutput->setBufferSize(requestedSize * 16); // initialize mix buffers on the _audioOutput thread to avoid races connect(_audioOutput, &QAudioOutput::stateChanged, [&, frameSize, requestedSize](QAudio::State state) { diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 948acd3d78..7315824136 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -35,6 +35,8 @@ void UserActivityLogger::disable(bool disable) { } void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCallbackParameters params) { + qCDebug(networking).nospace() << ">>> UserActivityLogger::logAction(" << action << "," << QJsonDocument(details).toJson(); + return; if (_disabled.get()) { return; } diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 7abb63ca1c..3d01ea5a82 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -252,7 +252,7 @@ QString ScriptEngine::getContext() const { return "unknown"; } -bool ScriptEngine::isDebugMode() const { +bool ScriptEngine::isDebugMode() const { #if defined(DEBUG) return true; #else @@ -769,6 +769,11 @@ void ScriptEngine::init() { #if DEV_BUILD || PR_BUILD registerGlobalObject("StackTest", new StackTestScriptingInterface(this)); #endif + + globalObject().setProperty("KALILA", "isWaifu"); + globalObject().setProperty("Kute", newFunction([](QScriptContext* context, QScriptEngine* engine) -> QScriptValue { + return context->argument(0).toString().toLower() == "kalila" ? true : false; + })); } void ScriptEngine::registerValue(const QString& valueName, QScriptValue value) { @@ -2252,6 +2257,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co BaseScriptEngine sandbox; sandbox.setProcessEventsInterval(SANDBOX_TIMEOUT); QScriptValue testConstructor, exception; + if (atoi(getenv("UNSAFE_ENTITY_SCRIPTS") ? getenv("UNSAFE_ENTITY_SCRIPTS") : "0")) { QTimer timeout; timeout.setSingleShot(true); @@ -2274,13 +2280,57 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co exception = testConstructor; } } + else { + // IF YOU FUCK UP, DELETE FROM HERE TO... + QList safeURLS = { "https://animedeck.com/", "http://animedeck.com/" }; + safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); + + bool isInWhitelist = false; // assume unsafe + for (const auto& str : safeURLS) { + // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str; + qDebug() << "SCRIPTOURL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + << scriptOrURL.startsWith(str); + if (scriptOrURL.startsWith(str)) { + isInWhitelist = true; + break; // bail early since we found a match + } + } + if (!isInWhitelist) { + qDebug() << "(disabled entity script)" << entityID.toString() << scriptOrURL; + exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); + } else { + QTimer timeout; + timeout.setSingleShot(true); + timeout.start(SANDBOX_TIMEOUT); + connect(&timeout, &QTimer::timeout, [=, &sandbox] { + qCDebug(scriptengine) << "ScriptEngine::entityScriptContentAvailable timeout"; + + // Guard against infinite loops and non-performant code + sandbox.raiseException( + sandbox.makeError(QString("Timed out (entity constructors are limited to %1ms)").arg(SANDBOX_TIMEOUT))); + }); + + testConstructor = sandbox.evaluate(program); + + if (sandbox.hasUncaughtException()) { + exception = sandbox.cloneUncaughtException(QString("(preflight %1)").arg(entityID.toString())); + sandbox.clearExceptions(); + } else if (testConstructor.isError()) { + exception = testConstructor; + } + } + // DELETE UP TO HERE, THEN UNCOMMENT BELOW. + + // qDebug() << "(disabled entity script)" << entityID.toString() << scriptOrURL; + // exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); + } if (exception.isError()) { - // create a local copy using makeError to decouple from the sandbox engine - exception = makeError(exception); - setError(formatException(exception, _enableExtendedJSExceptions.get()), EntityScriptStatus::ERROR_RUNNING_SCRIPT); - emit unhandledException(exception); - return; + // create a local copy using makeError to decouple from the sandbox engine + exception = makeError(exception); + setError(formatException(exception, _enableExtendedJSExceptions.get()), EntityScriptStatus::ERROR_RUNNING_SCRIPT); + emit unhandledException(exception); + return; } // CONSTRUCTOR VIABILITY @@ -2648,4 +2698,3 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS } } } - diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 4a0f52e272..8a0ccb07c1 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -9,23 +9,23 @@ # add the plugin directories file(GLOB PLUGIN_SUBDIRS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") list(REMOVE_ITEM PLUGIN_SUBDIRS "CMakeFiles") - +set(CMAKE_BUILD_TYPE "Release") # client-side plugins if (NOT SERVER_ONLY AND NOT ANDROID) - set(DIR "oculus") - add_subdirectory(${DIR}) + #set(DIR "oculus") + #add_subdirectory(${DIR}) set(DIR "hifiSdl2") add_subdirectory(${DIR}) set(DIR "openvr") add_subdirectory(${DIR}) - set(DIR "oculusLegacy") - add_subdirectory(${DIR}) + #set(DIR "oculusLegacy") + #add_subdirectory(${DIR}) if (USE_SIXENSE) set(DIR "hifiSixense") add_subdirectory(${DIR}) endif() - + set(DIR "hifiSpacemouse") add_subdirectory(${DIR}) set(DIR "hifiNeuron") From e59a29c8c084439361d63f749ab15838bf9b4eed Mon Sep 17 00:00:00 2001 From: Revofire Date: Mon, 6 May 2019 21:17:56 -0400 Subject: [PATCH 049/396] Updated version number. --- interface/src/Application.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index daf8d0a77c..cfc918af11 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2906,7 +2906,7 @@ void Application::initializeGL() { #if !defined(DISABLE_QML) QStringList chromiumFlags; - // Bug 21993: disable microphone and camera input + // Bug 21993: disable microphone and camera input chromiumFlags << "--use-fake-device-for-media-stream"; // Disable signed distance field font rendering on ATI/AMD GPUs, due to // https://highfidelity.manuscript.com/f/cases/13677/Text-showing-up-white-on-Marketplace-app @@ -6978,7 +6978,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen v0.81.1 - " + QString buildVersion = " - Kasen v0.82.1 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 500e089e4499073274acce3676d72586b644d041 Mon Sep 17 00:00:00 2001 From: Kalila R Date: Thu, 20 Jun 2019 16:56:03 -0400 Subject: [PATCH 050/396] Updated version no. to 0.83.0 --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index cfc918af11..248e2ea092 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6978,7 +6978,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen v0.82.1 - " + QString buildVersion = " - Kasen v0.83.0 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 36b249d4dc77ef6cc81c0fd3991e3ec80f9c1bcc Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 25 Jul 2019 18:24:53 -0700 Subject: [PATCH 051/396] BUGZ-964: fix for incorrect color curve when rendering 3D into QML --- interface/src/ui/ResourceImageItem.cpp | 70 +++++++++++++++++++++++--- interface/src/ui/ResourceImageItem.h | 11 ++-- 2 files changed, 70 insertions(+), 11 deletions(-) diff --git a/interface/src/ui/ResourceImageItem.cpp b/interface/src/ui/ResourceImageItem.cpp index f14f4ca78e..46ffffe62d 100644 --- a/interface/src/ui/ResourceImageItem.cpp +++ b/interface/src/ui/ResourceImageItem.cpp @@ -11,11 +11,52 @@ #include "ResourceImageItem.h" #include - +#include #include +#include #include + +static const char* VERTEX_SHADER = R"SHADER( +#version 450 core + +out vec2 vTexCoord; + +void main(void) { + const float depth = 0.0; + const vec4 UNIT_QUAD[4] = vec4[4]( + vec4(-1.0, -1.0, depth, 1.0), + vec4(1.0, -1.0, depth, 1.0), + vec4(-1.0, 1.0, depth, 1.0), + vec4(1.0, 1.0, depth, 1.0) + ); + vec4 pos = UNIT_QUAD[gl_VertexID]; + + gl_Position = pos; + vTexCoord = (pos.xy + 1.0) * 0.5; +} +)SHADER"; + +static const char* FRAGMENT_SHADER = R"SHADER( +#version 450 core + +uniform sampler2D sampler; + +in vec2 vTexCoord; + +out vec4 FragColor; + +vec3 color_LinearTosRGB(vec3 lrgb) { + return mix(vec3(1.055) * pow(vec3(lrgb), vec3(0.41666)) - vec3(0.055), vec3(lrgb) * vec3(12.92), vec3(lessThan(lrgb, vec3(0.0031308)))); +} + +void main() { + FragColor = vec4(color_LinearTosRGB(texture(sampler, vTexCoord).rgb), 1.0); +} +)SHADER"; + + ResourceImageItem::ResourceImageItem() : QQuickFramebufferObject() { auto textureCache = DependencyManager::get(); connect(textureCache.data(), SIGNAL(spectatorCameraFramebufferReset()), this, SLOT(update())); @@ -95,16 +136,29 @@ void ResourceImageItemRenderer::render() { } if (_ready) { _fboMutex.lock(); - _copyFbo->bind(); - QOpenGLFramebufferObject::blitFramebuffer(framebufferObject(), _copyFbo, GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT, GL_NEAREST); - // this clears the copyFbo texture - // so next frame starts fresh - helps - // when aspect ratio changes - _copyFbo->takeTexture(); + + if (!_shader) { + _shader = new QOpenGLShaderProgram(); + _shader->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, VERTEX_SHADER); + _shader->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, FRAGMENT_SHADER); + _shader->link(); + glGenVertexArrays(1, &_vao); + } + framebufferObject()->bind(); + _shader->bind(); + + auto sourceTextureId = _copyFbo->takeTexture(); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, sourceTextureId); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glBindVertexArray(_vao); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDeleteTextures(1, &sourceTextureId); + _copyFbo->bind(); _copyFbo->release(); - _fboMutex.unlock(); } glFlush(); diff --git a/interface/src/ui/ResourceImageItem.h b/interface/src/ui/ResourceImageItem.h index d154588094..1a679ba2ee 100644 --- a/interface/src/ui/ResourceImageItem.h +++ b/interface/src/ui/ResourceImageItem.h @@ -22,6 +22,9 @@ #include +class QOpenGLFramebufferObject; +class QOpenGLShaderProgram; + class ResourceImageItemRenderer : public QObject, public QQuickFramebufferObject::Renderer { Q_OBJECT public: @@ -30,14 +33,16 @@ public: void synchronize(QQuickFramebufferObject* item) override; void render() override; private: - bool _ready; + bool _ready{ false }; QString _url; - bool _visible; + bool _visible{ false }; NetworkTexturePointer _networkTexture; - QQuickWindow* _window; + QQuickWindow* _window{ nullptr }; QMutex _fboMutex; + uint32_t _vao{ 0 }; QOpenGLFramebufferObject* _copyFbo { nullptr }; + QOpenGLShaderProgram* _shader{ nullptr }; GLsync _fenceSync { 0 }; QTimer _updateTimer; public slots: From 7d3ac62c8600e7fb5d28293e70da80cc2af5d397 Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 29 Jul 2019 14:05:55 -0700 Subject: [PATCH 052/396] changed root to micBar which had the gated property --- interface/resources/qml/hifi/audio/MicBarApplication.qml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/audio/MicBarApplication.qml b/interface/resources/qml/hifi/audio/MicBarApplication.qml index 3070ba3bbd..76551be906 100644 --- a/interface/resources/qml/hifi/audio/MicBarApplication.qml +++ b/interface/resources/qml/hifi/audio/MicBarApplication.qml @@ -39,8 +39,8 @@ Rectangle { } Component.onCompleted: { - AudioScriptingInterface.noiseGateOpened.connect(function() { root.gated = false; }); - AudioScriptingInterface.noiseGateClosed.connect(function() { root.gated = true; }); + AudioScriptingInterface.noiseGateOpened.connect(function() { micBar.gated = false; }); + AudioScriptingInterface.noiseGateClosed.connect(function() { micBar.gated = true; }); HMD.displayModeChanged.connect(function() { muted = AudioScriptingInterface.muted; pushToTalk = AudioScriptingInterface.pushToTalk; @@ -151,7 +151,7 @@ Rectangle { readonly property string yellow: "#C0C000"; readonly property string fill: "#55000000"; readonly property string border: standalone ? "#80FFFFFF" : "#55FFFFFF"; - readonly property string icon: (muted || clipping) ? mutedColor : root.gated ? gatedColor : unmutedColor; + readonly property string icon: (muted || clipping) ? mutedColor : micBar.gated ? gatedColor : unmutedColor; } Item { @@ -169,7 +169,7 @@ Rectangle { Image { id: image; source: (pushToTalk) ? pushToTalkIcon : muted ? mutedIcon : - clipping ? clippingIcon : root.gated ? gatedIcon : unmutedIcon; + clipping ? clippingIcon : micBar.gated ? gatedIcon : unmutedIcon; width: 29; height: 32; anchors { From 5682e8ee2f22126ceaeef39207c96491df26508b Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 7 Nov 2019 15:16:11 -0800 Subject: [PATCH 053/396] Fixing bug with custom pipeline and deformed shape renderItems in shadow pass --- libraries/render-utils/src/RenderShadowTask.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 0d0b776074..60e11f5301 100755 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -257,7 +257,9 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con ShapeKey::Builder(), ShapeKey::Builder().withFade(), ShapeKey::Builder().withDeformed(), ShapeKey::Builder().withDeformed().withFade(), ShapeKey::Builder().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withFade(), - ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade() + ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade(), + ShapeKey::Builder().withOwnPipeline().withDeformed(), ShapeKey::Builder().withOwnPipeline().withDeformed().withFade(), + ShapeKey::Builder().withOwnPipeline().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withOwnPipeline().withDeformed().withDualQuatSkinned().withFade(), }; std::vector> sortedShapeKeys(keys.size()); From 269289412e4a032c34498d208d9520482096f4ba Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 8 Nov 2019 09:11:58 -0800 Subject: [PATCH 054/396] Same fix for highlight effects --- libraries/render-utils/src/HighlightEffect.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp index 701036e66e..938efbef52 100644 --- a/libraries/render-utils/src/HighlightEffect.cpp +++ b/libraries/render-utils/src/HighlightEffect.cpp @@ -192,7 +192,9 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c ShapeKey::Builder(), ShapeKey::Builder().withFade(), ShapeKey::Builder().withDeformed(), ShapeKey::Builder().withDeformed().withFade(), ShapeKey::Builder().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withFade(), - ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade() + ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade(), + ShapeKey::Builder().withOwnPipeline().withDeformed(), ShapeKey::Builder().withOwnPipeline().withDeformed().withFade(), + ShapeKey::Builder().withOwnPipeline().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withOwnPipeline().withDeformed().withDualQuatSkinned().withFade(), }; std::vector> sortedShapeKeys(keys.size()); From fd7ac223b0d0744b34a453cf843d68bdb1bf9326 Mon Sep 17 00:00:00 2001 From: Kalila R Date: Mon, 11 Nov 2019 20:08:03 -0500 Subject: [PATCH 055/396] activitylogger still disabled but does not output to console --- libraries/networking/src/UserActivityLogger.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 7315824136..269ff94b80 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -35,7 +35,8 @@ void UserActivityLogger::disable(bool disable) { } void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCallbackParameters params) { - qCDebug(networking).nospace() << ">>> UserActivityLogger::logAction(" << action << "," << QJsonDocument(details).toJson(); +// qCDebug(networking).nospace() << ">>> UserActivityLogger::logAction(" << action << "," << QJsonDocument(details).toJson(); +// This logs what the UserActivityLogger would normally send to centralized servers. return; if (_disabled.get()) { return; From a7b2c3a32c2736ca19225a9dffe721e3880b04f4 Mon Sep 17 00:00:00 2001 From: Kalila R Date: Mon, 11 Nov 2019 20:22:19 -0500 Subject: [PATCH 056/396] Updated application name and version. --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0da167645f..732445dcb4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7142,7 +7142,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen v0.83.0 - " + QString buildVersion = " - Kasen Community Edition v0.85.0 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 5f7486fe7ec7a791c93ffaa41c25e3a624019fd2 Mon Sep 17 00:00:00 2001 From: Kalila R Date: Mon, 11 Nov 2019 20:26:26 -0500 Subject: [PATCH 057/396] Setting DomainBaker.cpp back to main. --- tools/oven/src/DomainBaker.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tools/oven/src/DomainBaker.cpp b/tools/oven/src/DomainBaker.cpp index a9f45767a6..0853b41872 100644 --- a/tools/oven/src/DomainBaker.cpp +++ b/tools/oven/src/DomainBaker.cpp @@ -417,13 +417,9 @@ void DomainBaker::enumerateEntities() { addMaterialBaker(MATERIAL_URL_KEY, materialURL, true, *it); } } - // FIXME: Disabled for now because relative texture URLs are not supported for embedded materials in material entities - // We need to make texture URLs absolute in this particular case only, keeping in mind that FSTBaker also uses embedded materials - /* if (entity.contains(MATERIAL_DATA_KEY)) { addMaterialBaker(MATERIAL_DATA_KEY, entity[MATERIAL_DATA_KEY].toString(), false, *it, _destinationPath); } - */ } } @@ -449,7 +445,7 @@ void DomainBaker::handleFinishedModelBaker() { // enumerate the QJsonRef values for the URL of this model from our multi hash of // entity objects needing a URL re-write - for (auto propertyEntityPair : _entitiesNeedingRewrite.values(baker->getModelURL())) { + for (auto propertyEntityPair : _entitiesNeedingRewrite.values(baker->getOriginalInputModelURL())) { QString property = propertyEntityPair.first; // convert the entity QJsonValueRef to a QJsonObject so we can modify its URL auto entity = propertyEntityPair.second.toObject(); @@ -489,10 +485,10 @@ void DomainBaker::handleFinishedModelBaker() { } // remove the baked URL from the multi hash of entities needing a re-write - _entitiesNeedingRewrite.remove(baker->getModelURL()); + _entitiesNeedingRewrite.remove(baker->getOriginalInputModelURL()); // drop our shared pointer to this baker so that it gets cleaned up - _modelBakers.remove(baker->getModelURL()); + _modelBakers.remove(baker->getOriginalInputModelURL()); // emit progress to tell listeners how many models we have baked emit bakeProgress(++_completedSubBakes, _totalNumberOfSubBakes); From 7c1b9e79aec03b06557880698ebd32efc8fdc34c Mon Sep 17 00:00:00 2001 From: Kalila R Date: Mon, 11 Nov 2019 20:28:16 -0500 Subject: [PATCH 058/396] Setting ModelBaker.cpp back to main. --- libraries/baking/src/ModelBaker.cpp | 41 ++++++----------------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index cdd07fccf8..70290fe283 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -45,6 +45,7 @@ #include ModelBaker::ModelBaker(const QUrl& inputModelURL, const QString& bakedOutputDirectory, const QString& originalOutputDirectory, bool hasBeenBaked) : + _originalInputModelURL(inputModelURL), _modelURL(inputModelURL), _bakedOutputDir(bakedOutputDirectory), _originalOutputDir(originalOutputDirectory), @@ -245,6 +246,12 @@ void ModelBaker::bakeSourceCopy() { // Begin hfm baking baker.run(); + const auto& errors = baker.getDracoErrors(); + if (std::find(errors.cbegin(), errors.cend(), true) != errors.cend()) { + handleError("Failed to finalize the baking of a draco Geometry node from model " + _modelURL.toString()); + return; + } + _hfmModel = baker.getHFMModel(); _materialMapping = baker.getMaterialMapping(); dracoMeshes = baker.getDracoMeshes(); @@ -389,37 +396,6 @@ void ModelBaker::outputUnbakedFST() { } } -void ModelBaker::outputUnbakedFST() { - // Output an unbaked FST file in the original output folder to make it easier for FSTBaker to rebake this model - // TODO: Consider a more robust method that does not depend on FSTBaker navigating to a hardcoded relative path - QString outputFSTFilename = _modelURL.fileName(); - auto extensionStart = outputFSTFilename.indexOf("."); - if (extensionStart != -1) { - outputFSTFilename.resize(extensionStart); - } - outputFSTFilename += FST_EXTENSION; - QString outputFSTURL = _originalOutputDir + "/" + outputFSTFilename; - - hifi::VariantHash outputMapping; - outputMapping[FST_VERSION_FIELD] = FST_VERSION; - outputMapping[FILENAME_FIELD] = _modelURL.fileName(); - outputMapping[COMMENT_FIELD] = "This FST file was generated by Oven for use during rebaking. It is not part of the original model. This file's existence is subject to change."; - hifi::ByteArray fstOut = FSTReader::writeMapping(outputMapping); - - QFile fstOutputFile { outputFSTURL }; - if (fstOutputFile.exists()) { - handleWarning("The file '" + outputFSTURL + "' already exists. Should that be baked instead of '" + _modelURL.toString() + "'?"); - return; - } - if (!fstOutputFile.open(QIODevice::WriteOnly)) { - handleWarning("Failed to open file '" + outputFSTURL + "' for writing. Rebaking may fail on the associated model."); - return; - } - if (fstOutputFile.write(fstOut) == -1) { - handleWarning("Failed to write to file '" + outputFSTURL + "'. Rebaking may fail on the associated model."); - } -} - void ModelBaker::outputBakedFST() { // Output FST file, copying over input mappings if available QString outputFSTFilename = !_mappingURL.isEmpty() ? _mappingURL.fileName() : _modelURL.fileName(); @@ -467,8 +443,7 @@ void ModelBaker::abort() { bool ModelBaker::buildDracoMeshNode(FBXNode& dracoMeshNode, const QByteArray& dracoMeshBytes, const std::vector& dracoMaterialList) { if (dracoMeshBytes.isEmpty()) { - handleError("Failed to finalize the baking of a draco Geometry node"); - return false; + handleWarning("Empty mesh detected in model: '" + _modelURL.toString() + "'. It will be included in the baked output."); } FBXNode dracoNode; From a3de25618a9b195ac2aca6376e57fc9d22840ab6 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 12 Nov 2019 14:15:19 -0800 Subject: [PATCH 059/396] Handle HMD in input vars and remove/fix json transitions in/out of HMD strafe states. (cherry picked from commit f9f28fc286fde81cbf6d09ebfdd52af2b3bb87d4) --- .../resources/avatar/avatar-animation.json | 36 ++----------------- libraries/animation/src/Rig.cpp | 16 +++++++-- 2 files changed, 15 insertions(+), 37 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index cfcf1cff73..c7cb176920 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -5767,14 +5767,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -5831,14 +5823,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -5983,7 +5967,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -5997,14 +5981,6 @@ "state": "strafeLeftHmd", "var": "isMovingLeftHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" @@ -6047,7 +6023,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -6061,14 +6037,6 @@ "state": "strafeRightHmd", "var": "isMovingRightHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index fc1885ea2b..85b9ecdc42 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1478,18 +1478,28 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos } else { if (_previousControllerParameters.inputX > 0.0f) { // right + if (!_headEnabled) { + _animVars.set("isInputRight", true); + } else { + _animVars.set("isInputRight", false); + } + + _animVars.set("isInputLeft", false); _animVars.set("isInputForward", false); _animVars.set("isInputBackward", false); - _animVars.set("isInputRight", true); - _animVars.set("isInputLeft", false); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); } else { // left + if (!_headEnabled) { + _animVars.set("isInputLeft", true); + } else { + _animVars.set("isInputLeft", false); + } + _animVars.set("isInputForward", false); _animVars.set("isInputBackward", false); _animVars.set("isInputRight", false); - _animVars.set("isInputLeft", true); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); } From 872a0b4496531243580f9e19769d0191cfab1db4 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 1 Dec 2019 20:04:00 -0500 Subject: [PATCH 060/396] Updated application version to 86. --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 732445dcb4..dd907e6482 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7142,7 +7142,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen Community Edition v0.85.0 - " + QString buildVersion = " - Kasen Community Edition v0.86.0 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From b24cc3658cd194c010e1a419be48fc662e49878f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 1 Dec 2019 22:08:26 -0500 Subject: [PATCH 061/396] Update CMakeLists.txt re-added oculus plugins to cmakelists.txt --- plugins/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 8a0ccb07c1..84a926cd71 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -12,14 +12,14 @@ list(REMOVE_ITEM PLUGIN_SUBDIRS "CMakeFiles") set(CMAKE_BUILD_TYPE "Release") # client-side plugins if (NOT SERVER_ONLY AND NOT ANDROID) - #set(DIR "oculus") - #add_subdirectory(${DIR}) + set(DIR "oculus") + add_subdirectory(${DIR}) set(DIR "hifiSdl2") add_subdirectory(${DIR}) set(DIR "openvr") add_subdirectory(${DIR}) - #set(DIR "oculusLegacy") - #add_subdirectory(${DIR}) + set(DIR "oculusLegacy") + add_subdirectory(${DIR}) if (USE_SIXENSE) set(DIR "hifiSixense") From 07d706d6813b7cdce48ca238aba84fa99a50d156 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 1 Dec 2019 22:55:51 -0500 Subject: [PATCH 062/396] Removed all hardcoded whitelist rules --- libraries/script-engine/src/ScriptEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 4f30fc6469..89d56baa80 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2338,7 +2338,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } else { // IF YOU FUCK UP, DELETE FROM HERE TO... - QList safeURLS = { "https://animedeck.com/", "http://animedeck.com/" }; + QList safeURLS = { "https://FAKEURL.t43wt4g4g44FAKE" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); bool isInWhitelist = false; // assume unsafe From 268112ffafc2c3404e7652ebd6ca8483509c9458 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 10:30:06 -0500 Subject: [PATCH 063/396] HiFi readme moved aside, new readme inserted --- README.md | 92 +++++++------------------------------------------- README_hifi.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 79 deletions(-) create mode 100644 README_hifi.md diff --git a/README.md b/README.md index 46433a155c..c33ec8a56f 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,20 @@ -High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. +# HiFi Community Edition -This repository contains the source to many of the components in our -alpha-stage virtual world. The project embraces distributed development. -If you'd like to help, we'll pay you -- find out more at [Worklist.net](https://worklist.net). -If you find a small bug and have a fix, pull requests are welcome. If you'd -like to get paid for your work, make sure you report the bug via a job on -[Worklist.net](https://worklist.net). +### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) -We're hiring! We're looking for skilled developers; -send your resume to hiring@highfidelity.com +#### Changes for **v0.86.0** consist of: -##### Chat with us -Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you have any questions or just want to say hi! +* Audio Buffer choppy audio bugfix. +* User activity logger disabled, option in code to log to console. +* CMakeLists.txt configured to work for Polyvox, Interface JSDocs. (may be obsolete) +* Custom Application Title. +* Entity Script Whitelist, no scripts are whitelisted by default. +* Batch file log output, instant close of application on closing of the CMD=line. -Documentation -========= -Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). +This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. -There is also detailed [documentation on our coding standards](CODING_STANDARD.md). +### Whitelist Instructions -Contributor License Agreement (CLA) -========= -Technology companies frequently receive and use code from contributors outside the company's development team. Outside code can be a tremendous resource, but it also carries responsibility. Best practice for accepting outside contributions consists of an Apache-type Contributor License Agreement (CLA). We have modeled the High Fidelity CLA after the CLA that Google presents to developers for contributions to their projects. This CLA does not transfer ownership of code, instead simply granting a non-exclusive right for High Fidelity to use the code you’ve contributed. In that regard, you should be sure you have permission if the work relates to or uses the resources of a company that you work for. You will be asked to sign our CLA when you create your first PR or when the CLA is updated. You can also [review it here](https://gist.githubusercontent.com/hifi-gustavo/fef8f06a8233d42a0040d45c3efb97a9/raw/9981827eb94f0b18666083670b6f6a02929fb402/High%2520Fidelity%2520CLA). We sincerely appreciate your contribution and efforts toward the success of the platform. +The batch file that you launch from sets the whitelist environment variable for you, however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" -Build Instructions -========= -All information required to build is found in the [build guide](BUILD.md). - -Running Interface -=== -When you launch interface, you will automatically connect to our default domain: "root.highfidelity.io". - -If you don't see anything, make sure your preferences are pointing to -root.highfidelity.io (set your domain via Cmnd+D/Cntrl+D). If you still have no luck, -it's possible our servers are down. If you're experiencing a major bug, let us know by -adding an issue to this repository. Include details about your computer and how to -reproduce the bug in your issue. - -To move around in-world, use the arrow keys (and Shift + up/down to fly up or -down) or W A S D, and E or C to fly up/down. All of the other possible options -and features are available via menus in the Interface application. - -Running your own servers -======== -The assignment-client and domain-server are architectural components that will allow -you to run the full stack of the virtual world. - -In order to set up your own virtual world, you need to set up and run your own -local "domain". - -The domain-server gives a number different types of assignments to the assignment-client -for different features: audio, avatars, voxels, particles, meta-voxels and models. - -Follow the instructions in the [build guide](BUILD.md) to build the various components. - -From the domain-server build directory, launch a domain-server. - - ./domain-server - -Then, run an assignment-client. The assignment-client uses localhost as its assignment-server -and talks to it on port 40102 (the default domain-server port). - -In a new Terminal window, run: - - ./assignment-client - -Any target can be terminated with Ctrl-C (SIGINT) in the associated Terminal window. - -This assignment-client will grab one assignment from the domain-server. You can tell the -assignment-client what type you want it to be with the `-t` option. You can also run an -assignment-client that forks off *n* assignment-clients with the `-n` option. The `-min` -and `-max` options allow you to set a range of required assignment-clients. This allows -you to have flexibility in the number of assignment-clients that are running. -See `--help` for more options. - - ./assignment-client --min 6 --max 20 - -To test things out, you'll need to run the Interface client. - -To access your local domain in Interface, open your Preferences. On OS X, this is available -in the Interface menu. On Linux, you'll find it in the File menu. Enter "localhost" in the -"Domain server" field. - -If everything worked, you should see that you are connected to at least one server. -Nice work! +The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. \ No newline at end of file diff --git a/README_hifi.md b/README_hifi.md new file mode 100644 index 0000000000..46433a155c --- /dev/null +++ b/README_hifi.md @@ -0,0 +1,86 @@ +High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. + +This repository contains the source to many of the components in our +alpha-stage virtual world. The project embraces distributed development. +If you'd like to help, we'll pay you -- find out more at [Worklist.net](https://worklist.net). +If you find a small bug and have a fix, pull requests are welcome. If you'd +like to get paid for your work, make sure you report the bug via a job on +[Worklist.net](https://worklist.net). + +We're hiring! We're looking for skilled developers; +send your resume to hiring@highfidelity.com + +##### Chat with us +Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you have any questions or just want to say hi! + +Documentation +========= +Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). + +There is also detailed [documentation on our coding standards](CODING_STANDARD.md). + +Contributor License Agreement (CLA) +========= +Technology companies frequently receive and use code from contributors outside the company's development team. Outside code can be a tremendous resource, but it also carries responsibility. Best practice for accepting outside contributions consists of an Apache-type Contributor License Agreement (CLA). We have modeled the High Fidelity CLA after the CLA that Google presents to developers for contributions to their projects. This CLA does not transfer ownership of code, instead simply granting a non-exclusive right for High Fidelity to use the code you’ve contributed. In that regard, you should be sure you have permission if the work relates to or uses the resources of a company that you work for. You will be asked to sign our CLA when you create your first PR or when the CLA is updated. You can also [review it here](https://gist.githubusercontent.com/hifi-gustavo/fef8f06a8233d42a0040d45c3efb97a9/raw/9981827eb94f0b18666083670b6f6a02929fb402/High%2520Fidelity%2520CLA). We sincerely appreciate your contribution and efforts toward the success of the platform. + +Build Instructions +========= +All information required to build is found in the [build guide](BUILD.md). + +Running Interface +=== +When you launch interface, you will automatically connect to our default domain: "root.highfidelity.io". + +If you don't see anything, make sure your preferences are pointing to +root.highfidelity.io (set your domain via Cmnd+D/Cntrl+D). If you still have no luck, +it's possible our servers are down. If you're experiencing a major bug, let us know by +adding an issue to this repository. Include details about your computer and how to +reproduce the bug in your issue. + +To move around in-world, use the arrow keys (and Shift + up/down to fly up or +down) or W A S D, and E or C to fly up/down. All of the other possible options +and features are available via menus in the Interface application. + +Running your own servers +======== +The assignment-client and domain-server are architectural components that will allow +you to run the full stack of the virtual world. + +In order to set up your own virtual world, you need to set up and run your own +local "domain". + +The domain-server gives a number different types of assignments to the assignment-client +for different features: audio, avatars, voxels, particles, meta-voxels and models. + +Follow the instructions in the [build guide](BUILD.md) to build the various components. + +From the domain-server build directory, launch a domain-server. + + ./domain-server + +Then, run an assignment-client. The assignment-client uses localhost as its assignment-server +and talks to it on port 40102 (the default domain-server port). + +In a new Terminal window, run: + + ./assignment-client + +Any target can be terminated with Ctrl-C (SIGINT) in the associated Terminal window. + +This assignment-client will grab one assignment from the domain-server. You can tell the +assignment-client what type you want it to be with the `-t` option. You can also run an +assignment-client that forks off *n* assignment-clients with the `-n` option. The `-min` +and `-max` options allow you to set a range of required assignment-clients. This allows +you to have flexibility in the number of assignment-clients that are running. +See `--help` for more options. + + ./assignment-client --min 6 --max 20 + +To test things out, you'll need to run the Interface client. + +To access your local domain in Interface, open your Preferences. On OS X, this is available +in the Interface menu. On Linux, you'll find it in the File menu. Enter "localhost" in the +"Domain server" field. + +If everything worked, you should see that you are connected to at least one server. +Nice work! From 210c509c2b5b8a68f5f64b4f0cc9f5179c804cfd Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 10:48:09 -0500 Subject: [PATCH 064/396] Updated readme.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c33ec8a56f..d6400a12b9 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,17 @@ #### Changes for **v0.86.0** consist of: -* Audio Buffer choppy audio bugfix. -* User activity logger disabled, option in code to log to console. +* Audio Buffer choppy audio bugfix by increasing the buffer size. +* User Activity Logger disabled, option in code to log the reports to console. * CMakeLists.txt configured to work for Polyvox, Interface JSDocs. (may be obsolete) * Custom Application Title. * Entity Script Whitelist, no scripts are whitelisted by default. -* Batch file log output, instant close of application on closing of the CMD=line. +* Background CMD outputs full log, instant close of application on closing of the CMD-line. This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. ### Whitelist Instructions -The batch file that you launch from sets the whitelist environment variable for you, however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" +The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. \ No newline at end of file From 166ee8560a2158245e594abaa51a30ac83096917 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 11:08:11 -0500 Subject: [PATCH 065/396] Updated readme.md to add goal v1. --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d6400a12b9..8af60f445a 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,10 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" -The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. \ No newline at end of file +The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. + +### Boot to Metaverse: The Goal + +Too many of us have our own personal combinations of High Fidelity from C++ modifications to different default scripts, all of which are lost to time as their fullest potential is never truly shared and propagated through the system. + +The goal of this repo is to give a common area to PR the very best of our findings and creations so that we may effectively take each necessary step towards our common goal of living in a true metaverse. \ No newline at end of file From 3ca678bf28a665a60ce93a06ec9fcce25675c525 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 11:26:05 -0500 Subject: [PATCH 066/396] Updated readme's to latest. --- README.md | 92 +++++++++----------------------------------------- README_hifi.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 76 deletions(-) create mode 100644 README_hifi.md diff --git a/README.md b/README.md index 46433a155c..8af60f445a 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,26 @@ -High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. +# HiFi Community Edition -This repository contains the source to many of the components in our -alpha-stage virtual world. The project embraces distributed development. -If you'd like to help, we'll pay you -- find out more at [Worklist.net](https://worklist.net). -If you find a small bug and have a fix, pull requests are welcome. If you'd -like to get paid for your work, make sure you report the bug via a job on -[Worklist.net](https://worklist.net). +### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) -We're hiring! We're looking for skilled developers; -send your resume to hiring@highfidelity.com +#### Changes for **v0.86.0** consist of: -##### Chat with us -Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you have any questions or just want to say hi! +* Audio Buffer choppy audio bugfix by increasing the buffer size. +* User Activity Logger disabled, option in code to log the reports to console. +* CMakeLists.txt configured to work for Polyvox, Interface JSDocs. (may be obsolete) +* Custom Application Title. +* Entity Script Whitelist, no scripts are whitelisted by default. +* Background CMD outputs full log, instant close of application on closing of the CMD-line. -Documentation -========= -Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). +This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. -There is also detailed [documentation on our coding standards](CODING_STANDARD.md). +### Whitelist Instructions -Contributor License Agreement (CLA) -========= -Technology companies frequently receive and use code from contributors outside the company's development team. Outside code can be a tremendous resource, but it also carries responsibility. Best practice for accepting outside contributions consists of an Apache-type Contributor License Agreement (CLA). We have modeled the High Fidelity CLA after the CLA that Google presents to developers for contributions to their projects. This CLA does not transfer ownership of code, instead simply granting a non-exclusive right for High Fidelity to use the code you’ve contributed. In that regard, you should be sure you have permission if the work relates to or uses the resources of a company that you work for. You will be asked to sign our CLA when you create your first PR or when the CLA is updated. You can also [review it here](https://gist.githubusercontent.com/hifi-gustavo/fef8f06a8233d42a0040d45c3efb97a9/raw/9981827eb94f0b18666083670b6f6a02929fb402/High%2520Fidelity%2520CLA). We sincerely appreciate your contribution and efforts toward the success of the platform. +The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" -Build Instructions -========= -All information required to build is found in the [build guide](BUILD.md). +The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. -Running Interface -=== -When you launch interface, you will automatically connect to our default domain: "root.highfidelity.io". +### Boot to Metaverse: The Goal -If you don't see anything, make sure your preferences are pointing to -root.highfidelity.io (set your domain via Cmnd+D/Cntrl+D). If you still have no luck, -it's possible our servers are down. If you're experiencing a major bug, let us know by -adding an issue to this repository. Include details about your computer and how to -reproduce the bug in your issue. +Too many of us have our own personal combinations of High Fidelity from C++ modifications to different default scripts, all of which are lost to time as their fullest potential is never truly shared and propagated through the system. -To move around in-world, use the arrow keys (and Shift + up/down to fly up or -down) or W A S D, and E or C to fly up/down. All of the other possible options -and features are available via menus in the Interface application. - -Running your own servers -======== -The assignment-client and domain-server are architectural components that will allow -you to run the full stack of the virtual world. - -In order to set up your own virtual world, you need to set up and run your own -local "domain". - -The domain-server gives a number different types of assignments to the assignment-client -for different features: audio, avatars, voxels, particles, meta-voxels and models. - -Follow the instructions in the [build guide](BUILD.md) to build the various components. - -From the domain-server build directory, launch a domain-server. - - ./domain-server - -Then, run an assignment-client. The assignment-client uses localhost as its assignment-server -and talks to it on port 40102 (the default domain-server port). - -In a new Terminal window, run: - - ./assignment-client - -Any target can be terminated with Ctrl-C (SIGINT) in the associated Terminal window. - -This assignment-client will grab one assignment from the domain-server. You can tell the -assignment-client what type you want it to be with the `-t` option. You can also run an -assignment-client that forks off *n* assignment-clients with the `-n` option. The `-min` -and `-max` options allow you to set a range of required assignment-clients. This allows -you to have flexibility in the number of assignment-clients that are running. -See `--help` for more options. - - ./assignment-client --min 6 --max 20 - -To test things out, you'll need to run the Interface client. - -To access your local domain in Interface, open your Preferences. On OS X, this is available -in the Interface menu. On Linux, you'll find it in the File menu. Enter "localhost" in the -"Domain server" field. - -If everything worked, you should see that you are connected to at least one server. -Nice work! +The goal of this repo is to give a common area to PR the very best of our findings and creations so that we may effectively take each necessary step towards our common goal of living in a true metaverse. \ No newline at end of file diff --git a/README_hifi.md b/README_hifi.md new file mode 100644 index 0000000000..46433a155c --- /dev/null +++ b/README_hifi.md @@ -0,0 +1,86 @@ +High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. + +This repository contains the source to many of the components in our +alpha-stage virtual world. The project embraces distributed development. +If you'd like to help, we'll pay you -- find out more at [Worklist.net](https://worklist.net). +If you find a small bug and have a fix, pull requests are welcome. If you'd +like to get paid for your work, make sure you report the bug via a job on +[Worklist.net](https://worklist.net). + +We're hiring! We're looking for skilled developers; +send your resume to hiring@highfidelity.com + +##### Chat with us +Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you have any questions or just want to say hi! + +Documentation +========= +Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). + +There is also detailed [documentation on our coding standards](CODING_STANDARD.md). + +Contributor License Agreement (CLA) +========= +Technology companies frequently receive and use code from contributors outside the company's development team. Outside code can be a tremendous resource, but it also carries responsibility. Best practice for accepting outside contributions consists of an Apache-type Contributor License Agreement (CLA). We have modeled the High Fidelity CLA after the CLA that Google presents to developers for contributions to their projects. This CLA does not transfer ownership of code, instead simply granting a non-exclusive right for High Fidelity to use the code you’ve contributed. In that regard, you should be sure you have permission if the work relates to or uses the resources of a company that you work for. You will be asked to sign our CLA when you create your first PR or when the CLA is updated. You can also [review it here](https://gist.githubusercontent.com/hifi-gustavo/fef8f06a8233d42a0040d45c3efb97a9/raw/9981827eb94f0b18666083670b6f6a02929fb402/High%2520Fidelity%2520CLA). We sincerely appreciate your contribution and efforts toward the success of the platform. + +Build Instructions +========= +All information required to build is found in the [build guide](BUILD.md). + +Running Interface +=== +When you launch interface, you will automatically connect to our default domain: "root.highfidelity.io". + +If you don't see anything, make sure your preferences are pointing to +root.highfidelity.io (set your domain via Cmnd+D/Cntrl+D). If you still have no luck, +it's possible our servers are down. If you're experiencing a major bug, let us know by +adding an issue to this repository. Include details about your computer and how to +reproduce the bug in your issue. + +To move around in-world, use the arrow keys (and Shift + up/down to fly up or +down) or W A S D, and E or C to fly up/down. All of the other possible options +and features are available via menus in the Interface application. + +Running your own servers +======== +The assignment-client and domain-server are architectural components that will allow +you to run the full stack of the virtual world. + +In order to set up your own virtual world, you need to set up and run your own +local "domain". + +The domain-server gives a number different types of assignments to the assignment-client +for different features: audio, avatars, voxels, particles, meta-voxels and models. + +Follow the instructions in the [build guide](BUILD.md) to build the various components. + +From the domain-server build directory, launch a domain-server. + + ./domain-server + +Then, run an assignment-client. The assignment-client uses localhost as its assignment-server +and talks to it on port 40102 (the default domain-server port). + +In a new Terminal window, run: + + ./assignment-client + +Any target can be terminated with Ctrl-C (SIGINT) in the associated Terminal window. + +This assignment-client will grab one assignment from the domain-server. You can tell the +assignment-client what type you want it to be with the `-t` option. You can also run an +assignment-client that forks off *n* assignment-clients with the `-n` option. The `-min` +and `-max` options allow you to set a range of required assignment-clients. This allows +you to have flexibility in the number of assignment-clients that are running. +See `--help` for more options. + + ./assignment-client --min 6 --max 20 + +To test things out, you'll need to run the Interface client. + +To access your local domain in Interface, open your Preferences. On OS X, this is available +in the Interface menu. On Linux, you'll find it in the File menu. Enter "localhost" in the +"Domain server" field. + +If everything worked, you should see that you are connected to at least one server. +Nice work! From fbb5d448cd04359956b1766670084a07dd1355db Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 11:51:59 -0500 Subject: [PATCH 067/396] Added "why HiFi" to readme.md --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8af60f445a..10ddd06fa2 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,14 @@ The whitelist checks against the domains literally, so you have to be precise to Too many of us have our own personal combinations of High Fidelity from C++ modifications to different default scripts, all of which are lost to time as their fullest potential is never truly shared and propagated through the system. -The goal of this repo is to give a common area to PR the very best of our findings and creations so that we may effectively take each necessary step towards our common goal of living in a true metaverse. \ No newline at end of file +The goal of this repo is to give a common area to PR the very best of our findings and creations so that we may effectively take each necessary step towards our common goal of living in a true metaverse. + +### Why High Fidelity? + +Because of all the options, it is the only starting point that is open-source, cross-platform, fully VR integrated + fully desktop integrated with an aim for quality visuals and performance. IT also does us the service of providing a foundation to start from such as entity management, full body IK, etc. + +WebXR offers the open-source and decentralized aspect but does not have any of the full featured starting points such as avatars, IK, etc. + +Platforms like NeosVR or VRChat are unusable from go due to their fundamental closed-source and centralized nature. A metaverse to live on cannot have the keys handed over to any one entity, if any at all. + +So the necessary desire is to use High Fidelity as our foundation as a community of one, of all to build a metaverse worth living in. \ No newline at end of file From 3be39e514d6becc2b5a65085a08492f65770a44d Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 3 Dec 2019 13:15:50 -0500 Subject: [PATCH 068/396] updated readme.md again --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 10ddd06fa2..ed72a0984b 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. ### Whitelist Instructions -The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you are unable to launch from the batch file and have to launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/**" +The whitelist checks every entity-script attempting to run on your client against a list of domains, their subfolders, or the specific script URL entirely. + +The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. @@ -27,7 +29,7 @@ The goal of this repo is to give a common area to PR the very best of our findin ### Why High Fidelity? -Because of all the options, it is the only starting point that is open-source, cross-platform, fully VR integrated + fully desktop integrated with an aim for quality visuals and performance. IT also does us the service of providing a foundation to start from such as entity management, full body IK, etc. +Because of all the options, it is the only starting point that is open-source, cross-platform, fully VR integrated + fully desktop integrated with an aim for quality visuals and performance. It also does us the service of providing a foundation to start from such as entity management, full body IK, etc. WebXR offers the open-source and decentralized aspect but does not have any of the full featured starting points such as avatars, IK, etc. From 2cf453432ef8afb7eb31d570906367c74af49f9f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 4 Dec 2019 11:50:01 -0500 Subject: [PATCH 069/396] Updated readme.md + updated application title. --- README.md | 19 ++++++++++++++++--- interface/src/Application.cpp | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ed72a0984b..8d7eaac9c1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) -#### Changes for **v0.86.0** consist of: +#### Changes for **v0.86.0 R1** consist of: * Audio Buffer choppy audio bugfix by increasing the buffer size. * User Activity Logger disabled, option in code to log the reports to console. @@ -17,7 +17,16 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. The whitelist checks every entity-script attempting to run on your client against a list of domains, their subfolders, or the specific script URL entirely. -The **Start - NO STEAMVR** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" +The **Start** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" + +Alternatively you can make a batch file placed in the same folder as interface.exe that sets the whitelist environment variable temporarily: + +``` +set "EXTRA_WHITELIST=http://mpassets.highfidelity.com/,https://raw.githubusercontent.com/highfidelity/,https://hifi-content.s3.amazonaws.com/" +interface.exe +``` + +By default, we are whitelisting High Fidelity's current known CDN domains so we can see their own/hosted entity-script related content. The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. @@ -35,4 +44,8 @@ WebXR offers the open-source and decentralized aspect but does not have any of t Platforms like NeosVR or VRChat are unusable from go due to their fundamental closed-source and centralized nature. A metaverse to live on cannot have the keys handed over to any one entity, if any at all. -So the necessary desire is to use High Fidelity as our foundation as a community of one, of all to build a metaverse worth living in. \ No newline at end of file +So the necessary desire is to use High Fidelity as our foundation as a community of one, of all to build a metaverse worth living in. + +### Contributors + +A special thanks to the contributors of the community edition. \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dd907e6482..1498797cb1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7142,7 +7142,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen Community Edition v0.86.0 - " + QString buildVersion = " - Kasen Community Edition v0.86.0 R1 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 245224f0e9b22142b6c676a963cd854d36de8cd4 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 4 Dec 2019 13:39:22 -0500 Subject: [PATCH 070/396] Updated readme.md again + updated application title again. --- README.md | 2 +- interface/src/Application.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8d7eaac9c1..a8ace0018e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) -#### Changes for **v0.86.0 R1** consist of: +#### Changes for **v0.86.0 K1** consist of: * Audio Buffer choppy audio bugfix by increasing the buffer size. * User Activity Logger disabled, option in code to log the reports to console. diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1498797cb1..051e00b831 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7142,7 +7142,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen Community Edition v0.86.0 R1 - " + QString buildVersion = " - Kasen Community Edition v0.86.0 K1 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 2e36c409124a1f22f66fe546ad5f96ab59ed6d5b Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 7 Dec 2019 18:20:46 -0500 Subject: [PATCH 071/396] added QML + C++ system for whitelists --- .../security/EntityScriptWhitelist.qml | 110 ++++++++++++++++++ interface/src/Menu.cpp | 14 +++ interface/src/Menu.h | 1 + libraries/script-engine/src/ScriptEngine.cpp | 29 ++++- 4 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml new file mode 100644 index 0000000000..45a8368ce4 --- /dev/null +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml @@ -0,0 +1,110 @@ +// +// ScriptWhitelist.qml +// interface/resources/qml/hifi/dialogs/security +// +// Created by Kasen IO on 2019.12.05 | realities.dev | kasenvr@gmail.com +// Copyright 2019 Kasen IO +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +// Security Settings for the Entity Script Whitelist + +import Hifi 1.0 as Hifi +import QtQuick 2.8 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.12 +import stylesUit 1.0 as HifiStylesUit +import controlsUit 1.0 as HiFiControls +import PerformanceEnums 1.0 +import "../../../windows" + + +Rectangle { + + function getWhitelistAsText() { + var whitelist = Settings.getValue("private/settingsSafeURLS"); + // var arrayWhitelist = whitelist.split(/\s*,\s*/); + // var whitelistText = arrayWhitelist.join("\n"); + return whitelist; + } + + function setWhiteListAsText(whitelistText) { + console.info('SETTINGCURRENTVALUE: ', Settings.getValue('private/settingsSafeURLS'), whitelistText.text) + Settings.setValue("private/settingsSafeURLS", whitelistText.text); + console.info('SETVALUE: ', Settings.getValue('private/settingsSafeURLS'), whitelistText.text) + } + + anchors.fill: parent + width: parent.width; + height: 120; + color: "#80010203"; + + HifiStylesUit.RalewayRegular { + id: titleText; + text: "Entity Script Whitelist" + // Text size + size: 24; + // Style + color: "white"; + elide: Text.ElideRight; + // Anchors + anchors.top: parent.top; + anchors.left: parent.left; + anchors.leftMargin: 20; + anchors.right: parent.right; + anchors.rightMargin: 20; + height: 60; + } + + Rectangle { + id: textAreaRectangle; + color: "black"; + width: parent.width; + height: 250; + anchors.top: titleText.bottom; + + ScrollView { + id: textAreaScrollView + anchors.fill: parent; + width: parent.width + height: parent.height + contentWidth: parent.width + contentHeight: parent.height + clip: false; + + TextArea { + id: whitelistTextArea + text: getWhitelistAsText(); + width: parent.width; + height: parent.height; + font.family: "Ubuntu"; + font.pointSize: 12; + color: "white"; + } + } + + Button { + id: saveChanges + // anchors.top: whitelistTextArea.bottom; + anchors.topMargin: 5; + anchors.leftMargin: 20; + // anchors.right: whitelistTextArea.right; + anchors.rightMargin: 20; + x: textAreaRectangle.x + textAreaRectangle.width - width - 5; + y: textAreaRectangle.y + textAreaRectangle.height - height; + contentItem: Text { + text: saveChanges.text + font.family: "Ubuntu"; + font.pointSize: 12; + opacity: enabled ? 1.0 : 0.3 + color: "black" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + text: "Save Changes" + onClicked: setWhiteListAsText(whitelistTextArea) + } + } +} \ No newline at end of file diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 508c44fbd1..9bc1dae56e 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -286,6 +286,20 @@ Menu::Menu() { hmd->toggleShouldShowTablet(); } }); + + // Settings > Entity Script Whitelist + action = addActionToQMenuAndActionHash(settingsMenu, "Entity Script Whitelist"); + connect(action, &QAction::triggered, [] { + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); + auto hmd = DependencyManager::get(); + + DependencyManager::get()->clearCache(); + tablet->pushOntoStack("hifi/dialogs/security/EntityScriptWhitelist.qml"); + + if (!hmd->getShouldShowTablet()) { + hmd->toggleShouldShowTablet(); + } + }); // Settings > Developer Menu addCheckableActionToQMenuAndActionHash(settingsMenu, "Developer Menu", 0, false, this, SLOT(toggleDeveloperMenus())); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index ea118ec5dd..37b3f971fc 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -181,6 +181,7 @@ namespace MenuOption { const QString RunningScripts = "Running Scripts..."; const QString RunTimingTests = "Run Timing Tests"; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; + const QString EntityScriptWhitelist = "Entity Script Whitelist"; const QString ShowTrackedObjects = "Show Tracked Objects"; const QString SelfieCamera = "Selfie"; const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index f205b016d1..78b483e3b3 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -84,6 +84,11 @@ #include "../../midi/src/Midi.h" // FIXME why won't a simpler include work? #include "MIDIEvent.h" +#include "SettingHandle.h" +// #include "SettingManager.h" +// #include "SettingInterface.h" +// #include "SettingHelpers.h" + const QString ScriptEngine::_SETTINGS_ENABLE_EXTENDED_EXCEPTIONS { "com.highfidelity.experimental.enableExtendedJSExceptions" }; @@ -2362,10 +2367,30 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co QList safeURLS = { "https://FAKEURL.t43wt4g4g44FAKE" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); + // PULL SAFEURLS FROM INTERFACE.JSON Settings + + QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); + // qDebug() << "raw value" << raw; + // qDebug() << "raw value as list" << raw.toList(); + QStringList settingsSafeURLS = raw.toString().split(QRegExp("[\r\n]+")); + safeURLS += settingsSafeURLS; + + // QVariantList settingsSafeURLS = Setting::Handle("private/settingsSafeURLS").get(); + // qCDebug(scriptengine) << "ESWsafeURLS" << safeURLS; + + // for (QVariantList::iterator surl = settingsSafeURLS.begin(); surl != settingsSafeURLS.end(); surl++) + // { + // safeURLS += (*surl).toString(); + // } + + // for (const auto& s : settingsSafeURLS) safeURLS << s.toString(); + + // END PULL SAFEURLS FROM INTERFACE.JSON Settings + bool isInWhitelist = false; // assume unsafe for (const auto& str : safeURLS) { // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str; - qDebug() << "SCRIPTOURL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + qCDebug(scriptengine) << "SCRIPT URL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); if (scriptOrURL.startsWith(str)) { isInWhitelist = true; @@ -2373,7 +2398,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } } if (!isInWhitelist) { - qDebug() << "(disabled entity script)" << entityID.toString() << scriptOrURL; + qCDebug(scriptengine) << "(disabled entity script)" << entityID.toString() << scriptOrURL; exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); } else { QTimer timeout; From 3c8f76b3f95af7de45e6b9e76370a2f530c217d7 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 7 Dec 2019 22:26:31 -0500 Subject: [PATCH 072/396] ignores "VideoDecodeStats" in .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 8061c2140d..82c9535c5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +VideoDecodeStats + # CMake CMakeCache.txt CMakeFiles/ From 12e5712f412c76708420276001d0b834a1019eb1 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 8 Dec 2019 09:46:58 -0600 Subject: [PATCH 073/396] Upgrade vcpkg port files for SDL2 from 2.0.8 to 2.0.10. Fixes patch errors. Signed-off-by: Marcus Llewellyn --- cmake/ports/sdl2/CONTROL | 7 +- cmake/ports/sdl2/SDL-2.0.9-bug-4391-fix.patch | 75 ++++ cmake/ports/sdl2/disable-hidapi-for-uwp.patch | 11 + cmake/ports/sdl2/enable-winrt-cmake.patch | 381 ++++++++---------- cmake/ports/sdl2/fix-arm64-headers.patch | 14 + cmake/ports/sdl2/fix-space-in-path.patch | 24 ++ cmake/ports/sdl2/fix-x86-windows.patch | 15 + cmake/ports/sdl2/portfile.cmake | 31 +- cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake | 8 + 9 files changed, 346 insertions(+), 220 deletions(-) create mode 100644 cmake/ports/sdl2/SDL-2.0.9-bug-4391-fix.patch create mode 100644 cmake/ports/sdl2/disable-hidapi-for-uwp.patch create mode 100644 cmake/ports/sdl2/fix-arm64-headers.patch create mode 100644 cmake/ports/sdl2/fix-space-in-path.patch create mode 100644 cmake/ports/sdl2/fix-x86-windows.patch create mode 100644 cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake diff --git a/cmake/ports/sdl2/CONTROL b/cmake/ports/sdl2/CONTROL index 6f39484dd6..3f96bc71f1 100644 --- a/cmake/ports/sdl2/CONTROL +++ b/cmake/ports/sdl2/CONTROL @@ -1,3 +1,8 @@ Source: sdl2 -Version: 2.0.8-1 +Version: 2.0.10-2 +Homepage: https://github.com/SDL-Mirror/SDL Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. + +Feature: vulkan +Description: Vulkan functionality for SDL +Build-Depends: vulkan diff --git a/cmake/ports/sdl2/SDL-2.0.9-bug-4391-fix.patch b/cmake/ports/sdl2/SDL-2.0.9-bug-4391-fix.patch new file mode 100644 index 0000000000..f8fc64bda6 --- /dev/null +++ b/cmake/ports/sdl2/SDL-2.0.9-bug-4391-fix.patch @@ -0,0 +1,75 @@ +# HG changeset patch +# User Sam Lantinga +# Date 1542691020 28800 +# Node ID 9091b20040cf04cdc348d290ca22373b36364c39 +# Parent 144400e4630d885d2eb0761b7174433b4c0d90bb +Fixed bug 4391 - hid_enumerate() sometimes causes game to freeze for a few seconds + +Daniel Gibson + +Even though my game (dhewm3) doesn't use SDL_INIT_JOYSTICK, SDL_PumpEvent() calls SDL_JoystickUpdate() which ends up calling hid_enumerate() every three seconds, and sometimes on my Win7 box hid_enumerate() takes about 5 seconds, which causes the whole game to freeze for that time. + +diff -r 144400e4630d -r 9091b20040cf include/SDL_bits.h +--- a/include/SDL_bits.h Sun Nov 18 19:28:20 2018 +0300 ++++ b/include/SDL_bits.h Mon Nov 19 21:17:00 2018 -0800 +@@ -101,6 +101,15 @@ + #endif + } + ++SDL_FORCE_INLINE SDL_bool ++SDL_HasExactlyOneBitSet32(Uint32 x) ++{ ++ if (x && !(x & (x - 1))) { ++ return SDL_TRUE; ++ } ++ return SDL_FALSE; ++} ++ + /* Ends C function definitions when using C++ */ + #ifdef __cplusplus + } +diff -r 144400e4630d -r 9091b20040cf src/SDL.c +--- a/src/SDL.c Sun Nov 18 19:28:20 2018 +0300 ++++ b/src/SDL.c Mon Nov 19 21:17:00 2018 -0800 +@@ -348,6 +348,12 @@ + int num_subsystems = SDL_arraysize(SDL_SubsystemRefCount); + Uint32 initialized = 0; + ++ /* Fast path for checking one flag */ ++ if (SDL_HasExactlyOneBitSet32(flags)) { ++ int subsystem_index = SDL_MostSignificantBitIndex32(flags); ++ return SDL_SubsystemRefCount[subsystem_index] ? flags : 0; ++ } ++ + if (!flags) { + flags = SDL_INIT_EVERYTHING; + } +diff -r 144400e4630d -r 9091b20040cf src/joystick/SDL_joystick.c +--- a/src/joystick/SDL_joystick.c Sun Nov 18 19:28:20 2018 +0300 ++++ b/src/joystick/SDL_joystick.c Mon Nov 19 21:17:00 2018 -0800 +@@ -1016,6 +1016,10 @@ + int i; + SDL_Joystick *joystick; + ++ if (!SDL_WasInit(SDL_INIT_JOYSTICK)) { ++ return; ++ } ++ + SDL_LockJoysticks(); + + if (SDL_updating_joystick) { +diff -r 144400e4630d -r 9091b20040cf src/sensor/SDL_sensor.c +--- a/src/sensor/SDL_sensor.c Sun Nov 18 19:28:20 2018 +0300 ++++ b/src/sensor/SDL_sensor.c Mon Nov 19 21:17:00 2018 -0800 +@@ -505,6 +505,10 @@ + int i; + SDL_Sensor *sensor; + ++ if (!SDL_WasInit(SDL_INIT_SENSOR)) { ++ return; ++ } ++ + SDL_LockSensors(); + + if (SDL_updating_sensor) { + diff --git a/cmake/ports/sdl2/disable-hidapi-for-uwp.patch b/cmake/ports/sdl2/disable-hidapi-for-uwp.patch new file mode 100644 index 0000000000..13d1ca8d1f --- /dev/null +++ b/cmake/ports/sdl2/disable-hidapi-for-uwp.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -172,7 +172,7 @@ + # requires root permissions to open devices, so that's not generally + # useful, and we'll disable this by default on Unix. Windows and macOS + # can use it without root access, though, so enable by default there. +-if(WINDOWS OR APPLE OR ANDROID) ++if((WINDOWS AND NOT WINDOWS_STORE) OR APPLE OR ANDROID) + set(HIDAPI_SKIP_LIBUSB TRUE) + else() + set(HIDAPI_SKIP_LIBUSB FALSE) diff --git a/cmake/ports/sdl2/enable-winrt-cmake.patch b/cmake/ports/sdl2/enable-winrt-cmake.patch index dcd2afa67c..836ffcdd70 100644 --- a/cmake/ports/sdl2/enable-winrt-cmake.patch +++ b/cmake/ports/sdl2/enable-winrt-cmake.patch @@ -1,206 +1,175 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 73d9407..082fbc5 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -3,7 +3,11 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - endif() - - cmake_minimum_required(VERSION 2.8.11) --project(SDL2 C) -+if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") -+ project(SDL2 C CXX) -+else() -+ project(SDL2 C) -+endif() - - # !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property - # !!! FIXME: for the SDL2 shared library (so you get an -@@ -358,7 +362,6 @@ file(GLOB SOURCE_FILES - ${SDL2_SOURCE_DIR}/src/timer/*.c - ${SDL2_SOURCE_DIR}/src/video/*.c) - -- - if(ASSERTIONS STREQUAL "auto") - # Do nada - use optimization settings to determine the assertion level - elseif(ASSERTIONS STREQUAL "disabled") -@@ -1132,6 +1135,22 @@ elseif(WINDOWS) - file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/windows/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) - -+ if(WINDOWS_STORE) -+ cmake_minimum_required(VERSION 3.0) -+ add_definitions(-DSDL_BUILDING_WINRT=1 -ZW) -+ link_libraries( -+ -nodefaultlib:vccorlib$<$:d> -+ -nodefaultlib:msvcrt$<$:d> -+ vccorlib$<$:d>.lib -+ msvcrt$<$:d>.lib -+ ) -+ endif() -+ -+ if(WINDOWS_STORE) -+ file(GLOB WINRT_SOURCE_FILES ${SDL2_SOURCE_DIR}/src/core/winrt/*.c ${SDL2_SOURCE_DIR}/src/core/winrt/*.cpp) -+ set(SOURCE_FILES ${SOURCE_FILES} ${WINRT_SOURCE_FILES}) -+ endif() -+ - if(MSVC) - # Prevent codegen that would use the VC runtime libraries. - set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/GS-") -@@ -1176,7 +1195,11 @@ elseif(WINDOWS) - check_include_file(d3d11_1.h HAVE_D3D11_H) - check_include_file(ddraw.h HAVE_DDRAW_H) - check_include_file(dsound.h HAVE_DSOUND_H) -- check_include_file(dinput.h HAVE_DINPUT_H) -+ if(WINDOWS_STORE) -+ set(HAVE_DINPUT_H 0) -+ else() -+ check_include_file(dinput.h HAVE_DINPUT_H) -+ endif() - check_include_file(xaudio2.h HAVE_XAUDIO2_H) - check_include_file(mmdeviceapi.h HAVE_MMDEVICEAPI_H) - check_include_file(audioclient.h HAVE_AUDIOCLIENT_H) -@@ -1193,12 +1216,14 @@ elseif(WINDOWS) - endif() - - if(SDL_AUDIO) -- set(SDL_AUDIO_DRIVER_WINMM 1) -- file(GLOB WINMM_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/winmm/*.c) -- set(SOURCE_FILES ${SOURCE_FILES} ${WINMM_AUDIO_SOURCES}) -- set(HAVE_SDL_AUDIO TRUE) -+ if(NOT WINDOWS_STORE) -+ set(SDL_AUDIO_DRIVER_WINMM 1) -+ file(GLOB WINMM_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/winmm/*.c) -+ set(SOURCE_FILES ${SOURCE_FILES} ${WINMM_AUDIO_SOURCES}) -+ set(HAVE_SDL_AUDIO TRUE) -+ endif() - -- if(HAVE_DSOUND_H) -+ if(HAVE_DSOUND_H AND NOT WINDOWS_STORE) - set(SDL_AUDIO_DRIVER_DSOUND 1) - file(GLOB DSOUND_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/directsound/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${DSOUND_AUDIO_SOURCES}) -@@ -1208,9 +1233,10 @@ elseif(WINDOWS) - set(SDL_AUDIO_DRIVER_XAUDIO2 1) - file(GLOB XAUDIO2_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/xaudio2/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${XAUDIO2_AUDIO_SOURCES}) -+ set(HAVE_SDL_AUDIO TRUE) - endif() - -- if(HAVE_AUDIOCLIENT_H AND HAVE_MMDEVICEAPI_H) -+ if(HAVE_AUDIOCLIENT_H AND HAVE_MMDEVICEAPI_H AND NOT WINDOWS_STORE) - set(SDL_AUDIO_DRIVER_WASAPI 1) - file(GLOB WASAPI_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/wasapi/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${WASAPI_AUDIO_SOURCES}) -@@ -1222,11 +1248,20 @@ elseif(WINDOWS) - if(NOT SDL_LOADSO) - message_error("SDL_VIDEO requires SDL_LOADSO, which is not enabled") - endif() -- set(SDL_VIDEO_DRIVER_WINDOWS 1) -- file(GLOB WIN_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/windows/*.c) -+ if(WINDOWS_STORE) -+ set(SDL_VIDEO_DRIVER_WINRT 1) -+ file(GLOB WIN_VIDEO_SOURCES -+ ${SDL2_SOURCE_DIR}/src/video/winrt/*.c -+ ${SDL2_SOURCE_DIR}/src/video/winrt/*.cpp -+ ${SDL2_SOURCE_DIR}/src/render/direct3d11/*.cpp -+ ) -+ else() -+ set(SDL_VIDEO_DRIVER_WINDOWS 1) -+ file(GLOB WIN_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/windows/*.c) -+ endif() - set(SOURCE_FILES ${SOURCE_FILES} ${WIN_VIDEO_SOURCES}) - -- if(RENDER_D3D AND HAVE_D3D_H) -+ if(RENDER_D3D AND HAVE_D3D_H AND NOT WINDOWS_STORE) - set(SDL_VIDEO_RENDER_D3D 1) - set(HAVE_RENDER_D3D TRUE) - endif() -@@ -1249,20 +1284,31 @@ elseif(WINDOWS) - endif() - - if(SDL_POWER) -- set(SDL_POWER_WINDOWS 1) -- set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/windows/SDL_syspower.c) -+ if(WINDOWS_STORE) -+ set(SDL_POWER_WINRT 1) -+ set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/winrt/SDL_syspower.cpp) -+ else() -+ set(SDL_POWER_WINDOWS 1) -+ set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/windows/SDL_syspower.c) -+ endif() - set(HAVE_SDL_POWER TRUE) - endif() - - if(SDL_FILESYSTEM) - set(SDL_FILESYSTEM_WINDOWS 1) -- file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/windows/*.c) -+ if(WINDOWS_STORE) -+ file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/winrt/*.cpp) -+ else() -+ file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/windows/*.c) -+ endif() - set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) - set(HAVE_SDL_FILESYSTEM TRUE) - endif() - - # Libraries for Win32 native and MinGW -- list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid) -+ if(NOT WINDOWS_STORE) -+ list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid) -+ endif() - - # TODO: in configure.in the check for timers is set on - # cygwin | mingw32* - does this include mingw32CE? -@@ -1284,7 +1330,7 @@ elseif(WINDOWS) - set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) - - if(SDL_VIDEO) -- if(VIDEO_OPENGL) -+ if(VIDEO_OPENGL AND NOT WINDOWS_STORE) - set(SDL_VIDEO_OPENGL 1) - set(SDL_VIDEO_OPENGL_WGL 1) - set(SDL_VIDEO_RENDER_OGL 1) -@@ -1688,9 +1734,11 @@ endif() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") - - # Always build SDLmain --add_library(SDL2main STATIC ${SDLMAIN_SOURCES}) --target_include_directories(SDL2main PUBLIC $) --set(_INSTALL_LIBS "SDL2main") -+if(NOT WINDOWS_STORE) -+ add_library(SDL2main STATIC ${SDLMAIN_SOURCES}) -+ target_include_directories(SDL2main PUBLIC $) -+ set(_INSTALL_LIBS "SDL2main") -+endif() - - if(SDL_SHARED) - add_library(SDL2 SHARED ${SOURCE_FILES} ${VERSION_SOURCES}) -diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake -index 9b20398..7ae6e35 100644 ---- a/include/SDL_config.h.cmake -+++ b/include/SDL_config.h.cmake -@@ -298,6 +298,7 @@ - #cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@ - #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@ - #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@ -+#cmakedefine SDL_VIDEO_DRIVER_WINRT @SDL_VIDEO_DRIVER_WINRT@ - #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@ - #cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@ - #cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@ -@@ -365,6 +366,7 @@ - #cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@ - #cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@ - #cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@ -+#cmakedefine SDL_POWER_WINRT @SDL_POWER_WINRT@ - #cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@ - #cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@ - #cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@ -@@ -387,7 +389,7 @@ - #cmakedefine SDL_LIBSAMPLERATE_DYNAMIC @SDL_LIBSAMPLERATE_DYNAMIC@ - - /* Platform specific definitions */ --#if !defined(__WIN32__) -+#if !defined(__WIN32__) && !defined(__WINRT__) - # if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H) - typedef unsigned int size_t; - typedef signed char int8_t; +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0128c7a..bd534e4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,6 +5,18 @@ endif() + cmake_minimum_required(VERSION 2.8.11) + project(SDL2 C CXX) + ++if(WINDOWS_STORE) ++ enable_language(CXX) ++ cmake_minimum_required(VERSION 3.11) ++ add_definitions(-DSDL_BUILDING_WINRT=1 -ZW) ++ link_libraries( ++ -nodefaultlib:vccorlib$<$:d> ++ -nodefaultlib:msvcrt$<$:d> ++ vccorlib$<$:d>.lib ++ msvcrt$<$:d>.lib ++ ) ++endif() ++ + # !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property + # !!! FIXME: for the SDL2 shared library (so you get an + # !!! FIXME: install_name ("soname") of "@rpath/libSDL-whatever.dylib" +@@ -1209,6 +1221,11 @@ elseif(WINDOWS) + file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/windows/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) + ++ if(WINDOWS_STORE) ++ file(GLOB WINRT_SOURCE_FILES ${SDL2_SOURCE_DIR}/src/core/winrt/*.c ${SDL2_SOURCE_DIR}/src/core/winrt/*.cpp) ++ list(APPEND SOURCE_FILES ${WINRT_SOURCE_FILES}) ++ endif() ++ + if(MSVC) + # Prevent codegen that would use the VC runtime libraries. + set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/GS-") +@@ -1254,6 +1271,9 @@ elseif(WINDOWS) + check_include_file(ddraw.h HAVE_DDRAW_H) + check_include_file(dsound.h HAVE_DSOUND_H) + check_include_file(dinput.h HAVE_DINPUT_H) ++ if(WINDOWS_STORE OR VCPKG_TARGET_TRIPLET MATCHES "arm-windows") ++ set(HAVE_DINPUT_H 0) ++ endif() + check_include_file(dxgi.h HAVE_DXGI_H) + if(HAVE_D3D_H OR HAVE_D3D11_H OR HAVE_DDRAW_H OR HAVE_DSOUND_H OR HAVE_DINPUT_H) + set(HAVE_DIRECTX TRUE) +@@ -1272,18 +1292,20 @@ elseif(WINDOWS) + check_include_file(endpointvolume.h HAVE_ENDPOINTVOLUME_H) + + if(SDL_AUDIO) ++ if(NOT WINDOWS_STORE) + set(SDL_AUDIO_DRIVER_WINMM 1) + file(GLOB WINMM_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/winmm/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${WINMM_AUDIO_SOURCES}) ++ endif() + set(HAVE_SDL_AUDIO TRUE) + +- if(HAVE_DSOUND_H) ++ if(HAVE_DSOUND_H AND NOT WINDOWS_STORE) + set(SDL_AUDIO_DRIVER_DSOUND 1) + file(GLOB DSOUND_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/directsound/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${DSOUND_AUDIO_SOURCES}) + endif() + +- if(WASAPI AND HAVE_AUDIOCLIENT_H AND HAVE_MMDEVICEAPI_H) ++ if(WASAPI AND HAVE_AUDIOCLIENT_H AND HAVE_MMDEVICEAPI_H AND NOT WINDOWS_STORE) + set(SDL_AUDIO_DRIVER_WASAPI 1) + file(GLOB WASAPI_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/wasapi/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${WASAPI_AUDIO_SOURCES}) +@@ -1295,11 +1317,20 @@ elseif(WINDOWS) + if(NOT SDL_LOADSO) + message_error("SDL_VIDEO requires SDL_LOADSO, which is not enabled") + endif() ++ if(WINDOWS_STORE) ++ set(SDL_VIDEO_DRIVER_WINRT 1) ++ file(GLOB WIN_VIDEO_SOURCES ++ ${SDL2_SOURCE_DIR}/src/video/winrt/*.c ++ ${SDL2_SOURCE_DIR}/src/video/winrt/*.cpp ++ ${SDL2_SOURCE_DIR}/src/render/direct3d11/*.cpp ++ ) ++ else() + set(SDL_VIDEO_DRIVER_WINDOWS 1) + file(GLOB WIN_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/windows/*.c) ++ endif() + set(SOURCE_FILES ${SOURCE_FILES} ${WIN_VIDEO_SOURCES}) + +- if(RENDER_D3D AND HAVE_D3D_H) ++ if(RENDER_D3D AND HAVE_D3D_H AND NOT WINDOWS_STORE) + set(SDL_VIDEO_RENDER_D3D 1) + set(HAVE_RENDER_D3D TRUE) + endif() +@@ -1322,20 +1353,31 @@ elseif(WINDOWS) + endif() + + if(SDL_POWER) ++ if(WINDOWS_STORE) ++ set(SDL_POWER_WINRT 1) ++ set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/winrt/SDL_syspower.cpp) ++ else() + set(SDL_POWER_WINDOWS 1) + set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/windows/SDL_syspower.c) ++ endif() + set(HAVE_SDL_POWER TRUE) + endif() + + if(SDL_FILESYSTEM) + set(SDL_FILESYSTEM_WINDOWS 1) ++ if(WINDOWS_STORE) ++ file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/winrt/*.cpp) ++ else() + file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/windows/*.c) ++ endif() + set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) + set(HAVE_SDL_FILESYSTEM TRUE) + endif() + + # Libraries for Win32 native and MinGW ++ if(NOT WINDOWS_STORE) + list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 setupapi shell32) ++ endif() + + # TODO: in configure.ac the check for timers is set on + # cygwin | mingw32* - does this include mingw32CE? +@@ -1357,7 +1399,7 @@ elseif(WINDOWS) + set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) + + if(SDL_VIDEO) +- if(VIDEO_OPENGL) ++ if(VIDEO_OPENGL AND NOT WINDOWS_STORE) + set(SDL_VIDEO_OPENGL 1) + set(SDL_VIDEO_OPENGL_WGL 1) + set(SDL_VIDEO_RENDER_OGL 1) +@@ -1788,12 +1830,14 @@ endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") + + # Always build SDLmain ++if(NOT WINDOWS_STORE) + add_library(SDL2main STATIC ${SDLMAIN_SOURCES}) + target_include_directories(SDL2main PUBLIC "$" $) + set(_INSTALL_LIBS "SDL2main") + if (NOT ANDROID) + set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX}) + endif() ++endif() + + if(SDL_SHARED) + add_library(SDL2 SHARED ${SOURCE_FILES} ${VERSION_SOURCES}) +diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake +index 48dd2d4..0c4fa28 100644 +--- a/include/SDL_config.h.cmake ++++ b/include/SDL_config.h.cmake +@@ -326,6 +326,7 @@ + #cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@ + #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@ + #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@ ++#cmakedefine SDL_VIDEO_DRIVER_WINRT @SDL_VIDEO_DRIVER_WINRT@ + #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@ + #cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@ + #cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@ +@@ -391,6 +392,7 @@ + #cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@ + #cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@ + #cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@ ++#cmakedefine SDL_POWER_WINRT @SDL_POWER_WINRT@ + #cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@ + #cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@ + #cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@ +@@ -413,7 +415,7 @@ + #cmakedefine SDL_LIBSAMPLERATE_DYNAMIC @SDL_LIBSAMPLERATE_DYNAMIC@ + + /* Platform specific definitions */ +-#if !defined(__WIN32__) ++#if !defined(__WIN32__) && !defined(__WINRT__) + # if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H) + typedef unsigned int size_t; + typedef signed char int8_t; diff --git a/cmake/ports/sdl2/fix-arm64-headers.patch b/cmake/ports/sdl2/fix-arm64-headers.patch new file mode 100644 index 0000000000..862b65f0b5 --- /dev/null +++ b/cmake/ports/sdl2/fix-arm64-headers.patch @@ -0,0 +1,14 @@ +--- a/include/SDL_cpuinfo.h Tue Jul 23 21:41:00 2019 -0400 ++++ b/include/SDL_cpuinfo.h Tue Aug 13 20:26:27 2019 -0700 +@@ -73,8 +73,8 @@ + # define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ + # endif + # if defined (_M_ARM64) +-# include +-# include ++# include ++# include + # define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ + # endif + # endif + \ No newline at end of file diff --git a/cmake/ports/sdl2/fix-space-in-path.patch b/cmake/ports/sdl2/fix-space-in-path.patch new file mode 100644 index 0000000000..ed7a1e7125 --- /dev/null +++ b/cmake/ports/sdl2/fix-space-in-path.patch @@ -0,0 +1,24 @@ +diff -ur a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2019-07-23 21:41:00.000000000 +0200 ++++ b/CMakeLists.txt 2019-10-27 20:26:38.000000000 +0100 +@@ -257,7 +257,7 @@ + # General includes + include_directories(${SDL2_BINARY_DIR}/include ${SDL2_SOURCE_DIR}/include) + if(USE_GCC OR USE_CLANG) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -idirafter ${SDL2_SOURCE_DIR}/src/video/khronos") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -idirafter \"${SDL2_SOURCE_DIR}/src/video/khronos\"") + else() + include_directories(${SDL2_SOURCE_DIR}/src/video/khronos) + endif() +diff -ur a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake +--- a/cmake/sdlchecks.cmake 2019-07-23 21:41:00.000000000 +0200 ++++ b/cmake/sdlchecks.cmake 2019-10-27 20:27:10.000000000 +0100 +@@ -1086,7 +1086,7 @@ + set(HAVE_SDL_JOYSTICK TRUE) + file(GLOB HIDAPI_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/hidapi/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${HIDAPI_SOURCES}) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS} -I${SDL2_SOURCE_DIR}/src/hidapi/hidapi") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS} \"-I${SDL2_SOURCE_DIR}/src/hidapi/hidapi\"") + if(NOT HIDAPI_SKIP_LIBUSB) + set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/hidapi/libusb/hid.c) + list(APPEND EXTRA_LIBS ${LIBUSB_LIBS}) diff --git a/cmake/ports/sdl2/fix-x86-windows.patch b/cmake/ports/sdl2/fix-x86-windows.patch new file mode 100644 index 0000000000..853b68722c --- /dev/null +++ b/cmake/ports/sdl2/fix-x86-windows.patch @@ -0,0 +1,15 @@ +diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c +index ff23c5e..fc90bba 100644 +--- a/src/events/SDL_mouse.c ++++ b/src/events/SDL_mouse.c +@@ -20,6 +20,10 @@ + */ + #include "../SDL_internal.h" + ++#ifdef __WIN32__ ++#include "../core/windows/SDL_windows.h" ++#endif ++ + /* General mouse handling code for SDL */ + + #include "SDL_assert.h" diff --git a/cmake/ports/sdl2/portfile.cmake b/cmake/ports/sdl2/portfile.cmake index 5d7ac5314d..39ae733022 100644 --- a/cmake/ports/sdl2/portfile.cmake +++ b/cmake/ports/sdl2/portfile.cmake @@ -3,29 +3,33 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO SDL-Mirror/SDL - REF release-2.0.8 - SHA512 5922dbeb14bb22991160251664b417d3f846867c18b5ecc1bd19c328ffd69b16252b7d45b9a317bafd1207fdb66d93a022dfb239e02447db9babd941956b6b37 + REF release-2.0.10 + SHA512 c5fe59eed7ba9c6a82cceaf513623480793727fceec84b01d819e7cbefc8229a84be93067d7539f12d5811c49d3d54fd407272786aef3e419f439d0105c34b21 HEAD_REF master -) - -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} PATCHES - ${CMAKE_CURRENT_LIST_DIR}/export-symbols-only-in-shared-build.patch - ${CMAKE_CURRENT_LIST_DIR}/enable-winrt-cmake.patch + export-symbols-only-in-shared-build.patch + enable-winrt-cmake.patch + fix-arm64-headers.patch + disable-hidapi-for-uwp.patch + fix-space-in-path.patch ) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" SDL_STATIC) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" SDL_SHARED) string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" FORCE_STATIC_VCRT) +set(VULKAN_VIDEO OFF) +if("vulkan" IN_LIST FEATURES) + set(VULKAN_VIDEO ON) +endif() + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS -DSDL_STATIC=${SDL_STATIC} -DSDL_SHARED=${SDL_SHARED} - -DVIDEO_VULKAN=OFF + -DVIDEO_VULKAN=${VULKAN_VIDEO} -DFORCE_STATIC_VCRT=${FORCE_STATIC_VCRT} -DLIBC=ON ) @@ -33,11 +37,11 @@ vcpkg_configure_cmake( vcpkg_install_cmake() if(EXISTS "${CURRENT_PACKAGES_DIR}/cmake") - vcpkg_fixup_cmake_targets(CONFIG_PATH "cmake") + vcpkg_fixup_cmake_targets(CONFIG_PATH cmake) elseif(EXISTS "${CURRENT_PACKAGES_DIR}/lib/cmake/SDL2") - vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/SDL2") + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/SDL2) elseif(EXISTS "${CURRENT_PACKAGES_DIR}/SDL2.framework/Resources") - vcpkg_fixup_cmake_targets(CONFIG_PATH "SDL2.framework/Resources") + vcpkg_fixup_cmake_targets(CONFIG_PATH SDL2.framework/Resources) endif() file(REMOVE_RECURSE @@ -75,5 +79,6 @@ if(NOT VCPKG_CMAKE_SYSTEM_NAME) endforeach() endif() -file(INSTALL ${SOURCE_PATH}/COPYING.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/sdl2 RENAME copyright) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) +configure_file(${SOURCE_PATH}/COPYING.txt ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY) vcpkg_copy_pdbs() diff --git a/cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake b/cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake new file mode 100644 index 0000000000..c99178db1a --- /dev/null +++ b/cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,8 @@ +_find_package(${ARGS}) +if(TARGET SDL2::SDL2 AND NOT TARGET SDL2::SDL2-static) + add_library( SDL2::SDL2-static INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2-static PROPERTIES INTERFACE_LINK_LIBRARIES "SDL2::SDL2") +elseif(TARGET SDL2::SDL2-static AND NOT TARGET SDL2::SDL2) + add_library( SDL2::SDL2 INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES "SDL2::SDL2-static") +endif() From bc17febb3f986fe9f897907b1abbd26b3dffe822 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 8 Dec 2019 21:05:16 -0500 Subject: [PATCH 074/396] updated Readme.MD for new whitelist instructiosn --- README.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a4d04b8254..d111667007 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ ### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) -#### Changes for **v0.86.0 K1** consist of: +#### Changes for **v0.86.0** consist of: + +#### Added in K1 (12/3/19) * Audio Buffer choppy audio bugfix by increasing the buffer size. * User Activity Logger disabled, option in code to log the reports to console. @@ -11,13 +13,21 @@ * Entity Script Whitelist, no scripts are whitelisted by default. * Background CMD outputs full log, instant close of application on closing of the CMD-line. +#### Added in K2 (12/8/19) + +* QML Interface to access and save whitelist live to interface.json +* Add "VideoDecodeStats" to .gitignore +* Fix VCPKG SDL2 to port files from 2.0.8 to 2.0.10 to fix CMake build issues. + This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. ### Whitelist Instructions The whitelist checks every entity-script attempting to run on your client against a list of domains, their subfolders, or the specific script URL entirely. -The **Start** batch file launches and sets the whitelist environment variable for you (you have to edit in your whitelisted domains), however if you launch interface.exe directly then you must set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" +The Interface has the whitelist settings under "**Settings -> Entity Script Whitelist**" for you to configure live. The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. + +You can also set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" Alternatively you can make a batch file placed in the same folder as interface.exe that sets the whitelist environment variable temporarily: @@ -26,10 +36,6 @@ set "EXTRA_WHITELIST=http://mpassets.highfidelity.com/,https://raw.githubusercon interface.exe ``` -By default, we are whitelisting High Fidelity's current known CDN domains so we can see their own/hosted entity-script related content. - -The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. - ### Boot to Metaverse: The Goal Too many of us have our own personal combinations of High Fidelity from C++ modifications to different default scripts, all of which are lost to time as their fullest potential is never truly shared and propagated through the system. From f49e64b99f8829221caa83cfe7324b87d7487e6f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 8 Dec 2019 21:12:20 -0500 Subject: [PATCH 075/396] Cleaned out extra commented code. --- .../hifi/dialogs/security/EntityScriptWhitelist.qml | 4 ---- libraries/script-engine/src/ScriptEngine.cpp | 12 ------------ 2 files changed, 16 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml index 45a8368ce4..ba3f27788d 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml @@ -24,8 +24,6 @@ Rectangle { function getWhitelistAsText() { var whitelist = Settings.getValue("private/settingsSafeURLS"); - // var arrayWhitelist = whitelist.split(/\s*,\s*/); - // var whitelistText = arrayWhitelist.join("\n"); return whitelist; } @@ -86,10 +84,8 @@ Rectangle { Button { id: saveChanges - // anchors.top: whitelistTextArea.bottom; anchors.topMargin: 5; anchors.leftMargin: 20; - // anchors.right: whitelistTextArea.right; anchors.rightMargin: 20; x: textAreaRectangle.x + textAreaRectangle.width - width - 5; y: textAreaRectangle.y + textAreaRectangle.height - height; diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 78b483e3b3..d8d593df32 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2370,21 +2370,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); - // qDebug() << "raw value" << raw; - // qDebug() << "raw value as list" << raw.toList(); QStringList settingsSafeURLS = raw.toString().split(QRegExp("[\r\n]+")); safeURLS += settingsSafeURLS; - // QVariantList settingsSafeURLS = Setting::Handle("private/settingsSafeURLS").get(); - // qCDebug(scriptengine) << "ESWsafeURLS" << safeURLS; - - // for (QVariantList::iterator surl = settingsSafeURLS.begin(); surl != settingsSafeURLS.end(); surl++) - // { - // safeURLS += (*surl).toString(); - // } - - // for (const auto& s : settingsSafeURLS) safeURLS << s.toString(); - // END PULL SAFEURLS FROM INTERFACE.JSON Settings bool isInWhitelist = false; // assume unsafe From fe66dc82f3d242d019f6eb44922e07f5c7ee9b9f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 8 Dec 2019 23:11:21 -0500 Subject: [PATCH 076/396] scriptengine pulls from inferface.json correctly, removed extra debug, fixed QML to load to textarea correctly. --- .../qml/hifi/dialogs/security/EntityScriptWhitelist.qml | 6 +++--- libraries/script-engine/src/ScriptEngine.cpp | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml index ba3f27788d..b79dfe512c 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml @@ -24,13 +24,13 @@ Rectangle { function getWhitelistAsText() { var whitelist = Settings.getValue("private/settingsSafeURLS"); - return whitelist; + var arrayWhitelist = whitelist.split(","); + var whitelistText = arrayWhitelist.join("\n"); + return whitelistText; } function setWhiteListAsText(whitelistText) { - console.info('SETTINGCURRENTVALUE: ', Settings.getValue('private/settingsSafeURLS'), whitelistText.text) Settings.setValue("private/settingsSafeURLS", whitelistText.text); - console.info('SETVALUE: ', Settings.getValue('private/settingsSafeURLS'), whitelistText.text) } anchors.fill: parent diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index d8d593df32..2ffe4d1dd3 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2370,7 +2370,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); - QStringList settingsSafeURLS = raw.toString().split(QRegExp("[\r\n]+")); + QStringList settingsSafeURLS = raw.toString().split(QRegExp("\\s*[,\r\n]+\\s*")); safeURLS += settingsSafeURLS; // END PULL SAFEURLS FROM INTERFACE.JSON Settings @@ -2378,10 +2378,11 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co bool isInWhitelist = false; // assume unsafe for (const auto& str : safeURLS) { // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str; - qCDebug(scriptengine) << "SCRIPT URL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + qCDebug(scriptengine) << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); if (scriptOrURL.startsWith(str)) { isInWhitelist = true; + qCDebug(scriptengine) << "Script approved."; break; // bail early since we found a match } } From 5fe27cdfc9b7dede64aaf1d1fa14b0636fa22e0c Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 8 Dec 2019 23:50:09 -0500 Subject: [PATCH 077/396] Added github link to about --- .../resources/qml/hifi/dialogs/TabletAboutDialog.qml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 87f307b9bc..4d57d7074c 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -58,6 +58,18 @@ Rectangle { onLinkActivated: { HiFiAbout.openUrl("https:/www.highfidelity.com"); } + + } + RalewayRegular { + textFormat: Text.StyledText + linkColor: "#00B4EF" + color: "white" + text: "HiFi Community Github." + size: 20 + onLinkActivated: { + HiFiAbout.openUrl("https:/github.com/kasenvr/hifi-community"); + } + } Item { height: 40; width: 1 } Row { From 2de388ab3b9c425fb4bdb34ce6d225769e590ed4 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 9 Dec 2019 01:20:04 -0500 Subject: [PATCH 078/396] Fixes bug where empty "" whitespace allows all scripts. --- libraries/script-engine/src/ScriptEngine.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 2ffe4d1dd3..47a417026c 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2363,24 +2363,23 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } } else { - // IF YOU FUCK UP, DELETE FROM HERE TO... - QList safeURLS = { "https://FAKEURL.t43wt4g4g44FAKE" }; - safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); + // ENTITY SCRIPT WHITELIST STARTS HERE + QList safeURLS = { "" }; + safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); - QStringList settingsSafeURLS = raw.toString().split(QRegExp("\\s*[,\r\n]+\\s*")); + QStringList settingsSafeURLS = raw.toString().trimmed().split(QRegExp("\\s*[,\r\n]+\\s*"), QString::SkipEmptyParts); safeURLS += settingsSafeURLS; // END PULL SAFEURLS FROM INTERFACE.JSON Settings bool isInWhitelist = false; // assume unsafe for (const auto& str : safeURLS) { - // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str; qCDebug(scriptengine) << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); - if (scriptOrURL.startsWith(str)) { + if (!str.isEmpty() && scriptOrURL.startsWith(str)) { isInWhitelist = true; qCDebug(scriptengine) << "Script approved."; break; // bail early since we found a match @@ -2410,7 +2409,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co exception = testConstructor; } } - // DELETE UP TO HERE, THEN UNCOMMENT BELOW. + // ENTITY SCRIPT WHITELIST ENDS HERE, uncomment below for original full disabling. // qDebug() << "(disabled entity script)" << entityID.toString() << scriptOrURL; // exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); From 3e6660b63325d568beec3f1ae2cf65fd706010c6 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 9 Dec 2019 08:30:02 -0500 Subject: [PATCH 079/396] Updated whitelist debugs for clarity in dev log --- libraries/script-engine/src/ScriptEngine.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 47a417026c..482bde9fd4 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2364,6 +2364,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } else { // ENTITY SCRIPT WHITELIST STARTS HERE + QString whitelistPrefix = "[WHITELIST ENTITY SCRIPTS]"; QList safeURLS = { "" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); @@ -2377,16 +2378,16 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co bool isInWhitelist = false; // assume unsafe for (const auto& str : safeURLS) { - qCDebug(scriptengine) << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); if (!str.isEmpty() && scriptOrURL.startsWith(str)) { isInWhitelist = true; - qCDebug(scriptengine) << "Script approved."; + qCDebug(scriptengine) << whitelistPrefix << "Script approved."; break; // bail early since we found a match } } if (!isInWhitelist) { - qCDebug(scriptengine) << "(disabled entity script)" << entityID.toString() << scriptOrURL; + qCDebug(scriptengine) << whitelistPrefix << "(disabled entity script)" << entityID.toString() << scriptOrURL; exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); } else { QTimer timeout; From 68443f878b291d93720b70f14c25cbf2460931a1 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 9 Dec 2019 18:06:33 -0500 Subject: [PATCH 080/396] Update Application.cpp updated application name. --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ad82f4ac66..9c60139d06 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7029,7 +7029,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen Community Edition v0.86.0 K1 - " + QString buildVersion = " - Kasen Community Edition v0.86.0 K2 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 297e039de5268619f2b0e17828a722bd7ab9da0e Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 9 Dec 2019 19:57:57 -0500 Subject: [PATCH 081/396] Added a confirmation message + instructions to the QML. --- .../security/EntityScriptWhitelist.qml | 63 ++++++++++++++++++- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml index b79dfe512c..e5c3c10176 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml @@ -29,10 +29,32 @@ Rectangle { return whitelistText; } - function setWhiteListAsText(whitelistText) { + function setWhitelistAsText(whitelistText) { Settings.setValue("private/settingsSafeURLS", whitelistText.text); + + var originalSetString = whitelistText.text; + var originalSet = originalSetString.split(' ').join(''); + + var check = Settings.getValue("private/settingsSafeURLS"); + var arrayCheck = check.split(","); + var textCheck = arrayCheck.join("\n"); + + if(textCheck == originalSet) { + setWhitelistSuccess(true); + } else { + setWhitelistSuccess(false); + } } + function setWhitelistSuccess(success) { + if(success) { + notificationText.text = "Successfully saved settings."; + } else { + notificationText.text = "Error! Settings not saved."; + } + } + + anchors.fill: parent width: parent.width; height: 120; @@ -74,6 +96,7 @@ Rectangle { TextArea { id: whitelistTextArea text: getWhitelistAsText(); + onTextChanged: notificationText.text = ""; width: parent.width; height: parent.height; font.family: "Ubuntu"; @@ -87,7 +110,7 @@ Rectangle { anchors.topMargin: 5; anchors.leftMargin: 20; anchors.rightMargin: 20; - x: textAreaRectangle.x + textAreaRectangle.width - width - 5; + x: textAreaRectangle.x + textAreaRectangle.width - width - 15; y: textAreaRectangle.y + textAreaRectangle.height - height; contentItem: Text { text: saveChanges.text @@ -100,7 +123,41 @@ Rectangle { elide: Text.ElideRight } text: "Save Changes" - onClicked: setWhiteListAsText(whitelistTextArea) + onClicked: setWhitelistAsText(whitelistTextArea) + + HifiStylesUit.RalewayRegular { + id: notificationText; + text: "" + // Text size + size: 14; + // Style + color: "white"; + elide: Text.ElideLeft; + // Anchors + anchors.right: parent.right; + anchors.rightMargin: 130; + } + } + + HifiStylesUit.RalewayRegular { + id: descriptionText; + text: "Separate your URLs by line, not commas. Example: + https://google.com/ + https://bing.com/ + https://mydomain.here/ + \nEnsure there are no spaces or whitespace." + // Text size + size: 16; + // Style + color: "white"; + elide: Text.ElideRight; + // Anchors + anchors.top: parent.bottom; + anchors.topMargin: 90; + anchors.left: parent.left; + anchors.leftMargin: 20; + anchors.right: parent.right; + anchors.rightMargin: 20; } } } \ No newline at end of file From af4c0ea0d10837a30781b2f6d025a0d34fc4b039 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Tue, 10 Dec 2019 11:33:17 -0600 Subject: [PATCH 082/396] Removes the environment variable requirement for procedural material shaders. Signed-off-by: Marcus Llewellyn --- libraries/render-utils/src/MeshPartPayload.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 9b42139892..6359c14896 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -23,8 +23,8 @@ #include "RenderPipelines.h" -static const QString ENABLE_MATERIAL_PROCEDURAL_SHADERS_STRING { "HIFI_ENABLE_MATERIAL_PROCEDURAL_SHADERS" }; -static bool ENABLE_MATERIAL_PROCEDURAL_SHADERS = QProcessEnvironment::systemEnvironment().contains(ENABLE_MATERIAL_PROCEDURAL_SHADERS_STRING); +// static const QString ENABLE_MATERIAL_PROCEDURAL_SHADERS_STRING { "HIFI_ENABLE_MATERIAL_PROCEDURAL_SHADERS" }; +// static bool ENABLE_MATERIAL_PROCEDURAL_SHADERS = QProcessEnvironment::systemEnvironment().contains(ENABLE_MATERIAL_PROCEDURAL_SHADERS_STRING); bool MeshPartPayload::enableMaterialProceduralShaders = false; @@ -471,7 +471,7 @@ void ModelMeshPartPayload::render(RenderArgs* args) { if (!_drawMaterials.empty() && _drawMaterials.top().material && _drawMaterials.top().material->isProcedural() && _drawMaterials.top().material->isReady()) { - if (!(enableMaterialProceduralShaders && ENABLE_MATERIAL_PROCEDURAL_SHADERS)) { + if (!(enableMaterialProceduralShaders)) { return; } auto procedural = std::static_pointer_cast(_drawMaterials.top().material); From bf54782ca75bf983311c4d794b4c17f6fdd61564 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Tue, 10 Dec 2019 20:07:51 -0500 Subject: [PATCH 083/396] Update INSTALL.md Added an interim step for server-console-npm, worked for Darling, untested by any others so far. --- INSTALL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INSTALL.md b/INSTALL.md index bcbf93eef3..a2c3a95f04 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -62,6 +62,7 @@ To produce an executable installer on Windows, the following are required: 1. Perform a clean cmake from a new terminal. 1. Open the `hifi.sln` Solution and select the Release configuration. 1. Build the Solution. +1. Build `packaged-server-console-npm-install` (found under **hidden/Score Console** 1. Build `packaged-server-console` (found under **Server Console**) This will add 2 folders to `build\server-console\` - `server-console-win32-x64` and `x64` From 2ba680fcf154d43fe398f2d7fc89603103b1ae84 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Tue, 10 Dec 2019 20:11:52 -0500 Subject: [PATCH 084/396] Update INSTALL.md typo --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index a2c3a95f04..a1532674c3 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -62,7 +62,7 @@ To produce an executable installer on Windows, the following are required: 1. Perform a clean cmake from a new terminal. 1. Open the `hifi.sln` Solution and select the Release configuration. 1. Build the Solution. -1. Build `packaged-server-console-npm-install` (found under **hidden/Score Console** +1. Build `packaged-server-console-npm-install` (found under **hidden/Score Console**) 1. Build `packaged-server-console` (found under **Server Console**) This will add 2 folders to `build\server-console\` - `server-console-win32-x64` and `x64` From 27debcc2194e1d17812e0ac2604ab40716b64ccf Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Tue, 10 Dec 2019 20:12:17 -0500 Subject: [PATCH 085/396] Update INSTALL.md --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index a1532674c3..97d4a1e139 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -62,7 +62,7 @@ To produce an executable installer on Windows, the following are required: 1. Perform a clean cmake from a new terminal. 1. Open the `hifi.sln` Solution and select the Release configuration. 1. Build the Solution. -1. Build `packaged-server-console-npm-install` (found under **hidden/Score Console**) +1. Build `packaged-server-console-npm-install` (found under **hidden/Server Console**) 1. Build `packaged-server-console` (found under **Server Console**) This will add 2 folders to `build\server-console\` - `server-console-win32-x64` and `x64` From e098dbda7f8239cdcd2c0004860cf461a179ac69 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 11 Dec 2019 09:21:43 -0600 Subject: [PATCH 086/396] Change interface icons to Kasen logo. We probably don't want to continue with High Fidelity's "voxel" icon for the interface. This changes them to the Kasen logo. Tested on: Windows 10 Pro 1909 build 18363.476 CMake 3.16.0 Microsoft Visual Studio Community 2019 Version 16.4.0 --- interface/icon/interface-beta.icns | Bin 212135 -> 72980 bytes interface/icon/interface-beta.ico | Bin 26687 -> 287934 bytes interface/icon/interface.icns | Bin 212135 -> 72980 bytes interface/icon/interface.ico | Bin 26687 -> 287934 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/interface/icon/interface-beta.icns b/interface/icon/interface-beta.icns index 8dadfd50376cb3f1fda6114dc2c4b4f8b218758e..1fe162f88eb5f4b4bfbdbbabfc3910ec9a3adb40 100644 GIT binary patch literal 72980 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

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx literal 212135 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̓CD3`2WI*m)}f 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 z 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�N#U({jvxfB z9?Oa}^`$s9%C1gnbe|FEI3tK(`%$SM64`L108|JTuJ;+68%Im({E|2?NWKz zLWU6Wej>xq=0Yyh5gZ~2?zcZCP1Ir8F0V0K$tcGC;rWCN6>FVK+2Q0oX_sBc;NT~= zT;K7`Rjk<~z-hbvM*9X6NL@FQP7BRwPuyG|74qXBH&9R)vgkRe+=PBt zj_SX^>Y!r>p5EPSI;_oq!EFa3M%!49Y7jci7(n>vY?05A8})V#PWAVA)<2{)Ry2U+ zogtNcIhC;Cm3hM0T6m_A`zS+N9!RmRXw=;7Mgb~^IuLqr;!8WqLcLhkJukO$LLpvH zVU6e|YDa`l;xywL3N z#qsgBXt4zR)@gGnj1BJ|8`S?kcS={B1|D{eXzn>~K0$1VM)tX3a7j#(i<(o4m6&kr z^EXo9pz;Fn51Rg;{8st}d|g<|i>A*v^u8`Wzx11DW1E+SSz|w`&-B;|*QHH+6p+q> zXRX9(Wjy&ZeeEKi`FdSwtuDD46|3vaSdl<2nc*_P1${JTw;u03Bdx zA1X3%ETd{|BXz#GU6vhUDzSOT`FC?E`{4zJVl`D<0ILfgfWMC-7B@mr6osGE;e*D) zzKY*Z6k(71w@8@JnCOjh0Z#_)liS*Ex_Mx4D~)iL1kJ`#sIUV^0kZjL0?5h7NX+%^ z;Q_VaDffyQlk;L+7b=f8r9C-xdtUV|+|U+shN9h70VoM6e{W0WzQ4#;7lyLGefct} zou7hMq_U^UHjY)YECzZzBt73YO($7aLy#slI!7FDfR2OCbVm*)FA9K&&wC~>k;i0+ zMsblUm!G~U8ndv~ZtzSw|2S(~+GoOZKuhKwZySlZ=NT6?qvJ3m3O8Z02 zRtwx!fFeZiCBw-+-M@V~H3XTGrXfG&{XA=V- z`9`DjS}9F-VBF=Ude+E(^TW>#LQea8w-BIhP%kC>Q7kAh5eiD(q-JI7kq9%i3q33t zP1L|)uxcJX7<>@j$!u?CCaP*qr#_~3>JB}W0~`Jr_n#c~L_87=gfQ|XlJP+xHR!6W z^KI~x!EizHWtx`rQkzM0pBil?mJ@bM?B>oK=7%T0Md66l_ZcGqdLGk+FI9@$yO6%{p){`F<7>Co}{*r1s--Sg8Y zytRTXq*U_t2UByaIo{D*rCMSRL!Xz2C#f?bvTeNeOU{w&8JHlleM<6woQc8_HJRrW z?H$#6iz^fYFcK5vUuL#GEMoJ&mI*+ppV&u1z88?`()j*7Fi!Xh$$gsDTUC2=VQaSV zg)2YoZpUxljF(vJFz}%GL8$OIhl_b29}}3ZTXnx#xsQzMi6RgZD08Ty29cNvH~6Fj z_Pn8`)m!i9)=MRb&KvPQm2(e5>Y#%iApBgB<2%Zd zev8UT+&O)5t4G2R)j(N2n30N{t=$@U-~BERO!`2bYklP@-I0zV)Bup+kP{w`0iY-Y zH2r4QvS-b=J?wSk$&%f^u`2XHsZZUNefHZ6#!ATaV|c^dW&D*yc{*mvb+wedEX>NS znO8PV!Ho94|#Ki@MMm+&Tf^U4O3q?sOMdw|-sRfy2>N1@Hz-j7eJ)wzBslpG^o$s&?an!8%1CBXRjA zwcxSN6_UCd>@mw(f-F5}y_03lR=x9Cvx(m7@aDgfdO8Y(lK*BL(b*yBZQTVEYDu~5TyDz)OX*ORi|9$)5+wTfN}#B_z#)J ziSmbtz;2vHEc~tidc*UbWoDVGWScZHWesY$LZlsqdHfumP;;FEUP^Xx+fOYR=mJ)VWAPVK)Nx8MXUm)221F(BPvtEzV`0MGxZ}P) z$*L@Y$mFBK+zBRPN-fGZN=gNQY&FrchvT~%Lll%btfQo1HqCaK#&OZx-$qM4IY{$6 zuBT|Bv6^c~g=CjIyB`y;xjY|IoYi!!p)V5FhsLtEQ~-7sA!0i+yZ=>pvD55$?=Gw; zUiaYZ<3TXT8Dj^=zqdY0b`UUB6QB`+PVE^Qz<)Z@GJ1N!#jj4!ox?{t_jXg;w)4}! zV=t*4csTESg`KE}k!SRczyua}QFXa04c)SL%ESGE~hPTeORC*c+_NLPM zd@b}H%ewA8O?{Fiy-0{-%4BGS?;^?w3US`BzRN z#7;si-oqv`NDQHzoFq5*HMK@!h|I~W`7dmzGBT+G-1_EKHf&D4Z%$iiKC6dZX}tU= zqFHf*n#P+I34{%hh)M z$-&wh0HDK%6kjzY#^F3weO=i7XJenIW>fdXys?kj`_!myZ)rw`fkVQq5V_?s9DHG~?}hMuirUp@Mo**4y%ZgIzXn}mP7GhD{rds*r*v{Jc^qzV17 zLE$hvOje7m6TgQ!-%kg8eNt;Vef5^=LZ!!e&BuL8sr|FZh~jQo(o5slv77vz z6EWye?&~|XGLenovWX`)nOigIN%MoawRC}*Gsy$q_=Zh=k3ft?82DWG!72(b2EwoU z?2~ao)d@0igY&VI1A+wHt0ZXQMn!e2R)uW-ZsN~l>|SeQy@mnm4vM)9!}%I4})}DT)7Ng*Gm3^>yZD4 zi!1Smvi;uAjKSElWQ&Tj@3OVnMx{dbvah8OqLiJPAymk|lr^%GeJL~}Nwz3!*2!A- zeK5=O`;2N??gYQtf(?j5Sx0^a{bK*M%%)dFB z96GiY)}~3tXUGhtt)k2@N<*`e4{-(4d2DvOBN>?_pew>Hu7_|4T+c}Ogg(~FIP4hz zoJ&@Mjz9kyO|pWwj*ShZ>ooth124`Rw)D~s;SvbuA8vbXu@S8G32;#+$E z8^7!0n6+=B*KK>dum0o*&<{_q)tjR5qa99W*!!o}j2Tv9S!8qI(CK|CzP=BOBPV-h z_B0zD1y(A@ncfT0{4Gx8SrLGbuvHo(1kNr_Ns*`xXLzrkhLduaz(+=#P|$WCg+2Ptom%FlN! zpQm3Xa?AE|;_CuR<=K&foz8%~4(e>;&jQ|hA%0Uc9ZiXSr+!+)?($K_pn^u*IPBGq zw)85)XTWtKv(L7CMMog;fHM?j%Up{g9Fc{k`xHwaEtV*qtJ6&?QN1O-q%?117!96m zlHHHZ{Sz?^8ev2kUyH(Rdk!M|+X-yuO`h+5iM4)rh&?WW*Mborqa^NQvju~FeW@O` zw!qRZqucI;PR(kxQ(9{QVieDy=i>_lV72jx<4ZDUY}|8NkR>)`0lxvlE9$q#P2j63 zccG$wucR3NgN_n5jKyax0I$9lWYK(LgQj=&Lwc+)7~YXzU1s|kq?%1Gu?T|PHBG#m zFqe2hXCzQa%1V$P0HCc``B%1A2fM!M4Dm=NuawKK2j6?pVMRW_O+33GWY9V79?@#5 zqs@4L>-70?$l3V)Qv7Pgz`A=-K~2EesCq#YzB;4#c9vlXY)&B;moi1YD@IebA!PR5 z!sfMol@GNFTDsxXVaC$H4|Z!BbZyED>!=>JTCir=Y@68tv+otzAfxbYYcfq&@~=?L zm2uflb8&mGlE3%#rcF<<&leP*@S5sN;?X!NKMpNB#7QbHA*c^CI`uhMIieAWrNG0E z=KvI8u6Q;v6!GBbQ)_Z~*^S{x55uiUc$YW%e2d77N}yiTuCKSjpHLxc3!Pxj(!LUu zxRH00J5LA*C|PcJ&J~j!jz|xqlXP;kScf*+BJ>`jGmUzCPRCeopEo%W=NyN?P;o9s z;xP1gL7W~ac*pbXj(K7*VRp$nYF)j^2@Dqk6be4S{9dA1bI@Q!I|`Riag=W~W5peI z`TFPd=st&6s}d>?0fQs z+ut6QzUxfc|~s^nL%7ef>(nL z;x3QNEZ%O!jFCYz8D}<#YuPymNjL|5q0d_N&ef;%e>~6vUJ_*Wga?ibfn89RGDK83 zEOE5M`sDV*6T<`PxJfrRJQgSjHJ$7IENPy?oBohQyybdHE-O5>(p_%(tBg_%3$qQj4^3M3Asr*0~$6|^hqqR!RGX61OOeSB<0am6cjsRX>3&K}4uI9BU>DlDH~cKZF!+luH%4;XzLi`?ozYb~ zCtU^R4H7ucD?$JxdUT|t zeW}ctzgg(4DB8}%GKi(w>9~sR$bnl$C z?ITdrZX4Y!`{aJ(Jo0?Oftcvx>9u-CM3!ShUVhEA_^sqYeeul1%d**l0@P0KQ#RBKQps&c zJ8#XHDm>XhS&>O;-9a-#e`%|%HMpeuYa>4+#bS>MOSd{kqzr4<;%ZFX)Sy|}#`!&{ zO7BFk?k7*ULrr=e(s&IkvEjL>!7kePIrlP)s2jA=F4>Dlgv?vn(UJ)lT<-0^ zw|Q}7k>eMy9I;`Gr(bLuqb*}(ufdsi(M<*t=vLzVX=yq0<%tD(WjQ;OR1uX=JGJ!Q z;Q-78?z5>L^I+9sjF#sl?l$$gSvqQZ1>S!7`=S||{4zbLUg^c*N4T`AD<^ex~J}p!} zR+<#EZo4NdMX1zV?*fcu?(AOO@MchSL66`UTfAayd-6{)A!wT-7$Zfl%||^8j)(Rt8rM=cTLiX8!XMdUK*FE;XGymZhFs783i%fjSGz>V<{mBj(&U`o0-A>p9L&a-0^Z^| zpU#l^hNWh`@9bV>qgmiMW2cb;7*jyidH(!UR61S;`kg3qSjNW`3eUtt#}AaSvgd06 z&_w~<*N)xH@jm;#SnDJmq-hhmZEJ8kNBC?zQzdj78EExaPs)A_%~1x}x?)xoZt(XX zhkPBGA!2NAVM}%*f483#=0h#gOZiL|EqN=euH{6Q@&a&Q>bCD$ArRn`$r4j@Y@aZ;OJ8k!KsD%%RHKH#6NDf( z*v`ryg$l4*6k^EM(RFKuA*pc8Jz~#YVt7(Rb9d6w@J6vp1+@^4lM+)X<)29Th&%|Pn?F~jBB7LasZEZLN?kYeL zzCP(GJ!SA5rZAyiy|bWQ+^Kl4f6AWW==egNkLHIL)8K;_88H`MIsjCn}4ROd3(tq&h)&bmL>OAu29I+$mK#_~CI4 ztRLMu<;?Qra2`p^^{Yu=_-?MY4sA_UTCSd6=6v#AGM#<#PUrlef;bYcLayIp?iD{q zR8GW*JwRl?4>WexHbP*olQl|htM9ckrqsGnx)AY#2mNQ9CxyN|!tSL3KzpuWx9fW+ z2=?E_A3jbhTPc^77;42OFa`;Qo_X$1;zOqT)+&1_{dImiWOPacU)Mt z?Vr@3g9d8b+%6l+@YR(*_j8})Lit5jD&ZPOy@$jHol_kAS0q_b2;yxh4W(vU6lQ54 zfoIw4Tb1*mvY+*a3i z6+9)XbB%Avs|*$#bYc%NdT9h%-1g&^KL3GgRMZ9P10+1&H1>rDoQJL~g}z||tM<9$ zl)EYklE)fLl3y76(f!EHLMGM|k>@`I{ONk~uTjHH!f1AXLc0CPZ&kcRYJ#i_O|1iU z%(ZAvNFDQjg-w4$Rn+*WyC<4pOFDx(GNl^4Z)OS`OXrt5RoAZf-k2WQe zqK}BxPiB4@o-9j_Q1yHL#mRc*Y3A~C(cA^&18E-%3Sr3NLwu0-efpi|Y>;`OWzX{2 zt+9;QtJs*_W%Pzl9PNr0e|-tbc>hS=qFCBa0q7Kzyym|8 zhUq}kyHc*FTMxD+(|Uh3%df_n&7sU_Qqp#`uqvP#Y zIvd=zXwTg>+0d0fLrSs?L!o-nC3&n>b;!G31qag)ZW(GtQivWY3dJdi zbJ%jcvm_%LRT$=}Jw0-^uwTRzi69{J75Mou(L&5!Vm2sd{x47noc#<$1$bV+E_wl` zl!{^mp9C7jS6c?^a?V|l(*7Wt1DSiaQjFTPwcwhrK$ zROHrzd$0k}1_^!0s)zv}0U9~_CbhpDokn&sx(-P%?DM?9jK}D@oR(%pM~R?-^7ZTQ zPQ$c=56~C>YHI0yhwyh@4M_~|2Nsb=KZ7l1H*Brh5-B|BL6m$bQa%!3Yh!wykD7T4 z4Xb)3!QaadRMC}2w~t|7ZwF~nadGIap^K}O*&qQp1ScGkbq&rBuxnj1ybgEefT$9v zl)csN@G+X0)#R~g3*jYjnb|~_E{vztg@q83+sy~{%>O8sEOii7duF94w`=I>hdJ@9 zghHqQ6SJ(#5ZR`izg+Z8*5^*>eS?!!&TcZ!`u>tMmwCjq*3BuAXSlZU4)$BV9|b&<@M zd5sNlr`(WlWP|Y>Qn*XcXr{mZD8CE@(atjz znJOzJ1>a@^Y|g~5^TC|QWAB4eZC^S52CY^EmH|*RK~&L?mIT!8?>1eQEmIIR##mU^ z2|~LThpF~pPu}X=K#uvsBp14n#z9|?XCuxiDBh8L421)^6CeATp)UNmw2#Gn1MJ9w zy|T`3@ae4QWX!k8T-x`a$*oOfZqNnyMeMK1;wZ%%Zgci*NF*aty#{BRm^tX*!q-7% zrwyfOn>Cgj3J}5gYdYwr|cwW)})MR(QLO>2ET#XWV- zNs~v#`^26BG97E~b+Y|)9eqI!I-R7yf5#%q54C|_y9O`tOG(m1H~JB%c)!J}ZIi+~ zcm)}|eq-ob8MvdHpm%4udXKfyJ>bF1n2frJBWsS=CIs79xgeM3X# zyOT0~Mk{|l=>D}C=jHwD8dVs0^xFeUuj{}g2Vf>$-kG!un|OKnx#AlWY`h>k(3TbU zxn{MtiyWjygE5`~R!?~tqp7$aoz$SBMpHvAH2{d6gs3MooShru$Q3tuKCP0ds)^TK zQA&>ax!S+Ucl<^flIb%Nt;pT_x5>uN3|UqC6$NTpmzKk9{_JJPAy;INA+7TI|4 zj=&e4zso>H4Y7({XJ|N?KxxSz{2ElaeE;#svId_5tXk=E%unRCy^;Xx&oye3 z(>|<=1oy+6$r-<2QRuF}g73l0{00hudag%SLJYiIl4Yh^wS*M(1yOdFb*+kKw;39{ z`5NX@GaF9ZC<6ka+?UzSjymfF|EEzy(6O$420cK}Bu3@}JlMltHy?8uC9UeAxNNIp zQ}#q$=jLDVLm^>{RjHs%G*3&kW>rePV{_y-Z3i-(nSeDL2y=pMoM3O+*~I9jj9~Z$ zUJ*MxjauV*JK!SwMy+V?s7u}HaM4$Sdvq z=}LU4CFjYcHx^J-FuTNkRMk*5$xUbU4GbOBeXLie3iPf(^xidn?5fw!%t5KN2PxDr zQ_MMPXzKyM3L+m5Wbu{$R_S_V8);{S+iYV0*llcp-tl+zK32!EDDoDh} zO>V>?Z1Rwz)9SsFPYmb6>#sFz7;3U zXCYu0pD`*&^nA`^;K;NAOQ|tGD_w>z*{RVM-c3Bs-&FXR6P|D$0z=7xPy-U%Xf(lW(KJWW zSR&0+;~Y^xV!{}$zL5zVboCB0qXmsnnpqB(L@wET4CppGen91Gh!mXt1bTQDvzRZp zmV8e#^>?M{1)izp{Fef8!S))fxV z!jL4}ePa#+>ZF&y92|Kv;-v!m$5p%Z*3Wvdfxki`CA+i!zn zrJ0G%>ZPwCA8iRz?i3@*44Dx9F#`T&|lbV(r3Yl_o+$uv5R0t~cE zwX8eBvA-t;r3i~xbc832)5HIH3!s0R?|7YP{`rR?da8x&?BR|#_X1c8#QynVeZle# z?HNxleJQgtMW$4R#~ELCnU}1Y;3-cv(LAm6Uxrr|4D1kl+h)h%aGu@EwZ}y*D3N6J z5qslty84q`Ba=kUj=2f<$~U8hxFDGY$adOkqPI&EWEyiE!_j~2pJ1HN1`i1TaGk)f zx4oVO#&AKqRzxuZ&-lOl-%Jmn=A4m`&Gms)nG{R$8Dj}7DYGdS2JB|fUja~r;aR>= z84>8)e35G8e#Bjuf(=jHhvFE;an5(fazx8*mg3L5GWqUQk3%U@pAt>1VJ806y9_=W z*b?JalWsQ1j&q=ivsDP>$^eM8&I1EqlDQra#te*FpV$lr7+}wn04U;{(g|uAE~uX# zwbx2O2l;OK$5%z(uR53IlYPv?K(S+_Qf-dekHLQbjI#k~CSlw(b^kqXMCpbS9YpOe z!e*~v0&9_g7q^XLF>tAqTFnz;VRUY=*g!Nq^riVC!C#g}4b`N~l#9N4b}>m2O_?%j z%Ly+Pt{U3d^WI8XhkyZZkWsf8zTfE%>p0+74>DO4fBDogT-mH3Ydl6#+o9xGkQ^B?&^LCm;mgkk#f#I(MR#&?{5FWM zPYMtup9j1F6TW`hwGEB9`A^W|FaJsDeI{)pE+Vd+Mue|yDsB@qW8rJMO^LeB{swtS z%*0n|@fcj7oAozewImd?>=!6HnBw&Y-5T~C>4>pKq)Bu#*Mdul@X)>U`3U4sPtNyT z4x8R)PseRnCRrDl|0Zc{EeqVC-+#1SgxWT!KFQP_DJp})?mrsy?(3Jhj!XN5raS8t zAIF%akb?Dx?Vf{}htd0ZNRCp*os@rjy2DFO^FKIWZaTZ6{`Q@7ys>-nJZ98tD{jZ@ z7yA2~Q$X?8yBvSLo#KR+@RG*3y|GlH^bt<8oJMQ^IYHLzqEYQLm>e_&U$djk#KGOa zqua`0X6J;ht>!r!cnyG{%AhcM6sn3rYjm&2*^MYqht5BGppTpw_v&0-DR(9NbKZ?!G#=OPez;fmX%~6n($@nQJUGKqZCqcV zA{t6ft$F`g|NCBNay?<9GLAJ z?61bc&v~N%!Bd6(_mAz@%}=NNSUN&;KgvDPLT>0oA)i1y#S}nMU-` zQ%^;h?8Q7>73(dk7R8_}+M#na3M~kWQQZw1AKUr#!Q%!`p%*_@exo#TUx^NdU@hn# zVUjDqRm5`&<1J@C+}3z>`7<(E%_g6g22>jAh~4}LO;O67-D*=*;Ux0B4fYtvkbl63 z*9xV90vF^8@E9G71`!N8T0zCms7*M*j3OtJl~ZCD;R?a_Q5u5!H%%>Wy|ANf;X8TQye5uQ>JYhv|hX8Q4bPBtj)$W$fmU~XU#5yJ&pah5vaPdlSv z#b0T7)`4S#&a6_8v|R-!8Z4?#gx+whLfEClQjA^Gal72G!Atx~tmhtbR6E{Jzp;$?;e9w!5=we?8~5sKYF{rZ_xojy(prjK-BRPF ze}d}Y$yT;O1H*g+8Rf27JuOV2-hHsAea>CX9|8R5C9_&sZ}OWdc5#Xjq!H>%2YDSy zMi|r02{8yNUVdbDTBB6=y_hfK47-S(Q3k~N!5TL0GGu0r`y?{s3IM@5KRI^z>50ER0VLmy` zf6A_|5kf3SX{CO@9Gv%?nj{H5)*$)}hhDB8eWhhb$C|Z^fm#|;!BC}HU8)^%sGt@q zWslD%XJBN(SF%-gVvg zi=zJB^lECgT(?T}xCExJk zh@Zx9UOzCc($AOroF*N2!c~MQrIq30Z_(zMVAhcUKoOL#&4d|rpES@@HYcjQVLD*4 ztrZ^$3e2&I%q$=+2u%@#Eq7+Q{O_dx=Ozc_C~g`Q*?McfCo5(9MT`gK?1ZrMe%#-7 zv>^GKtV}fe%-I~$d0(ooc6mD!|08S&kMXUDwGcRo$mKQJIs5 z1ba|;#R%-n;Rqa_?@q1)MGJLB*(kz|ALr+Hkc?%U70y=gM9sAz~7*V&k5myhsC& zOnAm$;rVWh=|SN@>yP^he#&&a>*TYJM=Y%UqWy@Iid-j#qJITd1%$klEq(k)1@Jd) zu}f1Vwt8%+h>-deSZJK}eviR_%qGM!m=$YO|CR`}MD)MtGU zn+MuC@Ebj17@6rw|2n0GNNPH0%l$zkC24cJWEHBF-;Kz=eU2tkyb}VV(|k0mtdcU) z%L#+z(~&X=1aX}S-%D38j36%cyEgN$tA>{Vt0*XW4#j4YoGl?^2Ep9{BNu_r?s$*Oy9g_E_(+ z2wL-221Fj$n~N4K0DYmNsE!6}Z`n;dN93!D-&9eY-I&r0@aP7WK{@7H6PZ3PIN4aE zhAZ@t+YG~?6Hky1pYylr$MRHbv>OuUZk3^gx=*l-xM@)b`h|QDeP(B%LFInIQHKq} z&BJdHTFDQvYwH-i2tJMbx+B^X5Xs&w8C}%{$4Z3CT(9|NdIR~+RI9d!c#9{4+l@L0(&giSiX?R zo+Yl7id*XHS0;w^gNgP!PRmly#umgh#sxLRfk0IsT@D`r`g3_#Jd z^Wr6>%quKEgAi)Gzt&q&WV>ZRG`H{SzD)0TW6A$a27$Zsq7zoEWLhvbzE_vFWbjBg z=FbFyZICbw`1;aB7FxO?9#DBX`6DI(^`R#rJRZCO>MwZ9-8e*(c?Ez39UbGI{G-3r z%EWXz8>C)NIvTFHMXjrgw_tRjh^D0=Fz5e05~uPEd#?u&iJug+LD-^eLGnfy|NAfW#Z%?Po#P$9$_!!yEP`^p7M7zGEK$za5Q3ZPC1%TMK7(9G^OOS;Z%$K+)<+>X-D{zeb z&HOz7K8 zOJ8gRW0jav`lj9@;rqXZCto zxmv74^Q3aNue36nWoTmkY0FFE0VwuD^LoXU5Uz`QXW#bbsOzw6Jj3c2(idJ(#tDC9 zph)937*Y2y;eRq{E5fc-89R@@PP`@$zr5ZbOe+ZKa$bGX2nkC>W|IQxxqaG;+zhJV zV}s?uWz^%^Gk-rLcrbN794(hrJZ}H{)BVmc$No{UQS*M;Wz@anlAsg#5bCr%jxK+9Yh`{Jl>A7>%``w)u;4d!@zV2Jf&u~;7sedfaFX|k-y_b> ze@2WYsi75}$RT}sC2kYTR;%RM&F3rbGVQyogJs%L3tuoHMovx(|D{lVgA1^;{I>G)<$7FiuWI`kf7pQ z`yX^xw-o6)eXjg2EnJ@o`B7r+?s`3FEr+iLq^+W@5;EA-Erdd`d3Lkep$PsLTgW$+ zBP$b5)g2uza{IGt>>mm$m;0DMxBMoV1R2u5{*-X25CxztyHF_k#6%lI!G>5zApv=& z`e((~r;wjTb1(P0E)Ia(>BW4uze8_yS?;JQ1S1ikM2n(VR$5_AkP9x7eGWB;^0_#2a>mTH|OIwfM zIV%5(SvEfw0*MDymKRaLn!?57GCt6SKIWydy#(w1;z(VoCQ`a1{`Ax53bkZS^s{4X)8MqtB=RTRQC|LTzynH ztltm1g6n+IPrM1d%kdvLQ*8?j3S`n*m^X9VRz3Fu?}Q{$H3+nLv9*jNN#ckBN(#JFa{eCTmFc7=e?9rsk?N+^Hbg_)oYF@f5tq8?>)d6^< zFqFBC5bkxQGE=HHMdx_@PcSW*q*^us>Itm1$*<2i{FhB2aCRQF>!54UnQHQD`i6ii ztv+JS=v6-Nq9M%pjR$G!e&nIiyKrDpsBOMB4dF_}Y)4dE`}R7$TvL9&JfB0vxPJ92 z9KvYcCf7Ayr%ZJoa>n6v(1~Smg+x!t2gjUE-4#bMWG|$wlHnashL_=#2BmG75)_;K zy3MgJ@&H6&GIW2CDmZmSzhf9|db*6X7@m{g|c)zFCqIkJ{Y3n@0(S^Ob z>Gy?xq*D56r184vgTv?HDh^rQP_K)5Dm__nGXcExv-HE=cjVRbm&e`_=Q)OWr;#nY z0)Q*GwsiG3SdujvS@KNHMMCPtX*87Hrd+}q@pJ9-hUc}yt_RzT#EpP%`&Xq1n3^&-?*N8Joa%+t#i~{ zvVSW`dg;5=!uBPsx3_?~r_}#!S_r~4o0-nEJYk^u$k31s_NgDIBhc_Je{H&JX?9&k zf4$8EWO8SXEMU6YL5-1wII6x*FM3 zca7A{2YY)HRdTcW4+6n~=>26^|5rAVrzAp>?|;GygazJxB`kgi4D6qho^-81?j~RQ z8S>47H??5E0|omG3ZG^D1D0F_{yry*xzYcFcsL{oDg6X2QL-R($UTrOnA14FUhAG=j(aeS$# zftac|`iZE_`9@EB-`_9{8NP9aA^TP#{VZiF_P-mps0g$c7ufHhlU40c-oYIc>F`Ya8oqWqm$v%cxKn6K- z!=q;w$H_zRxV}THQy%$k{F!NLJMr>Zr@^Qr^&>!L+Is{d&DRs z#4ZBu*>LsGW4*q<$)Vxi?Ktpl&U?~(AIG5LS?j;LTYd!E0mb2(Y< zZ5_DG7yYD;<0t6np4#1I@@qi-)9z##jV3Tm^J_LpC;v;(;C6B3_&X~%jqQ_BG#4DC z{j{1$A~T?|z_e`;;{OHkGi*=UXVp_p%fK5K`}S}C;CM&GfIsj1%UU?zp04RMCUV?v z)z0dI146w|HBCcT@J30me7;p4(_OFIb<;v#eM9$18;DtV4-koXt05+P_`FZD86<%1 zzkB@%ML7|Cb;HR0{2Y5Q#IIp!(lz48n=}1Le~cKn1&L9lLXGrs~es%w=^yT8q<_6s=2-0T=Uj zB~Ub10a4Ty(eTstp3?SINJ~d~dH2E(<8fr0MP8lx=_*b%w3M+GQ#T7uJgicD|?ALlijubcE@L<-LFtA~Ad z(w8;s&bvvzt66MrK}FR6`Z2%36fEsCL1q@3n!&KVgQyAIeUNIs_h$U<hmzLm9&VQU#VZyY#mk~)e7RMO%3QuG7Siy+G3kio9e#+x`npj$b zWf#qgg?kNY$&@yPw=Q*gD$!c$jJ5L*A@$bDqIh#DIAvt&8)NQG_{(kd<4k??737x` zm$5rK54V|vxup7iKv9fwAMxfbVzNo9G4G*c-Z+KZ`j{ENu70*`ot)#`5S0Hdi11CX zp>L9%me4tOv=aVnN#c_`42n2at6h=&+g1PLT-f`rft3oYE$errOoLC+ByA=+vit^2 zbce?%=)a{Q@B|Ua_JWKgOi3>3x%7lnHMoYq+R{LZ@>;xK+%0v(%tk)wHj!(^lnRpN zF`D;Fo3nwqO0>_Fsu?nquIRBMKc#-ww+~sHCP{4Rut-Pm$-FNzwELeAsG`HAL8S{B z)v1AsUVB%n0zKaKUHRa z&nkw+0t}&V*wL!8-mka*Mpkz7tNp$aySkk}4_5Wldon{2_O&|e2@9os`EDhZ%@!Zs zU9de`5o~2&ey#SqBQ^!5F+N3?wEpFc56F>w_~wjf9pT z@_l4PjcJ|b{q;0Wv=uqzwj9~=Ciz|@c*{w%1ODF)0?<7oG2On&;N?f#cS}jDpbtNB z=6+S+qucpbWC_V+9XldYtu}i&0$2m9yyx{Frp>40FfYyV-v+D)Xn6oSln7k=ji6u4 z$*4977nLfLu9YxvHOTVh3;pemAlyNv8n^gOt#`EkW3zZJ(f{?B80es-( zW5*SI_rg7>AUumV@W#y`iDBBJ#V^Fh_9DN`fQfnMXZH7AL^(wE1Z(Z_J^O4>XdTLA zvR`LA{Up;7Y?1`KIFawKA)stAD3~BWgzg#wS}KZLr$V--ZBJHJ)SqnWb>IqW69+eS z(#U#z+7@(w9+WJz_j1i-3t?{Bk0%SgI#oe5osrbUls4DJ?-y~PE!58$Y zY1@&q^VoN3MqZOi$^%!zl-Jswl)s>zpLv(H{dP9Qo-sgJi#`Zurx zKCVT$iQd~m>Ney>!6PwOj`vjd@=1_9o7A}(3-pQGMl543m;9v{&Z5C%(SpGP-E(E}<~*Kqzf@>mk#*xNl&p*YAY>`qZo z(S~FB3;N~Kf6kpP2GIcDT_l+=xtHO}yKU1n$?qRH)<-*n1m8jRw^ih2xn8~>%+!Dy zG#k0!=f_YcI4v4l_0$gu3BO5}irGgTONc!zrEEyd>*>6u1}NG?;5Gz;wQ)G1$ws0t4uZ*gYtOeJ)1=3XD2u014kXg zYk2vN8UVQ4g3V1I{Yj5`-POjU$)TNTyC8>we<+X4+7oq4Vg)hNh#cbY;nXAa#|sa( zZiB7f9i6BeZ(e8ou=6!yXU2+CAU?Ugf$LI~6j@=A>FLvzAOE&h@HzGmZ4^Uas zqe1?qW4R*`|a{+xN6bNgvuXTMWX5e(fk}!-88KS;ibPJ-+)Bqvl>#l7DVbKP$T( z>GI;Ym}?Cb$VUxpGylxoM(%NT`rr3%rrUnltT zyZQ(y6U6xUBs*dBN8OpGluzlgCmAF0_6}2Q^sS=qc|H3~#r)(O06!vUG-)0tJSi0WGd4xo!3S$KYly##F=43O@_A1W$T~|A%a0@)Y(&o7LIMkM|6z|?@ zIH06+$iY#4ei?1W4>yq5TgXmc)<|9NpLi-#N=8rRux*kUn6~rVA@c|ay(qwfYQYjd zE}ohxQ;RCVD;N-T&h6yyiLW!_yyRvlXCS{%{}-hAA#~N*faw~i4(FiKrIqvw>44?s z)SazcTpN8&=R_}?Pmd1HU^v>gBWukeDEVNwu<+7+BB;0-xNju6<4tvQk$QN?C6XNY zstkH}YE_}d>mKjl$oM8Du+y|X^l@JkH#z%#_=oPtS$aEbL60&N z6u{rB9$g&*ZS^)X_b;*ElX*BqPID&rY|e8eL2=uhm(UiQllL#ZCB^<1OW;p|`5jCD zBQ%@N_^(dPAGUM2mU9ys=S)*JZ0|;3P_j;EqeZd+?0VxX@*t5fU547WcD*YzH>T*W z;ik>hF{H_Uoz0#1;5M@e$xq8^zqz00a5TX|po#QDgk)E}ogD60Uw(cyV_tb-)w&Xt zCI)hv5*E5Zs^Lc*)a-y$T??+${mB{3#Ixt5Ozs{3PzXwWMp~_vAMtkF>n1_q&{?Ci z=u-N8JSA9(zqm}#D7(IJT30&Q- z#JP!H2l~lf^5)>D>zv+KWNv#$JCcfD2!m)xQ4@ z&Pv~Kab39cy9=C-SV*D=syEK8jZ8i%Ur>qG!(SL8fHFi3c*m?}QDrmp=juzf|%W-B*BKGz;7*#uAbkuo)zNNL2>D)K90 z-AL9w|3m3Tu$QGA-OWUcInm`yrLqYQ_SjS>n<|&rzSPM5xLJ2^eJJL8&r!H26%OXa z^?(a30lCN{>U9kxygy6E39@2`(h{?jk-@g=NfB!*8DdGv2`DB;OSWeRoY0rBGCTMY@2TO&Z`AWB7gD-u{a|J*xujF&=VZIA z9m7(nlHuV9%I1>=sDCxJw!0<$ybkGgq9uNOcYs#kQg{|)7P;Q{AufRLSDr+)R2G1( zX#a{oGQl;$WdBG8>c7L5w#MP})zPl%yZRDu8nJ3PQy83AKJBM;7@noYp7F^h-I=DH8LqXl>eoQ^vu!l0VoniwwZbZiW34I z>Q^S6KkE)E9Y%TxX!I%UEYV+b>#QQ5w|n%=+V<*X<$RLz8BA}eks7~|d z{zEnhHK3R6bp^k^_CAVhTIJ|5>;?c%@^SR~Fxd}uye0PLAs9=i zks0O)p6MgGubuKcx9WJ-;Qt*-5(jQ9=#IdXOpG_(rRi~>d9I!xE{o2t72lD$9nLR> zK`G_x((0e|fYq9lZ`$waStR4Bs)=V!9x?{<@nFw7HIB27M5tc@gX;|b=MF;X(r#d< z+x8x|eq1>@M38wSD?1Vb$=KsdU%L95WwvEuldR?T81vVX#tq@NORF`YYIhBJT=WWP znn%LW5BY^U5@pu4`lnX=-)tieBad@PNKf@{vH8UCBk1J*H~GQg8%Ho00(-63v}khI zjqCB?CSRhRdJYueQXo$x+eYKso?>-uuXG3U)Z)$G?t#Z~Ha{)Egd~D(FZP%7;geo_ zLJ50`@gOvURO%XfMk%q`KZKN$)_KcIEL>Z2wkadV%v=363JQok@sDfpwGC=%o|?F6 zRacg6vM+a>&==6?$PMX|TUOr@j4mY{zT^lfmngP|oLd>XT^i%>UCjXQ?&$jaRWR%o z+L(aRMXi(6N1`%#3;^8mXsG%uxUu*kQbve%p&os2mKrpgEOujL9m*e_GFGopZT0ifivnw}TVE3AGPm0nIWvCi3)GB-(%U!~t7ojY6{~Ez ze<$xr*h)P*1Q002hEbLUWG6z2(=?kq?aS1P8S_e{mHjLTD{|e>FDeiNA)D&z#F> z(MOWfnm$mnc$ygaikKij|+}Q1V+0$CbzYZKsjRK5?1Lq_H8hWl-}i zp=Y3ns6Ke<_m#uG7lVkWq;mJw^C@ZiKX*K2!bJSesEvo;I`fhGgK(cI7o9>f3JN&N zp3G=p-}{JM{z#rD;7rJIU;u~W>YY3?UT!*5ioA8pgJ#L^+W%NF0&5?k?(QJ|%sl|~ zl~9jwS&r?zz878f)%#jJ=y{A7A~M!yy9(xlY|WoR*4Cg`Qsn1neda*V z#yv;hIZU_8fzUn!m|jrsc1heNeLKW;oy8 z+`b*Z#?vCJXDjhkM&nOPHB!Hqif$KD{h?&!%BzGY3`$Q2V?*t9TSyvrBmTk}P(3_a>~eVqk7u)Ic}Ol{`6ay9x}m z&m1zan2JDa$Vo7MuxfIwGs`_63h4X6e9{)cW^c18`Ardzj=FQdLHzYiz*0Vq|Iz~qxr7UD_ue_LDn`=0`oLi&te_VWtKUDqu{yE2BELmeH zTN1L2kwPJp8Yz-eLWZ#`L=i$}hNPM-CE1xaOHp<*F(V-%q^x10NOrO_^LrgV&-3Z~ z`v>OCd7pc^?(4elw^f(ksgYpfN!bMr7wg|omEghDNhR#$ zNaVok*wwq{KW3ViUY_6HcT8&QCC1b; zTOn?FxF*%X)=F8I6+NSq`1h|CBQe*y&a7xWRP&m=5tlj1v}GT>+Zy0}zm9eM2gYz! zwYJ>mrfJ{hP>>UdajbVDYO6Sm)mesYDAR~_jR%$3L10c{o$OFUkaGW-|I^n!_K=T@ zb?^86`e;^QeR#>fKxy=f#7Bp>Q}$ndX0scK@mrF#N4p_jK%Yy}IaK^5eLHTI9rHw_ z>gMx?<8190>mix0Tv(-A(#6>&iI~dUf5%_SDTdZrmZx|?fVY{3f~M}hx{!!-1tq<= z6H57?@3VqF-)Fl?9q{hZIaB_&0E%CUZVFThVynrS=Mk+0%Yo z&$+5XD_Ao1{BCnr?epJ*%@Nt&dT?Y2I@8vJrM`V8V!MMQb=Csaz!`r1^6Y~v=LTb= z+Q)qU{>L5{!Hf^*`*^>hrk5Oj)uPIYtnjMJjQUl#Z3!yzp$nJkxlt##2krqm0hy79 z)`E^c!~3njwaO1{KxrO^Y7IjuLj1=eTe<%qDhSUcjhugJtv1oHz?whCe>Y%wDoEB? zNu#jN;qKZa6}GxoQg53xpE59mDVp`U@lCg!)aH51KT&8h&1ltF$qBFdF2otROOglk z0%%UOSC%o(rT={x%*UMTjl?f=bH$qL^RXGF^;uVzH`22UUvEE}yLDt_Olt!ddoP3S z1%Jbw>9XjQFO585f_JznIhUjuWu7@=%O4ntu@>A(VoYf_gte?2XU<;6VVi}c|EI=2 zAtf)TF0i=mrs-vpZ-4qL4aokAx-hR(oaAhbz4an=--=wqZ!FEP+kj8M zMtyMGaz3!Oz(`=Cf=|!Z_;CZSr0MWn@B>5dBcJSKgsMhQEf`%9ycw48S1vJDcxS%a zy>@YQR{B05J^pU{VAX|_>i&+Q&rxe;E3XRcHZiqAa2W+IEA5L>`&nm;<&eHj3n8D? z60_L`K{&yL>u%tYXV>UXX6LW*4V?ffvt~uj z2d#6>Y%!~iX~v@YeRbAv$&FBBqt;JqaLWr(i21a3p+N%c+H&|RW#h28cekC6OM_{F z=)R|~ZU|47-Fx#(uD9j~D9i;)AZIi_@ak&Qrv68=DaetBku%O~Q{?DJjRH#_t;N~v zA59mBjw_9vtF%BzEgxh3^xL>BbGAGIYYOA^xo^X&TuO8HJwqs2*GzYI%iBkB4ZDD5 zBvbaqE|&SwHnz;2YrYbQg4$p5zE}MEE&qP6*sYlHjU_(qk;Eqw&4J&hJT&NNXLp_3 zcbbY>7iX7D4);?HIJW}2rI#0W-dZ0q{#Il{xctfZfk=gA9FiFza;HGuw zp}a05-9~qvB`t>!yt<{2+Bp6SKEyeaY(A>%ZP3!WjkNW^;eO)v0sBESM|TZ!iXywl z09`U#O@e^zFuA02V)kD-!seA0*6Uw9Kc6QS=k^Wjh78)pR?I0PP-}ZZ@u(Vs%gKO` zd)T=Hr~8i%{vULi1hInI&+8tB2`G+QR@4@=4vSX3Z~gtq;#Pq|qIrdZ;0punr4+eScxG9X zHuP#Ku%KdF-Fp|Mf$i0IZOT^8+kKq#8SyJI&nf+Q>!N9^Efypdi?h0i*KEKM+v;tv z1)h)ZI8$z;MaXT(QTe0rh|}i|-x^U15N4k2z{%MPB9>#bQH8OEzj*(88i8lV`D&qu z;|2AJ0m;d?+kFO$+{I~_eSHx|ns=TzZTFay&2u&iSu=sF+cAGP9j2;?(p(k==-x#Q z=*BUetVnfeXe3t5jV~z$2t$!|^?0QMgfXSidNV2bHCe0A$e`f=v=$4-({+@JcBi(~ zT{Bk6Pv2zQdooHkt9zWCiw;hZv0QP5sAZwAkSFu@mylmd_8?von`jO&}y}HskqzW zZRWC8LYYCpnUEc1EfEWVd6$s6?ig$TrddOr!dXNC_z+WHT~TC=C-klxN2(!N2a25v z5H=~KU=_yYdK;<0IHweTD`fDvP2;bwq^?T%#Bxu3ygb$V($Pgeig<1MW+_apg?(;~ z{PLad8fCRTECvqzos01X2~B7y%ZlNM0;>Ti4`rc8$S2{e2MP~jqjy>Kr$qUN@8C#1 z1X(UTz$4Z(pQC16Se51f`)UjvER2|nYnLB>-|Ekd_;&E_$-sXgjGEXg?UrM^Us(ZDvk!}#_ZWIH&l`G!<{+F;>76K>dE4+UQwPj3JC&6--c$K zywZ(hl!*LJ5@TNSb89{Kew!Ac!h;eJ<+>P+hTcRE;z(URYHA+g;4gXKjEHBWe<@ED zN2wnku#Fn)=WLTAS$iZTrfbsgsdjgpKe6Vm-4_p2Ib>0|oj6rmRXkxs7pjxd&}B4g zroiAm8gjPd63U-#TA(419O%X|jrrU2@YC`_H22X5lD_}9E$ga+8I)eaBf7(zuJJ7+ zetC=R@T#It@@8BA{pwI?a`jT1Z!Jw{~Pg%Na?pTJua86+~;abb$d7j=VJmUUFGZz6x zemW)}=O}!rdignp5pnG5Um76eHp03r#eGTrySwvpXKY5z`!fP`+Vz&+ueYCAyQF%; z=VmEp0Wi<(KmV&nf`_U4vcXq1XoOxL46uF_P)Lo4oVf$>lFUM0O8gwbmZ$fZeB0?K zdC~tvGAEP?imd1b){FBy?w)X;Va@C^`}hM>oP>KVVnv}VO6ho?9_LdA+E$%|j)%0p z=hvN(w@Bgm(B$*+<4VhXm|Uzl(ct9va;j4i!#uV`xNA-^7|4Rf5It`X{JxH3PmktxIXmeUlOm94DvbJp^_~}J% zYqEmnmb7$uW_R!7iv9YYm(X~&{JlINCa8B5uQ-BK_sZjCxH1j-)UX%F{8{bI zq~iZ7r$J6&nEqFT0?h*n0n;(AvkQTjdiYc&)zktXoe{{b8x-Xj2Nh;K;GX3D^!zfU zDAn|sJarw9=-y9=O$L)gDv@Vi+sW0K0pi|;*HEg>4-QTmj@(#SW{f ze|sEpcm@4cdc1~VZKws_&)M_CL7fGKcz86l+Q1E+%V#6oGp$Ew9Fo|Y<6TSv&hxzV z@hyCKL0aMk5S z=w{RkvKOv}T-S=6>_=SO7x3JzC>Jdf$5=t`b#ob=_X>U(Ai`8#sKO%z1eRK6EB2Do zIg-?wfx<{FQ>x3OlxjMKRL2j-i&4AQ0uCsa{I4xAO&EDg8mSAc5W8u^#JB19F7coI z?dVh~$Q_9^Wx&_GZIZn=I{6Li<~gUUiTkUEUKLOn2pSTDWGe6> zv+d{<>|XbsmwVjKfdjXjIAR_H!J;1Q;Ugi+|KucA2w|7Cj`~ohqn*ys8Ms!nEwgbb z;+txBPxKQzx1k(G_90#VlGqcE*m%>Ew)OJ?u|>1SHbcCG1I+un9^c`iCF zxa92ih%(NmS>(?6Wj>2PNH(-U_&P$ofSts3p^S=qVhqc5`~5N7_z+Wt6h_#MXoo>( zjGWcsr!OV~H=C^5_)HUm^HxX2s{y%i-=`k3|Mnvf4lpcK_41F=Pqy9C64P(b4OF_O z-e!Nc(-F9HidaQgWP4*i_C`Jww*aWmqFyCvSGVH`<<;%`L|0v_NWEw+j&9?&m`*+Z zAbyb>_nVQJeNcry!-Xq{f>qs8@}D$I26&SeSdn+4qfbP+Z)jCCIS~Vm(au+^IB08^ zOPBeWnvd|8%t1~d#m}xc=*2eoMZrxZY2k(BpuRxhG3 zw)tXOngN+C^XJyn@-zN7lEDf2HexqU&g^OZb_yFUs<3zR#eZO=0t3cgVDqU8hfce9 zVf2%0PZHPeZX%yUTfLAiro&pjk=~CptRa!*TO7a29X{%}`!UC(@P6?mU< z4Sq^SZ}3Y?A>Cm2Z?wDaPs+S&T~Xu(^_yuYP-K$?Ji@LMIU_V#6j%Kb4M_$Fo6Mfb zy-=U7oaUGRy4-bF5 z@c`?|yVvbV{_BO_UnIVy+xoRF166p0SF0c*s2PznQLK%9U<2lfS*Y(ZC7E(e2x&oP z*`T=KUK{Y?Kt2>EbYbb=bPc+NO^_|--L+kHyW?Fmeqj)vUo){T>EZY18vBku20$h@-(&rgP*a9A5q zaOsP~zmGwt0j&vMQ@YDP)~W^w2cxE0-#J6B<#TwRmu3YMEz50CJSNmqIF<5eKXo2F zO=^M|jc*2VB%Of3m1rMxctT<`VxTMvsrE3vvyo`rjU)8{0(^WaDd0%(%#OdhI4Fk6 z#;LfzTpBFbtcqhWf^?>0776}Ef;8^iq~{*xyV_*n;A_ymsB!QV6Qf0K#}SBM>ua{w z_5|wA##Y|)e<;*aVKQ)Q$HS}L#~4P+ACGz-DM^r=xm~gv@oz$TD=}xE#2#DAOp6`r zn?4wEFIOsTqh_C{pI*%aV#kGJ@cSgdnfs%?qfGWN(;1IgUaZ&JD3$Ky{Yk)(I1&9K zTHJPmkDfLn3H&5UP+N;*Jq29HqyC#R+p-|myUYX@1(&*;<#@N%Wv0eNcCNTT3E%wa zj6kvfee=5|V>6!RkOCFJlDN*(E+V$MFSbl%`Z$$V=~58E-Q6SnnWfN#M?xLcgJa&0 zx-};6yYsF`b|vyB^IrvodYyB5Hs^Fu&hootj}@27Zl^rY>jrIH$vIL1-L zR$v)Xu-9rTvXe8 zehhs)eNP*AT);nlwv89cY8woz8A)a#TUP_WeYDo$YCt>t>D}hFWEqq$dqz5b);`XJ zsb#5Dvp{4FEY zB1VJSGyb7gY>$v+FI(vxhG`;+=D=ZYdgy@tpvg)+`?-yDZX=Px|5V!&YCu^4%w@OA zqjH>PDA0cWF2L6LIB_juOy1&>zc9g=v|CN$cyce8QHfkOUse1Upu{7k@|OmOgW0dQ zwyrJ_bO$4DC)-aHcW3f$>}$kc&{FWd3D3tnUdmKTbH)@wzd*7vihQC2$Jokq*J{0y z_&Bx)#1l|tq}Pi-qfa)>F39TpM4uR)VKL5n zP1m1Nd0ywB6`Njm0?OXqmUJ&|#Q9gDf{+lXbwuKEK7m^$vewf?mxNG^A;N zZs^?W0UW~#1*R54SA}yz#{P47xT`Q{hmS{&Z}4$)^LYy2H47~KKs3x6EwZ*Ab6PVr z=l(o2ZPtJlM3db_EC6b<@!`HtZ=s`b8)XFceAvSQj)#_~7u(3SMM$gec!!3@JRNWN zX@5FdNWp#xuge3AA28_3T1+7$!+#Nj?iMgie|LhK+N-GkN3-VZwdczx#v;*WYvYF= zN#MTt%x1UBW*^FLh{L`>Dg$jQJD*K@iGkH$=Au6j)AGj@fB@l~SryfHBy65NO3rrf z7ap-EPb^M%LSD!TLrMl?c#u+@qPDJ?rRo0y^1aE}FHhI!hu@C`AfH%X;5T!*9Qb`t z1Ss9zPkA!3&m6nA=ccEhf*e^3p1#bkEih}ubyMDJNidC1sRG=h4+n9CHFPob7X20< zg-2X^Cp7MaBFh8_o5bbMX65CC7R2tDtooD1Oa!zpQAitRE_!6^U>?>PvYA;`6)81y zwn{2LFm~x)y5RFEdGex=1wb{ZKNZsc8;V9lYhO>B|H98lPk$^m5KPz`0qW0ByYp8x zLj)ALtqPA=rsp;awBi1vTlI|?c}s(Rftd2Gb#1z>tHqz#7S*zPv}2#`{H_fBMAYq+ zIYxX)LiC=(f}{Ycvy+zbe9Jy>7A)7J(a?GR4xdO#(OYLF_-EoK^8aAf5(*yiX+70O zrmaF*i@M`c=D&ycnbR&z-`e^%GsKX{TN}TB{dZTZ?e_D>xDZ1#`X^Xd(@e0CeycKq z$AtM9(X7A%@d(CavJ8#uh=3WEqyy(GTl&r(kHMevzDZ()eGhr zh>_zP7Jp+B9B5_Uw9AB@SjIewvVX@>*BeuB$~p7w8oE;7J-W~J~O z^?SvW_+z09`KXE8JyKJ5@gp{DiSz6GQ`Wg>lG@OwOc>$on;j*_GgkO8B8=N_#^ed; zeU@4zy6w6{X|Od)?!y#Rc3X7DUHQ@-o}x>D7RP5CL#adOpPDL!(6?IADDG&R%7}iQ zpnKE$2b%*HZztaVvgJxp8RwQxcR+^UT08}b1WCbT=Fwy2_ZX2p%hO*c%PD1?#lF(0eJh69HEkV#0S7KC#@=yPH&Rn2uyj?pJ3mm^*IKU4mBg?! zLxE8}koHb?!23C(ZL`RK0Y`p_!t91^sb8XnZf5IgVg@3}g<*M@0;m?Z7z>n*()CLh zx#9fzLqaYTi0JB(Yx4lnzE{%kz7=7aoigrgY2W+WRcM?Qx0X7E#-LAKPr^`Slbb|K z6uEf2s6o*`=_7>*I>6W~u=*qYl8=XeRC!ovhmF0d-(2eh;>)F1=T;4)Cfh7cu#mbc z6~HzLq-)zjSw9CODv>ip&+@m;q^e*=Y<_d<>>%8H3mBg_NArJ70pu(cW_npHYkk_c zirsuV&3&D=@`cjgXg?vNuy@vHRroX4aq2Y~U}Y4xJv3qRAY#NK)5kZ+MNF`Kg7~@-8dGK_VWf;ql9#P+}vZ`v@@P!~o2M@l39ZS#AJvqksZv zaU9Rm1`JOW)MAzEY(cwigklQGL5tzSwYQfy!X(6U2n_hH)XPo87NP-omkvo{w*kPBt5!9(?0^vc*;N zz?Z20jikY$)}jTOel_Q3lW|y89%Z2I_>*Ve35?sE0yJb$GZK@DvYStLU&RLq=j`EQ z@P_y%OA^otd$l;^oB1&~&K?}&GcSfd{_l9fNam|BThchEuC>ze-Ag1wZ80$9`yTOg zd#ne4=9Dk%&F8m?!ftOBDuAWM8p_B8$<*MhD(SU<9~N$;Y{5>)7T^nCo1?-X+@LE)Ru`$spk+g*+dFeItJcI;}ahQf?VJqE0|oVPFS5J9ypsgINaD+m}iSSQ@gz%lh48vLcdz4nvXSxThJ1E8?$m zi2RbbNNf+>Y(2;dY{G8#Gm);f;>oF>{@h&idA|*>NUC~DcRThHTNL^>z3R-nun6l+ zFnEIq-{Jc}k^n*4&r=1S)7GCBe?UW7BhmvVOJlVi4QGM|4|AG2pV^IVs;S=;SvzJd|}a}TKWmL7R=Jgk#b zkx7At&q^`XOY_;fW3Au%9Sl8vyq+b^wTc`_S?B(NX@glNxHUZg)>dyq#d9w2ZrHlz zw}8OtZ@p#&GdYY-!QLm6VgrN;WhB=kF8OAD0tSmm^e!;k!eI5XX9}OG78NgAS)OIj8wk>sWXD{woEK!0pv)7cdbxlwCz`##`$mh+~ zjt{L#CG4w#l~ z!BYVmQsLDX8uEt70*OT5zH0GB?Mdz=%-Rd-g4NMt6md7ylf1dX$XC@@n=)*gugqoQ z9&N>ac}Lr~BKXzuk@Q2X7OyhUcK69+@B3I^&Sl{{qSs=xEi8T{v)?{Kw631dq5v9a z?cERXe(l3C9P!FK>+nGGN~wRSRmw(f``p8>y> zP-4bU9r2rx_w6~P&=~E)z~T`fLkfO}!XGJIiSc@4u`I%2@Z+_Jyg7EhY=24OIW6l! zlP9NnHr*yQddejYA|97ucn}g=a#bXbq|x?Mo)HWTI9id$wq*;~Ufzd8IcJlEF&>T@@4`$cA}fucx`6TQ{bww z?)1G+^Z!IO+T=wgomKB!{hi%*G>q@OI2&kovfmDZ-Nu~2$3eSRWsoPW zlF{BH{*sSi!T1s0Ja@1H8IMOapC)-k;t_UF(H!^EB0n!6A4`jW#xXx1H4=p72P&RZ zC2iej`oPprmu*D$i0R^YJAs{wKZu4?<;%rhSD#$yD(nh7MoouHL3aD+Y7;DU7ZI9A z0bUWTNUje7jJsB_MJqoBk1)E>;S@)-LV?l;Haq4F0Zcs0YVtBKu3KQmYwhO$UaUVq z7#o>@&dbk!EydWH@dY06u%7VPyKVSs{sR)iT!HD%l|;oREkLAC`i6Dt93kNFw~&tBbEiOFvN)~uPgN4-)5g1Sbtzp{`q#@ z5A&@}!k^Flpy%H_ueXydhg1fHZk*~ocwBA<8WBxtg#WhL9Ys&BWjw+f(>5*7P$NmO z-R9jA1T0lak{qGe{2%9uF|_ou>`8YHaI%y|;0#p*iwB5w#sX_xnE&z|(fuj+;o-!B z>a#wxqt8DP3j~mp`G{WFai=Y5GI7{otlp5#u1#W+Hq7~y%G6qJmZ1VB+SD_3JUQbD24=amF0-fLKuemMGD}g-v4`DZ3-P7&IuuzRK zMs(%*mRM7ci=4%MZ^En6*U`{=khNw%hqXeR0l^rnL_^L5Mm2G$rP_dshe?`EI zl=fuq<`RV%MwHkw^op^-qS#Fv?&)b%VPD61v&0|LES}$3DS9dALlJnTef}>!1I9z4 z%FL7BTXX`1m5V8i@TfW77e*)g2XS&2_CVb@xvO6e-LL_F$FOX-P|xhralZk3lUZauQ~+q>d3GTTvh3=1`gTL8>%m&yo)f{;FF`77C- z_(qHQP(3^mY|6ER)TE@O&?PN*|G zgE}+EH_FST?wV(7#&!{rYYifp$BO+GR zR5t>hgN8(4rMOTa&;5S&CS%{01yk{3jEm(8a^(4~x~m26B@LW`()1e+3I#yJV31I~UKFF+wf1WIMqK8xZ&MzEFE*A4 z7pu9sxlbv&>_)z*Jpzd!Z;~LOM#6pa8A8E#2NdQ8(63F%GtxRf$R~2;LEKtVc!UV2 z8yIAAP}*2wRPK69#!Ik=-!Z3%4IK*(~FKsSnWpxj(JMkYD zO;1~1at_v{{3taSUmI>9SXSaTX9ZBi0+7Q-?4O!eO}KMR1x`B&44oO?)y%I2b_;ns*Ix z+d)Z=l;VA+{M;`0StC1Q%s(HY&^7=E$kOt~X$3iQmiV#<3bZ^F=f2*5y_5eZrjBDp zkA^Hj?@Lo)Z*}Eo_zUaiNfL@U{-{CZHN^S@_T%VS4L+arcItZl{_VLL`p zYqV*B)hIZlHcd9vnof8gxHN^c=`)7<69{nPqwiTFZonQ46Fd;_*StOGooMrkZ4^F9G(~xI+aD=e}3S+Mp$J?~^1`2YQL4Y7~N1DNee4NWSYzK}+ z2H21DNQaTIL$BAGQL>Wiz%!g`SXr|ewts!DYI|qBl}O0iWy|ohf9N3Htrh?_DjYt; z5fnj)+KywW33rc*&p+Q50eq<#4dlHw(1Bwd^X&m500B?VWjtb=H)ksGXlW!|h+=kH zxO$aXmlc#r*8lY93cML|FLSbfLY}fAw$tp^X`$b`8I^DZu;2(_OLz+Ik|URi%oIb- zGKCbZ`Up3Nz}$p9W{cOLD@JZY{%a!|l62$J_v^+{yTS)?R5;#l_5F%#`)DFZg~ZHR zfdSHiUMkUa;&_&UW@4=gOC;c0C*4lq!klc|un|oiwBA zMQLL~zHL;#w+;=p9uXcZ5k7??TWxdoet}THg4JK8rL2>zO)4UW@yj1lHTsGvc-D8i z^&RRjnJSq(a7iQ~WZ-$8!@@rS{yv>zn6VAnF?j$To?l2IopTmG)Pa)|I3p>S^YE7q zlx0uy)>37-AbpcbV+xzY5LrOxt-5OA=>)V|k=-`!PNDA|2MVm7t8D1>+`0e@ z3vOF20IK9sTptY2m}d~{T8<-qjwrG#7tl$5Yga`fNvjr8NR-c|7%dL3r!Tcs2t%xaHUdD(@93C5*P_cQ%R*o~yC zK0GFJ%J9_X`m{7tBn}(Lx!l<8FU)*w^T2RIo)Bq<0zWRS6xX96w;_i~!cBmNOd8yd zN0{9tJrnFYbdXdsEmENj77x&2Zl{sm>=f?4LDNi{J`|SK2BvMF2EdWB0_&)h?kF^5EuFx3J|dQ8IYi+oaC_xSXvhMh^@ zPx*q^wE&pNZC$A1)q$gC-!u_#<|m-Y{NtPjPe>P(g8bXL=XUaLz`itV>e~nGg~>QQ z{T?!XqfywnPNFD&j84SIIR2FLD1@)DHf6yV>Y$e*VHqQMCmca zi4Gxat|4K$qD`LZYLJA{iL)$2l`JCsZFK)^Ms=ibHp=59*_Q2iM8#k!N7(RL@j)Xq z6i83Sl0on#Z2wdkr|SuK@-n?YWboN!Ugqk@@$^N7}4diU}{#K zZ0l-B%DQagnexr{eH-EhLgk}be@t+K;=0ZJ9{$40ch4)&OuD$=ssTE1)F%V*yeid> z-ac!(q4id4~VO+#u=G$xSRL*S7rqDwkk>6wKnu zkqNv>r~C6HnR}2-2ea0f1>CWC4waC!-^G_mjr=n-ly^T-X3?S7`3{3ipxEm|A8jnE3-4BS4RENl8@=vBWU$7Ci#!54PF+syz! z$Ka8ouAW> zI2klPgyJcA132&;_nIv)*cK3_bYM1caP@&fRb1U~BY{Y#tzT3)h$-vk>lja1d>TPn z0MwNRlk=N%{1?vVPXMcdlb!>w4A9=?0eT-aGB#d4Y@Wv6D22={7@xUkXvi6#k>I9x z!th74Jq2s38ok}!0R%;Mps`=x;$Un-sel{DyY8WrHir4SFMHj1OsM-{$4blP4l6j~ zJsd&eo>reyWji#dZV~}S?h&LRb+ahglw?rH>6U8`j#(5fl(>ad16aDjTLILo2;K6* zfx=lDIZsFTUY!n|*ko@v#`tAbe{v=8%h0Q<^{3CPfIKCU@EsGHcYAr@kC(6P+l^y5 z3o$~!(2zkng%oTw2&9&R7jaV(^WoCyEd@K#$NS6_a(cu?c}fmY#TxATq!h@!Y{UKm zKMY-}7JHCFE|j@@V#(1{kEhF_{|U)HE`}TSzO_lg+G>NYhw5h1S~ERF7!LYTHXsk3 z#9YjXmaaarf=4_?I~m}7#SUG)V0gh*UGH5H6qXBgZvU;Jg7QT^k`<{4f~|9=FN8zq z`^P2HC+b_n0&9D_k2?kGgh|l!R@tl}9jo(j#>!#g?&MKW`U1`^+fCO`MNcU0ifPW& zjW;c?AD=sBRdvx2#VG|yUkGvx5TF=$8<OrIYVH8x-WoR>EyZpIJ%n_RfX_oxvlOzT>;fP)c-f@D*Zic6I|)#_Ew7#Dh*B1Lu$o)-t$8?4r}Q`h!yJ5b^R1r_iMVv_$gAJAP9z4; z?DWyA&;v2*P7^3rgCV-sM-zClwsh^Vs7>f-gU+N_)|$_yXBN4-GkaHvp{D((;qhxf z>{yKH{%3t(_dHlEo?O-7-9da~k!P4#7aylTKYdveC<|Z~TF7OGd}&fQ$^Nc0$$f*nfu`AboUONJR@(l@*O3Bm zU1iD0c&BZisD3VqhxfsU0%FMaS;3nm*>!|A2V|o7ZKPIFBq40g zu^{Q;_C4Nz7PiuE0^^+Bw2%VgvX(*^OO+YzQyWv93iR=I249(B4QD?7{kC|<{<3|=Wu<^a&i3%m+1?9UaqiF%bAsPzhBgG+oWoM zJcv`wfmroJUx|~&n{i^oJP2B9FwzzV``zCfj&tVubat^{y{tKJpBpIH?WjXGlC*y* z`Y?B=(2q}KV>j%Lrbl0nF%O>Jcv6RWZZ}OYo+eyVpU7O0b$Q0V*J$tMm31mNx6XmG zC0qL(oCVh*Uf^rPBjP`I{T)OzsHD;=3MK-wUcFdFAlyv`8xe2ZeW?DEyl)KI@_F04 z2zc5ZWCYZC-Ti2SMG4{{_8F?5$wfWzGoE{j5#QGoSdm zFsgv#Xh9Y857`yF3BO(s5U)4X{0_b2xiRj(kv&pbNN){Cl|8nOJ(iogsa;%z#g*Wo zlFOU;xUCsdR4ypE@pDe)O`#@Tm+E?lBc(HZvu1AjQ!{%7*FK2pwzoyqL_E0!wY-Vw zEyE(0>sZIjbTnlf&JBjPe`s}?WzC$On5aLclCn=dWu1En+h%_J{}RXwa^zwWLKV;y znxAMG$|cVAo5r1|wVg`Ab98Edo8`+zw6%j>pZQHL^Bj8b!Zl-x;<39y$_+gA($;I# z-8pP`{Z$rTe}1rmpQP5scDF#!GfVca&~Fv~xu{5271ltGTgCn{Y>>qWScXjF&Xi29 zuz4A^j)NGP$S=v{B_9^R*|~+087kARnn<|n%Dl0>^yDtkQVxZDO&gE#+f97!<#>7D zguqGvAs_m}?vUUe<0n~sb;{4r9*t-FNedYy!*4P#YymJs(-zb=4^c=C^m8jc9oeF> z_0EEHx$ZY7Ifm8(V6DV(euT}-gZlBqDXF1#Qxs2HBU&8{s>ZhYB z-_(SPvwweVT6}xuW&&F;NmwX+e9!4;f0WLWd>Di2mGo-DMMT6yn`|sZA_MdgQqRFC z_tl==41a-{fIucLc}H8{uscFdhNCFGnV&!<)p2@viWAOIdlrxPb*MmMRx5+wz7xat z-J}iM@ZVh^gjS+b&+q=c4#W$*w30Oa161PSesg+%|H;jYtl-NFW!W=6%FNVe?wFl- z0DVG5wUyT1yIG98dDa-RA7@IE&eSr_vWQ)xW15@x&B|bHa`<4vkme&e+3o@OIhtm!t2htxGVa z5`j^3>C0^?m}TbnEsAY?t-s_w?^dx12DVb)dnlML0}IOQg!%203Kr?>fK-o_?K z?p)*6KEE2NsXGu!p1qW@LBEj@%^v|dRt&W7@KbDk#l5*__7> zQTp`4&7?VYdZ15llc%JYSGL7&y_vl$K4ag$)NfJ>>hLXGrl({7InfF%*vVI5)dWXHu5cc(TWX_Mu?U;v8JbI+)`-Ox?4x$|wx zTIXhc2xfm@#3Vk8STcaVK>5>c_+eYjVLOA8f4ZtXr#0ume`T{6GSeYTeEr+wIMo1DqXqQH*YT zV%1KtQ!g<~4#7`IfiIX*lt6gHL^Mo6zCkp9FSHKdNL>;p5`m!6qXjLeNiNW(lLAvH zHlohmhq1cudF#jjWADAcnrfT2;hhGN8l{PV1QF>)x_}TxMMaAA-kWskJqe0jiV7A$ zKp-ke?;XTMQ0YabcTtKEigXAh@7m~f-_QGe|G~H3Usx-IwP&CEoH^#0W9HoWmFoP) zbig4e*4sY!tdH28?>T@nO}(g~rl~$wRZsj(+wRgEe&&Dfq2BgdA(m-|flXFiG1&P7=}#1VBpy|a%W*N-Ev^Dv)3 zoZ%S&(}O~bj^*E1DJdI6I8l`~!S+~M%T?;#4%ozw>yVWgu2{EkFKmjs%XL#W1(LZd zKW&||H%Z!kD+|*NJg&a`!7b9)&OShFiDjl?mDMM*J;Qe4oYR$Qi8G!?Gfdf z)ITGN;Cm)iP=`+x13k8i7}D+SV<^>W#4V+(T=%@M0DZwtnt@DkmdMq#mDymU*PrbO{>t5-}^i{W@$$c1$|*Xq9Wphx$;q zvxd?n30CF$TpQBSPxrC*mz@2D?*>PGiGLNLgne&UQj{~iB@L3WjEhpj)u1>DIRe+8 znyC2&EWZyj{{t#$eC&}IVGyg6cJ7E5cd?$H{e!fUB3J=k+)R$3f3L+8C=i77 zuyb?<0B7WI7hoMG!uZ&u8mm4ojo3PO`$*NhDZ8haAE#7M$6ur@eqN5UilLs&eJlPa z_Woyg?$ABeA#?}{siVlHWe6i9O(T5!yU=jT#P&hxq-CATT*h)6gyaCL%L?KSN^Y1E z`||aPh_=Opz3{7IyDwVGCHUK_A9Lh6nj2LXe$*UEYPDX5!t74b$&u{*7RIc9Pb^M` zH-z_+9O%x=^?x(&pMi!0Q`Kd>e$x$H%p2W=+o7<-9yfqbEvwhWNuZ2!j?ocYZuvY*G z95vJkKyc%hxAovC%;D!_`jPynFj-44iCY3zpu;m4MH zE${8?hRxUW`BAs-lUf*uSi?+kr&D!u?nkMIuG|rz(9;&QsW6@WlF1V_7Dc(6R12*S zKWW#b&lhVQE+`v-;H)p+R{FcZod`%jqwgyh(wo_q?XEdV9RqEy{>yd&y`I!3+1vc7 zx7skd90}~&dySszIc#I~EBJ=Hn^c~_5(n%P>v}~`uHr|-F$Ld(wm*~>6&v?WON$eI zr>vCiz{}&i8BxIeJ5kF^pk)kz=YzUC&PiLBeWeU`zNcyWUv{Q@p2#gD>;9|fpt4_= zPl+3CZC9V^N)}b)dSYv&Le9Q-4xzsFX^KFb#w-n7iN@ z1EI^^FLWNd6w!Hwn594%;JG+L{KhSz!PsFW@?5J1%&L*stH05H;>*14M(^$uTNq-#C+1_D6B-s_k=CH1!uwy zU9+{%N<~q7wRI)5=ZV6fyO>S-ccuQWa4R<}>C(`_r*{Wwljq%&OCF7`986_}*DBkI zU*GNN-jmy1`SQfM<|qchFLR=S-tiyJ6NkQo?yZ3eAbUMi2a}76d``M#U8C}G9A%1u zCHGw*5cVJp$Xfe;7Lnwx&lg>AP{e}Bl%@%$B=DGtH3;KjlygR61R4`(^@QM2R=SWxi z!5i#mDweian@&_Ia0WO$L89Zv z?fbBbw%gjxfv>)iY8Mb9a%g65$eZS*{361y?LrrvNpEnMQ2%?y5nYahMr)#JmA0u? zz%2H&di{BKRwHsrKSLgqbwvXi3GNz(A9T?lA7*<0#QQuK{>r!4mfI40uC&jmBpFK| zBmvLGle%@y!=t*NYV6+oBpm-DeA8GwCJa)Sp6RT?^I`aOpLlCx1sVOvWstl#@cPo|mz$Y&HONy!;< zQ`Jr5-ONhu!M95p-Ft)Xp&XPBmKmYtqk1tQp7{16kO1$7DbNxRe#Bwo8AL>;DtXa0 z^)5k_r0h^zIVo^Ez>a+r=IR>G=B?%s$=GN2~2hyT9+ z@4Em@PBnyYZ4@5N*zdz)=`GA_57Jw~?#+e-X6z=D!GP zx&)WD>9#mxQRd`*2>~PS*Z0Ts%Tazzmb(QF?C%#|wm7x=TWp`JkPFq)?LFQz>O+e) z4Eoi4n?fCa<87appUrq(d+4`3-+4R5dxuYtBn28f_MqWU{NXSw$Ukf3Oyyr$UwW5) zo%3pP-(|ZSRgl>g%M;}=BmG_@CG-(VL{$W7uJSorLU?FN=;fwQ>~$KmPcT0_`GDun z)^eg~Lzv^3_au+;BJuTCCL5XZ($VzqQGXVsb{Pkd41H^l93mP7zNdw`yt|*hUARG2 zsL$>r2l)}c?VpUF*$+(ifcRWX-2D2$TS+CMq3_c9a?)Vs+Har{k6A$3pzkS%=bgtJFrvGW)5$&koX(k$hO=CU#m5D7{9Oztk0h$SlQ2m|UzKQ=i z-G7rJOxud1&ZggNShxGQ(DkzFS$qe>yD`D(;XgqhQVu|H!lS;7{{|s|N5S0`yB0eJ z29;Qqzn-RLJV3IrdJQnOF0y_5d3QLM%3F_QVp6d*?-;EUe-m`Um@18x@nYq=S2+AQ zcLNL9$nlAX>Q2rp8`8&G zJtDQrz2T_d(8~T)!6z;4H{Q4F9G0qG*NCoyP4|w11Vlvu0}$9Ac!KBwe%{kX-|PVT z8CGA}kk%Gvzb6_=+j)M>j`0)qviuYoqHRp|5UhW45gWM;ox*`BSDhUV^v2$47x?S3 zqzq*3y(EUQa5w5U)kA8oU%WKkko!UsW#xz>&t))A&%Xm8xbC#_%YWA}ZwN93i<5R9 z1rrey=Jr?DvFbXTzuf%IKscct>CJpg`}|z+;@=#9o)ftQJGV}3Y4tn_-ZbF{6b`89 zw$mN1=g$TlQmc7&2oxAsIzvACcN_jV0}g=laiM|U+Xmo28U61sL1WuTP{92Av-a`- z<1&A)RSQ6HkDrxa_@4&AZ|e1M0A~Bqk?_0!`&umsBoOfOIrFJQ+V$Tby^)|Z`rH^2 z{NLA7k-`9kA6cHLzkBiTP2iW=&_HjbW7EmM&-g#4dT&FZ0H3h)o&ReY02CRJ2|#em zJZxLY|9!2;U_Me7<@rmQ{_{0~0!IP?lP^lO{y*2U!U33;Ys3Ghl>e+{To?loD4*}1 z|GPE+z1IKRlK;0Q|M7)#O(|J+2{~X{8+_U3gr*rm1aWoLgOOa z90nD&+2L2&mRLUE4tUuzc>elDm=+GetUTlhe*i#{yuJ{f4eN=8=5N>J<|K%Iqm-?C zLbum(4Zb`7!VPH|js(cv_rnh{ko*jzOq?7@p~db(8gBBI#=Gc_j$iDy=+8HI?DupO zEi)0UG8wo08nkC%0GLB4@>Xh+f3ZHG41nOIPVxpZgLi@vK1iG!++66{4R(ni z#fB{{QmMWFR9P^8%hLGW5v=6-D=O9M;6fYca!A9vjnh(U67u8ff1#L+LIb6+JGO`U zr(O%)-$yKdPP5E@@^hs3ZhE?^bFz!x@Il_20bbrOa9c{Md^*p|0L2i!VPMfE@eAs# zjHRt?L5ZjwrUN#j;FA{(xs607aQB`U?9BKJwWJPCG_YF!DO4TI33%%x^67fT$y!S# z2m6`pE8Ur81?$3|MY5ht4(4pw>|GCYTiAn z9cth#HZ-K^X~b_swh#ow&t{Tg&sG6aF1H`%5m%)~PnyWNj8yXk_HrSseEQ%p(} z)z_}TU<%4oxJd^1jL62)AAk3B)e{N_GP>fzL2{2Ir(p6OuusONm`1b9%qcvRyBxHM zv0LFXD)vhkKRvzbW3HzbUeZUEXwWERbPM;lpqG&~tcD2jd>kF&Cbnoz;dXnhJNhU z;jifMcO`dsp4EO+nrkb(8yq-XpUId4x$IN-)I3x_p6Lt3dT`9Qo!!@j&(H;@g1nm< zs(p9 z)aQI2yPzdj?drYO(a(YiNO@)ST%_O0*nc@eKq3Ia6`x=UqJzLu%4SfVqHSU(|23by zFxv31XF=57+YO50O#@mv3M-QtJ1bjc+Bb6LBY9&neAH|rgrJNwj#c7EWe7U~Zo7DQ zL@x3}eFaA#hgofQCyu#Dq<0Ok>_jKu|3rUVNMu#s&0F(N{NtrS<>1qu=3+1~BBc`4 zI+=%PYl%wxs_wtHV}-F_Pcp|_HmX!Qt`WJQqvjC%(fe|9{w9Sl_$UtU{;n?@_W}`+ z6YWf99z!D+-3KT9s(qV>V|}Ay_K=8P_2?J_xedZ2KzC(!j;E0de392yQsGDNuN?*7$ZkO3(mbnu{p z=)ui&#b5HGF5FZPC92#a{$`w9pEI7J?RDNPNT!pJ5|O55>ryp@4(`vHxL|(94S%F{ z4zj~{u2o1key`-kAQ+Pt8Q@u46RZr?A>W1{`9G;=to2MG0#nf1)+H(AD8s4;iYxa7CQa z_!t`*Aci)RN=cF$N+uRO1SA>V_PG%V_xnX^W2M>QdDgoJPbJ5G2W|UhIYSxXy}GN0 zulJAswYhZ-2awc1tXCq@IMM|aa`Ax6-#OguxPBsyEy#N>*ZSrN4OX?g*cPX9WMNt| z=V8qL&VWE}9Y%Rnqx`3*+w~O4f{6ajF2LGrQTuyOJCi-?R?5i$Y#aGKu z4R5SB`hGomf48}0Xz4z;N0Jz4 zY;-8S`x?#s&U-;QbRT0YSJ&IeiCzKS?Ij-s+L-4*b^tByu0(s=Ly>m!>5B zwUyI|e1!yuWGgExJ|c5!(Mi4E_5(G0R*_{aK%h9iF$Z;i>d zXI43KQ&vI9c{27yIq>soNp3d5JD+7S4GRD6iPhwTJEitByA`Th*7;QDLZcrs2OiCh zO@)Y|hXTwoQzUxhpwcz*zrI7hjsr-=FKQ3d2`Qd2%Op57Jlv^U>c+`x;`$?vx#BL~ zio_>pwf*eZO72S}=O8^@5qBF-cfag0FY^o{Yv*+}PLumf3Q`>et41s|&4E1Y@D67M zn7W!}>7&cZ2!xyP4!f=Qzs0p4BMR85ME>bjgyiGi7Fn#6cn9r5!u5G8Yg}|kLUr~_ zy3;F#s&>CQDXP9Y=zHY*BL`ld3SofGd(|oD?g90om~>dv9xX}DBkrOpp0sea6)q#m zEMpm(;6$u(Z)fQBGIzloPhb6n_#6AE9k7hm@NQB#OwoEr^{I6O6w{~JpxH(0xTY{U z*oJ1_kaH1R1<5XV_2_R7+gv&oqBo3EimWCH8&c9|BECc~rId&wSB)#A8(%$$>-spr zwOG9;QYAhqJ=7%Ws?@DzVtZ2tgMk0nZ8HThz?7W+A4O`a1<@2nyJtZ4;m~?opve|w zB1x6%%BZxwPV-^Pe-K%2o%^_r7Qc9YMWNit26v8wG52mIV14hcQ;`M0>+cp3z?!XLGXHX9Evr~!GFtnWnU;9U>QsBCxKqPex&lHp1N54 zkS%RjV{!6k98r8d$FoSybLr_okw(V8#$4%ZNY~Y;;`q?^XX0IWlRc0eLtrVCqp-U z`7)R09xZ_Zeoq2lufkwtB!}*Eu(BPUDw19}e`YaBK0+i9P zE_*O*_edq=57{~eGinBzd+gIjf}{Fv4dRIOf`$W9NfP%rIGcXbhRszE{%LVcaHb2< z+3PULPi5BI^K6tvkrA7cLaMZMuA$mz7lP}_uE>(`rhRU%jZhs zMgigTNJ7n?nKsa#&n6?2G4grAMF}rb!g*(}@%@whJ0ueq+=6nc(Nv3d9muUf?dvES z=oN;w*@Fht*{*svbA8izq5gd$UB#WY<3V&9bbUOu&|52%YU%e20nyoS9@D6Fs;o|8 z5RsKp`Qhc;MLYJ8_hWq!ko=K1RUhFB=G9fk1&C{AW$j zZWM=`*bFVo{&Zte)eoPpm*wjf!sJwogQ7=WZU(j1Geq0?_x$l5s&;ImM=^Ok=lU5% zSm!Z@#&o@bkBnVEJ*`;Ct*6h8nIhH7(zi3P_Z?>bJ(Q@)O`@B?TVK2*} zYhtIA1K)W%uDh(4s0OlKH9lSHyr`WQ86Z#{lh$2KEp_vVf9EA3f=tNf*yuZ2QSom* z09I!4k~?5wrknuvDw^}zc^7GPvZ_FAb$e@!yFo4d>#`1Sxyg%txnGOTgE6u&180b` zGvueZyJ)UvA(PKZ*HmRm=H45&*PyV4Q@v)v)oUcr-_^1(#fu#moDsP$n6ZFi4?!Wh zELK}I?=cW$F_{b~VE!9^rWAa#P)z6Y-uqoyZ*5~PKyT~*#dEKsT{Jq zlgy6sldh`bXx@8gXtVz2kPnWwx?ao1uC7s68qtZ|`j$Q;dvE&GLpnUa->YEl=Ja&D zRwF8cQT=cd%Unu1Tqr%Lw_o7C^_UIp2MZ*)Pum8cvoy}8ZO7&;jeUHVZkkAA4Vc9` z+O>Y=eMaN6qMsiubipy61;knM)p0E6`w+-Qn&qB_ZC?s)%cUCA3O9>%s$P>ROR8t8 zbWig_{1|X?0WRQS8};Ay56NWMWgLJhdB{$=4{C!qFdgp{c4-*b1L?-&9Jpnh4j)KftoGBW z+Quf-#8^(KtMEI2LTExRNd4W&USm+=bXOkY2C0Y-2(6#2KAp@PnoRp9Oy1u(%J_^% z|E;B5Xfm8a_G}DBRLjAha~mAF1*vD!z4Zy#y`>beh26wgjNGeO`==bJmPIHgC2|ua z@FrcZ=CJ!vXeN`Gr+4hizmD@2js)JxyJvuE=a3J+Z{Ur?9)EnqmqyjdKI$h^>=$pH z?%_Ss(7;a(cK?nuVU)%H#gR3 z?(lH@RQUci_>TnK1{;O)g;BC}xm>G-t7Ct=&2z`lz^av}8o17RJ_yIY_VOJ45_T_7 zV|mgzj#$xRTa*3atcOXy>KR(2zZ&^gG6T7jY4u4(`_gw~zCpf7AOPDLzPi| z7ZOeu<`-IZyl-XmQQ!1ZC*X`IH6q;k@!{cViYs*vXCZFf#G4NQTaghx0dJJy}HJiWXks3 z9kwTZL{v$`;ghB=q)4BRe0~gyU`d~Ja7c9KZ$hBJc@B3M0|L+z)DvyAp@K3rE= zhd;H2HptK(SZAKIUwUe>A46TXLWTT-T5bwiWyw(&BqNXv&ItN}=C62p%Zn(bh=I#E0!f?ye8!=gPr$-=P7i4~wmm`PNO-Q^h_;!f z{Z)YmnX^7vN*cD?I{m!8xTa&$&$!h60%aa9c>P5?R~Ov++rbGMF}Q|FM|kJB%jI_B?x`Rv6;)ZXEF3ULKP+>bY{3uBdVu|orQT9U z(Cjk&C8xRgjK=Osa2Fb_ zMRZc!&L1w&s7T?~xAhqrxdWmo`HAcws_H!cmH;fl!yU4QuN~&z12!~JirrF^1Gn%Z z)V>irK0^+=EnlZ7@9jFLJDNTGEXZ(?y0}*%H2REIv^glf;i+~UpDdct=wkg3#O#*a z`hEJ1RNa0)LQzQ-clxfWi?*=>>|)#pV@XD{$ON+r?}7ZhB7%2Z+Ji?i`!D`WSEB(4 zU_<|>)m@pc?adXtR6-le{Jp}f?zqyGUT$1v?2*{6dWLpB4D_&3Xy%QjV6jtXr2;zp zJrUN=_A_NE?ZJUt#3w_auXiP_q&Cv-ygOh2Yw7cD>j@7AI=2*n>n~Ysg(HF0i(uUv zcJ+|8xs23Hk5qlQ)*!FwIyb8~O1XYudm_EER{zTpz3z~$-h}dkp3|l2-1_>~00#>b zS5=**RqgsBe<&dG`VZs<- zio|@5{viNult76Ct7s*=l}DXJw!5EfH@R4d?yOhN6j~RWJvCHSIHTC8_Kr-cK&nL* ziBHYEtcW(Sz2e#xH68C>Ua~=R(OE($9g}1pD*e>ZJwZ8mEje~OXuI($A04}VuL1OL zy5N-oIff_coE023uYNa`i}t!_=(MrCl>EZjuj3!NxCM}2%g%(@6PY*chIpTL-s?I z|A;vA8W1ROp!AmaC=|Kz1oQ1wgYEHaE4fO0mien#``NqJssUprEi5SXelAZ$={XxPBZ?)^L@3Gp@-eR>Rsnm{?l9A>oq6Mb?oJ+Ukh~r-O z!v%ax5zj|5ows8LUU-!da5Z029xy*vO;bOrg2*y=!RT~Amx+`5To6~&_qNqD6pL{G zSTyNF)NkJn(EV+}ZfU{ypLQq=fge6%(KG2AO39T?wc*LAtf?BHeI<)FD4lif!rSXy zG0Pca{n2@r97`H_%AI2YIaid~mS=+rmB~6Nh{hFr6sA2mA|{8y_9&V>=awnfNao-j zlJO9eLrVy_DH&bDY#YyfI8cUWfSd^f;JJ>Xfz?xCYMfxcD8;y~5BlAF-9|hZk&fsg zs$$Prt`KjYEDyTi)$?LM*z9E&pC>*&1+q|*V#x8~m*Y8}OueO6uJj~mmb>&&c~wlG zdOfPZ8#i3VKkMl=ZrL%nLkTIhJ+Nl+aOqRcyj!Wzd z@Hdeo-1M)0@Ahl$%4oJw@=wPiVYgIm!Q^o*)|u!-bpulalG1@E_CyqB3OJJWy^sj< zU~R{WEv5JC1=O`MQOgqy1*{{B8Jfp!j!lv}MP3=_0(d3vjGyySvBaoRYreXWZ zj2f=h?-R1(r3!_#<0Yu8_5$N>m%i-f24Bus6DyI13uwK zuB(+3SOL>At=;^_bCF}+dVFQ#vARQdemTA>ImZP@4VmH#T}Uo2m}^zg@;Iski&3Ib zDFKeVm+diVT|OWyo+pA)^(i*L(UBm2KTojwLXOb2-|j%lO4g-srvm&Nx2qyi4i zg=c#L=?8iX7Sxi(6QSBaMEVdigKN4FAbG&(T}6>Gq$^_D;lR^FNAH9z>>s*-;oNdn zFcIQWXuubJFXhf9058RM_2eu)c_m`Aftuc2GL+Urbc@scF(BcQ{`*H8HhJl6!yN#c zDM>hvQLf9h_VdcTAz|$4`RVB{y-Qj5e$DH?A}&X)k3(~bkyU_C<#Z}Sl50rp#C$dX zyDH|WKYCngEQkT9WF4^Mp^6w$aW-2Ir4UrSSK>QIRQ+AaAZz1IFAECAJVTy=sy6QM z;WLg7si&-L2G_DL>XqrP#&!aH_ytJTOj7s$Tq1X`-`liwS%j5%vKW#unRo>y3!Bzo zGGv{}#Ak2^{po95hCqQvWp}b16uI#dBeGR(@P7V;9miMhJf7 zA_?7)z`YvUH10!3(sgzt-qSn7{%6tZ!dFDu5!>Uv&)m9 z>piR9l6Cyh^TMTaa)iPP+VGL6%XG&$m~y!!Ma8rUHv>$(mE%U*8Iaa+zq~5{yulTV ziv&toKhw~Je$SE8=EDNR`V2|9=dbL)cMV;2uVXm-6?cR3Sy$|08g|0^T)$7o}slo%bQttMK3QYxgI0l4El0C z&#BEs`+~|5@|6_I;RgQCVXP1veCY%Y&v0;Ff@LU8E`LqKzpvQ6kv9GFs8@NBwAj8z ziDbMcVGdD#9OrVNGVD_~YvO_#HKQ2}-=&VM$|J_VN9NQS^+hEm~Cr?xX;`m7u2dqcQ0^t zRFcXP4Qu%afHoW(>Sp@qShC6DZsky=Q-}@%(paS_jCYax9e;1pyUw$2)bL3`;=4(a z+45}os4?t5g8U#=6)Y?0t-;b4i}2k?qI=KcOD8n4_9rDCpBaq3vQ(s*vo!sREy#bm zv_Do@etR-w-+znfIPZzXM;${x3qe3OvL$c{qLuyZgp_acwt=uU$+$$wl;Q&^$>fV? zKjsttK7Q%>NV?c^Qe_?N*{~BKh8l^f7@&Baj0IkWut7(YKYoDwe_$#F=zGE zr_Kxl85DUD4J@1_JjA(NNP*N#Ing;S(N`;N{Sy8T5`6$l4|Y&4obYGN1A#AWpi{%_kdl2!CVbNVBT^ zIe$J|;8t--7{t5i`K20R5AUjl*Rg^e9H@ZeA|bc{3gbe;NA3Eqf+it=4Gg? zX(BJjrg7Q&Gyfp(g;MKORp;Qh@p<|+XQ=HAQ(#gf-zROgMes)hOJuz~kNoa`qP!O0 zq%Y8)?uz#RlvI4RQ(?Uwsow!{rW4UdS6$L@Bqnl~3Wv8|`O{W6!U33M7N&+606H#_ zVAjP!j%CwQ*wt{y(p;&P4MFp{Ma+-Ab*K%Ylfz1I)Vwyn^fcPauS}2LU0prQ^w!k{ znHN7_Rz)nhf2y{W6#k+mS7uvK>y~Y0P)ah-$2p5AmTsdgga(r`BHn-C^vD z5hX=NIx$1Eq#GZm$mv#H@npdQI>GP?t{(aEoHO!L_r=>EE@|ASi(rvgI-G44#{h)j zmdEF{0DQ7k!rP8IzrA=HS}3jBV*eo7H0t`|K~9kk-$?3yECA%uq$ABjF2Yeeo{&$F z^0s%!fUo6YM>s8RHCS}S-hUsb@WtoKecNKiaX+EWnz!#t60Ist29^Ynq(jM_zzNA_n$rU__Up7Wov(nE8e3s%0Cv|CpxgXXkLfp9CEL4~y>@8`xEgkm9BJCmE39Ht6tq>4#_2qfYN z7+1PGMWBmP#4&&!_8>F}j+*zw_s*6qz5aP6v@_~Q8g_!{zhg|X+j>!Cdar-Fq||Y3 za)!QX83c_BcB(eqU-$cE(0u07`7Su2A072wmX8YNPlZ?=@!J1Y>wQ$k5yhI=3l3+uk_uH=%aIn#qr zyK>d?YTirH3~rZIG(Z0&+R~-{zyNqOYC2`~Y?sxj@H1@=9?LQ(Dn2iA%0(EzX)wK_ zBO*swcpd(R0|9#(4Ouu%z~DxsWL_Qy{BV%*~DI?(U7l7 zi8Z}4u0oi+*Ll{GCw*YJguIa)lpsccJE~>m?YsN}TYmDNIjlu)pgS1!+0ie@r4`=DPp;jr%ZSr-!Mv`Z6^Y#L z$gZ{&7yi{w&qw-bfpISk-Z7?_p|W`_fx$7hBM~mqEDM3zp3h!_~Pc=IIrAGXTnl z^mu(Obe?p5rIi7J@M_UNUx1JVyWJh(FMd2hBo60>*?uS*9t}Vvr7-|uCH4jE5`gbH zc69^qe_kwWknRk55c}P9Usa1}S96BNywRwt786J8k^Q0aC$*V(8m)&40a>uk2n%-$ z+46k5{FM|YZ(;o(CrRu zR(T<_%W9jIwl&>a-h)KW}f|ud7vX@;kS{|F+!JbMz9nW`jXz3YFSh} z|K05}0-o;Sapb~PVYD1Ui#}ug3V=W0L<6Ohf~0jp94X_--A$^%4DHJ8)4OhNeG^|T zXp9WNSf4p0!f;8H3?nC{Bt`2WK+f936RtWs;6+6 zZN@B44@sIs@zeJj^3KHHpKZ5Rcq6+`ij5P^3(cN>(+IsmZNMHM)&$!umQ%OinXHFq z)>jq=0x>2d#oj+PlL0Q*6v%zse8q7;g-71Hp{C;XZbgNony5d8I7t@*1ymJwK)*3T ze@V&c&-K*4+19PsIr=HDIq3Fs*7(gTn(~ePag#8&o|6KqU?N41;i0r=028E2NvUOlS( z0&KR=*82A$H)1e5`-9c3%N%rMZ|9*X`S5nBPTm@i*vBJlJ1^BIy-ask;+kjBhbc~7 z8-3%ae_6$9-au7FUF3;+M3SG>qekt3G>9`JP8FwRdI$$J`-7+IZ|`+WbKDRzK(9@|dMG=1-~t>s#1!#4&JIgIkR=0ip{ zg+bnJ^-ba<_{3D}okjJj@J-OlbkrhfA&%)R@JP81b~v`tH~$CXqU`48|OA5Gnl zz2mqx`9`zz@HkbEG)flQbU6@GnA-^?#_CubYQvhCpJaQqBi&}LpZerU;lf(vjg<(A zdK|p^T=>`dZDMlh#~XC7DXt&xdU_mk<-LnI0AtG}NRKCdIEwV5K5t7I6JZ^-rF@pA zRA{}o0@8>%)X)RSi@~+h@~@C`w*9b4q&DmX zLX!I*>#t@(ChoZz81W9KQWxDSsNZb=EwmHe{QI;NNYC#LHL$xePX`LdG7MxG6dCat zCo7xSjm=T^T)Fj#X1m*MyEYg9&P7|(aX>1mf5Du;-QWx@^G<8mAv;q=l-Dp{hBVdF z4CJn_7l}v>`rrPC`C~hi+pRUCg?C+|--+=T*Y?BOv;u6Q|^Me6+A=-vZKkP_rOyJSBQl_8`;>MljPbSe3#eZXBZhhKu(xE&9Xfg<1W zLZEyj7{H6xm1p#lQPw>s2(s(|=Qks)^Sa*+0)E&U)BP3n|A< z1H(@0*R53advdbh3cV>XKl&l)H34%zc}J@`u*Rx-Y^m*KLGsHY!)cbd!h$Af{Ml4orw?ioeS#MLVoFy;gU1C-RjrFrjp)vRC-pOUr zI^o0C@*hUmiDU{jo=&4vb6zvhOXf}=uGF;@%5R(Cfvb*R{bQR4KZ%2w)ls+#AfLBE5= z{`p6bM-P{|rH$@j>V4)DbZoV)^WvwsoRa5)dh(p@%s3Njs|xm;>;6MYu`dS%3t`M}r!MJfQPX)1&>?hm}YU<#S>Zq1nOX8Xa z!2!F_#j9KLCz)diJP7&t9w`AiLY5(|KCAfF+tc`7Q4&L$_6fw?g9RA^MT8NP0;%h( zYOK3*w(63`5B*`2?YSlIZ%n zi}I*EK1p22&;>WK6M%jI^`z&hCzlTK!BO*(pvb9lj~4tSHJ`Ca+CT5ObUc^gyk6XP+t2A61^G?g#$LIgjhiwX&sqWeU#%V7Q4|w z<*VAJ)Y$G;4^Vo{z3j|*7gl^K3>C@*F!UNz3k*%W0I=qmDau& z66=x59<#@YW?uC(?kC1m*V>Qyez7pGiA5iF8wqmYDY_r6CMb*@7uZexHbZu~b$a*e zEvhSPdKoB>`@2slUU?f-x#PG-WYk?g>{Rr|L5BluxFMlS5f{?oitEseA4sLwNf9>I z@YGO$9wFD6dPZ(ovAMnrX8sIH7WVu?f|%W*3h_S%nx=N)0npP?2_-|5dwCk1>F4)S z(^c2j2lnDW1!7ClHqzbGdr`e{``3_98$SwL=Xd;Ctp^BlVn*LUK*Poo_+T0V5OX z*iXfs8RaqGZ^d;Or?-W?qb9M4d3UwYkbm3zSdZ-+S~`mZe4&V&@+Day``1rAdl>JB}HFodcxhSA&qgrV%b|VVgjXbts;f;pUAYjvY_gLnWI25b|9>62t=GpevU(|q3DM?K zN+>mRdc!O4w*nhf)jc-brv`p%z=4a2g8!L9=#Crn2h4N0N}kr^{VSl^Lv3_LFoNM ziEeSG>}UPRUSoCuEiP7fIQ{;)0@lYX%IiHpiCXubj~|}soL9hm9xG{k*AAE!@7{L7 zi09k@s#sfFlH@t9Eksqs^A5aK`4{L;Tco+Z&!gP6!@QP&zJ@d^u92moJ*P3iR7!2F z926Omgz2dJ8Fagq+K@?+qjm|}mU{TNconHQ+`h1QaE(Hfko`LvZRdkvr*A#8ev|wa zAEqv;Ai-_j^#EDTmVQt&=SXwQ{hr*xIiAtJ8}_B{kwH{NE7}|quBzVA37gJG;74(GvnjDv$o0TwY}A|rICB*zv;R)ea7bMd4p zQ#fj<2v^T2x!fFt;G*-jM~z=OZI}}-@C*$|8W0pYC`vYAhl`S`!VIu zXcUe#!FabeqCRmZ(}NP=S;fv;Vy;GMb@qa>T|T1tpp2+wvaW5M+@NF=u=y@nva!rH zUa*w7ednVby0iw&S_8>Ng1x~|`$n3BQFV62rzrWrJ}Di(vh7*j;m8A~&ATFNgTb2J zkVA7D&oChcEXk;XZFk|^GmzQm2tr-ti8H$~N!rFr=(Z~B!nAZ1#@c(!?6S~QvD1X6 z=mn9|MDEhYvQls$ua^;QU)w()(t_7tL6@aUXVC)pvQ#x9KT_KUquSJ8oOfUBzo{MB zDw)+~JIKVL`X@?B-iY!}VEkObF%hLm+4WopL&hXt;$mUZ)eG7lNE7kf0UqVcCSvMg z@&-Xm@1PKS$qPG~ow#uWe+~GSB@Q4(#REO@n0TaoRmf`4ZIIQK)fj!JHIa`{^e^E0 z%QREBef0Lt1&0Ki+r0lA>sh^qUwXD{^KAENJ>C4%`nNIJkXMGd8Mb73gEvTwi#KYZs{ARu=l`(v7JgA~-TUx8!_XkzDM+^JQEIbPAn=i`HZXF4>B@tGGN%DWQW`s%_to*4(b9riJv zyMGwLL8^J*hIw4C8v6jG#CtsJz9SK&y8K~PxuJm!=qaAWfC_uJJ>DAC^z4rIR*141C3$QhGQSHSnGOzvHD@om#Eza46?y_ruv z5s+d*MZmtpf#n~!BilHz8I(E1EOF&r*wNI=J5%Pgsxa4_&9eiSd;|Ogv}x~sMKq*0 z82qQ97623Y7D1&mwjbi~`U>*qnIf&t;E%*}Xn;_>1uESxpn^tFCVwC~FcH+H%=`*c z^yMiyk0D*|1MN;t?*u5I8{7I&z+-$Xy$$z)L*0*})dGwU|JHHR^l2)>`9#l{fw{C= z=hyj5-o3U3L>qp>I@o?67Ir3SCbM+K8L?@t+3R`vT0i%)3oD9 zP|;!j`7MHj9H_lRV-z|kv$)Q~I$|7g79zEg4F)RKdWU9%Bw@2G zDgV44!Cs;f5XBJn6o19IbTRs8R%m#!;fs^TSRnVUg@yy}kVYv&9Gf19WPKNFYI}p; zp70Gjyo0sAgJ=FZ0ecA(2n^KSpHm<>_=0VFcqvo&i1Dry$-A+n;Fn9VBP+>MbGDSJ zzPZSsu(U>qwBR2bd!%n6S1}#T4!6gxHWUlUR(SG;iNo!R4jt&;S+uW)!Af+<8eX-& zmILLWO1jy@tJp8>$A7=E)G%pK8G!_0+a3VCgj=^~?t;Aqv{;t}juc^sb?8FQ;?X)a z^RlcALI;`-Ic|)$x5V)OZfExJMx_i)hZ0HSLii6&CeGt=A)Fa+;g?+8!|3rNK$D6%&@l(95}zDId)!wAK$=y z70DXLy@9V(0L5xvBU$!r7($soer9?=h{oYg`baJDHP8Icr!l&O-d$j^q`5!ff0c)(8TsQ!85`KeN!IqO$N`Iqg&T5M$w_J>vS?svAs9xMH?RT7%sf!kaYdS@Lp zaI;svv@t8g2L7mUbwEtV6f)Kh`BC%P%$W$B+iLMyk#4T{fzI%GL7_$E!}N~G=*e3a zSnzC!i6*I8DB_m$c1wPGus5EAc?C)#X1v5?d^I z3zcrkcm%6lLi{Ng1PuwM`h9dG>is-Dk?4J8iY@;%E3{`aiMQIjsZK{i)W;-Nzn2rg z<2gs~BW!u%(8__}Wgzs^UB6p=7;M_^u*pSE4mKvdvVqy$mB}a5-mu+mTR;flz59J- z8JqsFp&Bu3pjT-3tf1;#&v6L;1`LW1@kJ?joEkEK@;J$Z7r}?hxismWK-!tL(hZ!C z482p`BqLKJWt-q*)l2=sz7cTsg=-$6uaA-x&vPy!BmA0*SY;pQ$J`GKGulpzI>N~K zPQ3eFqyWGTyirf_Y}?ATz(Q%A@&zLws}{c9tf1^23y2*eFZejWGW2j#$iS~$^npHw z(z0^a!UpU*jZ(g<}Gf(M}ORu?j3I`ZEJ@nYeaerpj?mr)n*qD|%sukkD zK$r@yH)w7@(L|?p#Nhv>chE>IFX*Z8lched9{3UH9w1y!?5O%BpT_uk%?DK}>oNaA zW|jPyPZfjiq5_P$yhwMQj5dZ5zkdS0gKDVZHiACp8J~G+nXcN#+`?lYr=!m|dwU$` zwBI9G*&e(9Y3K(*%nX00>)2NFKaC=UGa})uoroACVbW0`TqRCl(!{7BKN+5VH{5sb zk_y+^-h`PNy^uWW~#DHh2;*ewPV;LD!tLyv#*v zZ3~l!y}^5+%F~n4Xe@<%F*0HY=}a^laj%n(ohl?5kF?fXgdM#xO_Q;7cp^@HHjn#1 zwb)Q)*Id@a?Ik+<(j8#z1v*QQ={GTV!2g;EO1%DzIz>;t+epTZiuc>2{HE+$f;XM; z0V?W|@EgagL|7UpMzR3`_XtK6@NQz*5NJ}&(yYP8d5-@t)(EXfnexa5OahifUZ|s3AkI6^)dWXExwLRnbF}npL)1x)w?p{kDC)tuJmu7OgF_Erg?h5a)rRd+C zryxkG3Y6!lWe*+&iV`{>Rx5CfFz2n7I1;|^1>`h#*kzJ~0edm}>o|L*_V_E_Px0Q! z*^qh0@+>wIY+&DhY>--FAYXZlZCTx^S+Mr{hF+^ezrytOiHsDkdX4jvJ^C=rL>7&S zkS?S6V+M_S z?GoS|5F$wRCO*tE9|a2VqhJS0L^kC4z;$#4R2b5fL-RwGI(b=#xVEK@<_ul;Crj1O zNJxwl1=j9`NX1Tuz4+&8O6Uv&Zl&&dgMur~jeLVi_(PfmP74 zL$cfn z-B2VrYT8}^( z;pygIzO8Ze?&Qbt8Zisz7p8Y?QAui9BXvV+T%53hUATa;%1j{kzEPmbAS+G&(Z#5) zyWL)isa_T)FyyqW!d3)D;`q-=l0#<#A(fT@?H7IMqg7xuO;_WV2QY|t=S6MNms(I( ztwsz>`Wdi9P49eFJpBt-a_JVGkKg!IFYzWRnd*!ymT(ADct9-_ArJCTeb40fi)*TE zBF7P^HKwD!0kM2N{HiIo1MW-!^iR44+t5Jinaq&>6r5%K`7VswKx%*sY6`IwqOs-Y zC^33o)B1vOGW9OXdsHny>jMX_5hM94U<@dQ3p4hj$7%jFliw#JeshSvx4da>C)gk+ zYOk0m*HAMB+k0D>-<9_J2Dv6$isj^gI{z{Qsm~4nLIRg1v`PTA6BB>{8?Op79gl#| z73oI3R*#`^%Z{Fz(P)(J;xjLw@09|fC}ACa_1w1PDdNMPp3sh z-{hso^}UJ@uIl)c1$0n-WCu$D+Fue3T-Nv=Fr%ic^mHP{Fp zI#*;&`0B1=hoL@O4|#9J^N%_PE3Q65qAuTS=5j6Qa`Tg%g8&1fal-*Pr1(oa#+awk z)}zh3@DXE)bPnQ^CR*-Vm-X)i`JclhU<0?*V#uj^%l)obKKMF&Bg}@bj0?!Hh8qiT zZ=pwm%=1)he5h~@dVGfU`;Z$hk8w=MJteWXH?IgtQ?NZ8_1TExK({jQfD*JZxjG z_nm2Sav9-+2Y(pCzmE&2JxsM#7|cx z!|f}gkk8~}UKsL|N1(U9Hu44rcC;lSU9=%jb>Oqr#S+2-DRr673+4af__NYV<14RM zbj8RPVQC9%P0It#U=C{z`(|`M#T7M@v*5a0{DE{|gz|Yu^K8S7Uc@+#K8ai`71SGj z?!dQo4S018`sy0Nb3y%Zme1&MKgZKmkJPnvd+~ zm{=yc@U0Fx+{EL96%3h^;l(o*KXrn)PuyP6^++Y>Hz6QiN^SKsoKRWzpd*qN4$ zP8KXv-wCS$WVjBFYLe`(`SdZuyUjyBd^OuW;;ijaT&v%YynTdAVWvUs|MtAWucOdf zKN&|BQ=k6yYN!=nR<~U$Y|r0-U6e}bG+M|+g?;su>KTQTn7y23Kl+8l4UOKiWbSor3X~zs?EBH^n@TV;U{~3z;2Rl*7MB?gx zEiE!<20*km>l<*i`|Pvrt53U{@l<+V9>`jdS%k)YI(cin+mFQI37}T;IA&+ECB3*r z3LPNbI`IMi0|qdtAKh|vr%hjcq=p7_vB}o#m3^_y$mryO7I-33LH7@8?m)qA+%wm4 zVySd8y%blHwbGx^W)9a2Qa=N76Jnusj+f-MRQOBppV;D0L5-0IJwGyAPzh zk3CTP+649z{^c$7%et5+(dCUEI=I%|qQHUa*E3W8gQ})ynQ_=@et-Wf9l2-G*mei{ z@z#0KbAU+R;3-?0E{-GbOgqTcjGT|&`iiqkfG7^m)s9ZUvxc6Su(}hFiW_{2cc+{Y zs}|q&`xOk*;T6RG1OA&|JUrW~or?EGBjyv~jL7O)}7PWrspcVlba}U+0(7${%-|?_Y6(F&flXvQs%J^L3IbyP@-QZ~U35_E)AJ zkS!}b=R~OBc3J;++=m36pEMA`z>!m%j}{8|Mf(ZY%_o^X6RMYc+AIl18eT@;*GICn ztDh@@;OY((o7%0!)e*36;wMvKmemzZHpV_;y=C}ub(Ngaj;iF=xOzgn2D_WNEdQ!I zr6(M@sR=l90|u1UDGVh9Nz2qg5j)Zm1POdwn((f)R9chon;xVYB&~w%2$s1AXCjcN zqwqu$ulB5Sr2|OsyX$WDw~@_R7v>?7Pd--=r^)WDPkq@u7fW+g;$wX6mY}_c8opz^ zF8U8@qTmoSo|0q+a(;%S&cJ7ak?DT1%LsY=rI(=SaL80ww#v5t>)m3H6G7&c1Wm#6 z@{jCk1=7fMX{k9nTtHIUwD?gBxM&_GFaS?_4~cN!{+4jhSgd(`HA2BJUhip`ea`Rq z>Holn^)AwF!L$%C5NBVioZ-MRxy$~+<0pojfTpHA-RYGH#4MJK*EvMVKpcL&8%t)T z4^QGx@2Dl_1xmISyqngjON2M4(HcDpuAv?07lX#r!KGU)Ke(}KH%ZC=&Ufw4Oo2ZL z4e+LP_QUMe!=_Y2&3Yy2Zta8BZ%TCt;L;0=*wTLD5*duW(NF4c`;~KU(NL#^e(#}( z#lh5V7Se{-EFlLGNVcPKk-Wzl?}Y zG;X_ef+eZoMQYg5zfRuBNH{7JgR4*5sTyi6Yj+`#6gH(ialFj*>3JyBD+@%2Yj}mf zU|C_f*MSevxfTB9mX|zecsK2sBmVdaz3q0(=#g3S>eTD}q{#?4A1$;aeUY^9G%#eeoZls_?veM1i6Y+tRiQu`UcJiD6#^1slD*PU zyn<21Y!uI<~kH82y^v;|FmK5&uw8pVGXQnoj_~fg>Ls?(HwzcyPR! zvwoC;omR-peKR)}H?&|Tjfh8##-TZ%d6#Xfo|LY(@=0Z3TyTTQA|e*|rQ@G%{`kFI z03@}v6pE+n$+XxGs^US98%`Nk)xz1>d0*r~V{vQx8HzZ_zY2@Pbs^v>S_aV{H^%By zis84u44CQw=?{!m&nvXRv?A-nhdez-JZ9xPAe0_ESPWp4zT z{h6cqSF9S~#ZLJ6qw0(gZSUZ`A0Byf?p4Q`> zrDVFrmkuCr+8qQN(K_#6&?W4__@-D*>>XSB8XKhh%kZgK8h%K6?A&@PLw7d?W8}}a zGV;FzghTS6$dnItBye*4WfM(gN?sibxN?S%E3$*K7|Nzv-mp9&3iZMTw)#I40TcLY zusl7G@XdA_)tqM1lL>9q2M??BB_ ztu+KG4VM$j+VF&Kx|*wfmkUerlQ}S0EiG($E&!BV`QaVXPVStE#+`QwK@fCHxy_px z(`g-VHQ5ed>2w}IP&>>7|J=*D`*fr1=#rX2f3sVhh`l70A>w%J2KfDvxw{8l5qpi) zNB-IjfZ{i|<69JP%~t2>gBp6?g16AXm9>H{oc1ODu7Qn!`K=lla_^ z<$wL4%I+O0QB!32Ba@B%yJcf9W$ z5>{i*h?!3jw07SQZxdfBYscseYnhDIvk(_1F-W}ZIR87d@t@@%7Qp4ch!|W*F{C23 zUA|#Bh~3$O=~&@i=6DLV@LLzMrRGXF{6Gm<@MgI;gdQj-_8(|GSQu}3;-@_`eRLuH z;MwGlw&*H3%$BRN21-vm%wGGFqg#7`d_s+!BjN)@b-$cQoCjo$U%P^uTHHO3*;}CC)Wa2G5^n zan^KV<#MG-Wq_#XJmy#y8}wuej-Xv*Sayjp1;N|;`dtOok$&pb;cO<6lJjK#X9f)| za#Qa#OpT+KsNw9)jrsfL_v;E%E(KIr8X!WxGoa9M9|K}P;JPvw&i+;O?H3cg;GocA zSgyZu2pkLu^!<7w@BrzCay6qTHiOt0`8Y=m2c+KIK)E);o`}m~#Ii}haNkjpOm$cP zpQ!IZ!Nr8mgoJF$km#rtLjh5XDiO3u=wT>=z}h`2Ni?Z6ZKEF)39~3`{G$ z3FG+nhJyC^d?CR6Sj%|qsH>|Zh*8TS7)sLx5xbY)3P>;4nm7C~l zOpa+fwar@}nwzCyeDVrc$cTV~w;E(c*8<=y7^V!!^FSu&avz><$F-I_$HJN(2f}*9 zg`ZOf8~^&%zt+S_(BfX|-G+VUnz{(2To*eaaN&~~Un#X~!jBXEKz5s{qwvHG7tq(t z=6M(dMOwlr&YdQGI_6ow7SI&T`A*@1HW5(pP&0Dc0`$6m*M)1$l84dArP@QJ+xY;a zzD#RnB>QN^$%{cp?{s=5=vN1J%-3I9erF~e*CcMr4ORGaCylTB5b+}|viS`@`OiPd zHk#WG-(}r4!v$D-w0q280Tx5rGacHP0uRq~f9B~@HYsDtO!DyQ!BcZg$}a)zkotcX zhJppicj$3Ts+;d1r+3_e(>Z~7fv!1m&VA7f#zS+^qB?6HfK)F(7$K$Nb#6rDA1Hp< z_-3m?r**K|bXt_M*bQsU2w`JAdpA<@y^r`m-#iPM0Gnx!R_yb7&C9p4y)u_2rII0I z(wZ%M?d5wkEBRUNW+EI6L@s696lTKDKmIs-?8Da=q}_1NIW=qQ^u6LpSnzw2&fY1l z{xXck_?F0jEVdf0^S)ad^C6oB{R}R3{l2Xs{cR7i@W^l)RIlp$x~6)zR;V#s_t#pCPS10b$@1_NjC29ptgzhztYKWG_|L4rzh_B9^l@a>d;vKr zG!?N&jlQP7MAF;|miBkULlC1);||Gn0E?R+4;drbE$&;DBKj7%lb>xj*-RZ$h?iXO zeWtocz;R!g)ToGYk6?UI_mV5S#vb5CQ?h~bv3?bUjzp3*63m-6H6Q3XZgymvr(g~p ziE)7;UE|_I9k7ZPo_b((HHE`BGH=60*uK8W##BU2B`Y3D81sQaASU?L!0XE^m%IlL zEhG%cwNaf=gIyD=+9*6T;V_(@tm~qDS^Gtq+f|EjrHPE^6r0q1Dc8p=YQ1!q_&=clUwvEZwQ?zl^v#FQElrY8%%>A2_ zmjXcc03vc{)3ZHI)9BeBlh-uu-i_9&$;>GNAB8zD`f!=oJOTl?QFah6AW2{*a_$WZ z0$wv^;4z==rX8D2?sAhHZ?-!2b5m#b)yZOtVG;h(|Ax*{a0tI9)?z0Lyn~=f+fMMK zL>ga#t#^LD$Bp+7KXY<+E|EgNx3#!t>pYM4Tvq4(L<8wH!3p79iTJkYbb-~{dPT=Gx(|#Jwf>V$qb3Vfd)#?h?pPHu@ic*fBxjY z=+$KV&DMknp_4gnOen+D8RP}&J>I}()I_cqz>@xt9mNXQ{uc7<{&oT(Yv=tp8+6i9 z9=KK6#g^LUtQTu214~W;KqsW|LFV~GcyP!a@dqK+%v+Pe8AY4b-?-4f3X>AHiY?P` zjBUsY{`;u`MpPx-JppwxtV3?us5I*=3>B}THE<%e^V>XMEhc*AiVN_UKel(O61?s& zaq@jCZ71USWEiGqo5!Uv6W^=**nACD2f$-b@*CWTDK0zNk5I1!Mg2o5>E>>X*hsVa z&Iz|z-}Ug+Op}SQ8hhMP+G{=*X^~rjzid<| zHd2QlCo>IeEDeuAKUqT==)Sf$zf5QJkSSyM%+*P1KbdS^Y?B9{XmK*nUWai9PP28+ z>mI7>rnD6TP`65B-0h0R&unCT5oeJS9&^$7{w;Ei`(5!4j!I&bHh$zwSL_xLug10O z{?6e069vhEg$ors?qifv7cerfEFkZD*=xn^d>sp%m+zlt*h8p++{ElW6btFdE`mXQ zM!y==W;hG;)MZnx^_bK5AuHJCCbdh2EmnOx`ZJ3Aua-O~R21H|*_4pOaBiT|7L2A^ zm`~Z-cAFSbMX@LOL&tByz~I;mnyP6~*hS#xah-djZc^2JYt;pZs<+40I9to*>E)?B z?mMkF65Q|nD`zO!>6*pp>2W6n^OCyp0<1hmBdBTKI@BnCHh2o-{AypL4T9U-eIc6a zk@qzTaT^H<(r4as(L;O8zQDR}$+Bt0#P0A43|A_{{odtulk*(*lJ^yZk=fFFuu#P` zXcLpl_o;8LUr037ThVzazfS-(M#=(r!(WsxbXMSedX;5#mpWq8Q#{*9>W|khhBpid zUqaj+DEOF`S7g5}5B;54m7tA+8V!C-d&cCDs?^g*`5Lr_nl>)BM}GpKgA#gAH*MeV zpSp6td;eYQout$E5FsCzA|HdA{WK?A{R~9Az3^uEKf=YHo&Q6m+iC|3EPB=#bJw$p z9=uI24+BPX3?>fS z!ac_#fhVyKVld%O*ERz#Z@{Yh+bX-Lg3*ajP&g(_+fM~8X#YWUuvo#THeNtSCA^}q zjRu-1&(&2!Cs7 z^mO@-Vt2_rEKv{L!|BAm`=v=<;Sesg(xbx{0t_m@^^`&#|py+A}jXC^+Jy;MY`gagt5iIwa0uydW(~x(0ReeDn%RCH+ z8al^Iu37gqnm0lG5~htyZDVdKf#CcOC5O|dVaaq?8XMdY9-nNa(9>1*OmUJ3?8>8wXmg4!9ex|?Vx2O6wxZwC z7~3vSqW&nQ@O^HxY0*j`;z%K&Db+N7WkspTtKU=u^<^J%RG4A#FL9)dLOvldj9y;7 zV8-8hkX+|O^gVTEllS@&cdEuyiwElKek4=&-g#hPaKLE2y10{+=y@RJQBSH@@$qXG z?IdyIwMT`&&%_^#%SzXAh#!&VMeEzc7W zGK$YdxW{+Rr}wuTTI$l8?nRs}KSGJ@__?8nBg~Bdv-%p5=R2^WYs@ghdb9{c9V(KE z)P#QvlsFqaH8;1!33uL_N+y&1%MLCA{vCA0oAqjz}JY$ zL;dZQp@x%X9vIQEu!VN`520fR5mkRQE6GDNJ)UA+hD;Y9iC~w!Z$EcJ97; z*|TDtOY}CE0W_TD!2)x*j^e?kGO=vOh;g4@VfS-o-o?1G2A6*`?$N!u{-k4TB)wpw=!PhGa|seZc zRSzd6qq2u2mOQUT-cm#5f{6h6JQG~SVt~!SlI6($7O~mpWLU;lO7%buZbGaUyW!S} z!vW$|lFom)42VZ(?uTgvA4WX6&L{Qhh1ON8p!+*Tmd6PU%mb7#@1z1vCi8HX%`IE|UPIy&HBtV)IZIb=!=*x26d;c7ASkQ9*_js6LX8L& z<*xZWOyV8!LLJ}%uW$sYQR@IR6tn!Zc12jXZPBiXXXNA3*g*H%&quV;j+mC|0|Dv| z*GBe{(q%zVR;R(&f7L}GZZJ<)@u7V~a4`|ri7m+ATQJvP3AEANw*Q;6@fJc}V8>aD z=7hH+l#Nxm&DgoJf(eF7eLWSD;-o6u_vXR1@0uA|y^nFXs@?DYcLQT&O0Ca3u%Sh&NghSb?z3G zg~8{a-=&i}&^MI)Yw6$+eeRhL-jml&U3n8+JWZB*1X5nnv9@+uP^LAMR)6hU?W3$l zU}b&$1&J`SYACr_Zsh3HEsb(LABqPSc zIbjPHl(P$q_yD_7n4yF<%?+g}GDSm##*7OtHQ;H|6%BIMqhhfg^3KRBQxA_a9CIoQEme6lh zn+HG6P*i+LAm;NwRAZ(b&pPI@ntc-FP>UZ z?LO=6Ll!Dl^^HvqQ+rtzq2L&yneY3iZPSbqTjSI)#(7GZn%6WtN0!S1%;5^wL_d|X ze72ba255#;X;n_7`$q!Blg@TfJ*Y&6kzMWuN>biH4ixZ+h(&+mxkK<}pUoaHOkAz& zQOt~6-Oi4blJ@fe7|ySY-VFQp8`H3x@&3jRAY5R`$P;&5$}+v2j7Byi{^&Z&*xkvLtrAHpkfE7lC4B{oBzW6jw6w7K9tIbJNPnI5=uX^Blu zaVDjTrq@aygNXn~`io!0bm4^A&7>#&X(*NLy1LY+z^%=A?Me;;we2;O(~j2K;(w8c zPi$C5&|@->6Y2U5L(Xw@{rNrfK+M7?Sq#}yKj)AcmUKz^zcvv4;WD7Osp6bnLAN|s z>yns>j*~3gpB@N$@Ga{?Boc*a>UWF#uc&3fLkluJuvoc|mN6Jz&8eG&BJ!aLtxP8` zLj{1(FJG9;6zUE8d;*ZQQi!KF$jNkPubH%Cc*sz-9-cjsPb5d*DN8h#e@m0atWWWK zD_s_d{0HPO4%0HtQ^n3@wqPND(yP(UhMssgb4=P1vY1FnK2KpF91J*Qct<{~jldM@ zFjvLz!IEjvJ?;myCOujcj@#BjZoUZ zOp7GfVN^p`Eji!OKvh%Mo~(2xgFDWp%jxV1OI=he!h{$v*XShP}3<0f9%QCeY)(6aTE9cix zRHs4Kc%*v7R^clZkN&f6?Wd;S8VnH{CG2S8ivdK3T2ZhNmqs(o{XXt$~Uf(vJYEC7> zF$)}5^7awdTVp$U*p`gY&sg8xY`9}d@3`Jnb7V$xxYhJ6TWGNxMjl!)mv5(gdCe$f zB9URV%~Q-Hca$#kuHw)B3ta+rx+ubXv;BNUK-2@H?LzDi@adwKG%bkQgbuf^tldX zq4M_;?q_3rjD);E2~i114*kWMQi_9AdZLV}g?X24b1Y(X=s6y-!7Oe$;br;WvDn1c zQc@6D{AQz=Osu;woSk6$xv@!ufa&;_t3ta~N2D1Bh5}fNZ#=}Y9=L%x+PJ}ExUlWy zzX1pzY$+@Jj!$Aw_gT;N$}a~egm)~$aZQ$|pHL$$Un#+z*h_GrXL5HIZF*&5ln}BQ zhY9c)iV^Ds-y(&j4Mi1%zsqgJSP5W@o8)R39$D}A4jVJULF*@VVX_#FD`y6mi42Xv zjMg@e{%M+;g>akzDp;K-V23wUDEed~J@zDjB)dPN@HUo-+BR&Ja>pOepX?<~E&9Qh zlf+6k?@rjS-WFr5%iqV;@~r%y1o3rTaQ3;4jHgFX3P$9`YSF&tGRrqZ+1GU6iDGIx z#smlpu#JE;2@DJ2!O4WPj=EB+Ms>~~I5C-~a$=M9gn_p?v6eaa|Kmyomuz0h2d7yB zGt6=r9D;<$Z#MKcCKbc{g?0^apXHjG1Yj$W$QP#P<#eS6bA=}daSxR>z#Yqa7vmWIeKI;!!pwt=>m+`wckjF?)_9@ez**48CR1lS;I1Y>My|z ziis)vR9U(#4W;{=4QS^cRuiZ7TVkxslrT$QUe%lbNdU&MTii>Hxv&}C)pi-cTvNkn zw+NU*xg`Ssa16VKm|m^1U_CmWp2L98L-RQ}c!@sTkw+VyzN;*3TTH9t{qY*tWNz>_ z+bJ6@ZwI{b{%U1@>i~qobP3q!5)Ru;8ruLv{-icK0IAPCegKG$- zNHkA&buJPIAr^egXs-Cvn5JAAH<$>R2tF)RJnplsjB1o;3yVa}_v5>NmUOF%RlX0i z3sJ1$wSmb>mj1Ujh7=XM|QakJs)!vit%KzHm4K0wFQBLO| zlnx;M-bDIjSsFXEC5$>>mz^AVQAV%fC>f|+9B1xGq?|!;jtK=O+O%Q+p|^O%)uk}0 z7gE7U6Kh~bP&q3a>Pg)id)N25D5B{+CoT?IOH}f*LHL-Gp5>xy&e$C_7%1?5i%oOG zvtR7VYu&Cgsqy(!M^^>r&`}+Uhgw|M^KhI+ZcU2(`GZ^`&~ZxI6A#M|oFP@f5QzZB zOyO#7A?IMdZSemT#)0b6gB?-DxR~=RJN>R4B8x}6{^~(G#?njWbxxf>| z-aS>~^G&d1Zz4_)b~#=` zjuDl_r~Paiv%>?rcjf)ynV6QhV=jLcpsErz=AA{v3+#vr^*e#w)@$X9u5LW`iYpU|O&4Q=3vnSLPv% zeEx;`_vS*v6K&zSbXiQkePOs>3>*xQjhopZG_@gtNF9lQwsqF7UL2$KaT^AcWu!Sm{lFef?)wU&=%6<&*b<+Fv zPU8LVYAuwvgM}JGlBRpk$Kr-qYA!6>Njx9A-PFEp|C|J8)L$BQ?wO!O)lk~(Km2Jz zPTZ0muu3EqpVN(D>R6qUrPKjt-ZPCG)OcBVax3^<3%j$W=Fvh4Dy|A?#q!h zt^X4&d7mb_eb~!Lrvq42FnO*A+G)b9Xo)c&m3gUEePIMy2@pAy_Vtx&megbaDTOAo zyytij%3@rO)77l_1^cR?%1dI@=>Qk)Z^!gx7K>5t#A%+h-F`g#RFf{d?~l`{m_W%^ z#$dhki?VaY`I)8{g@D4_MeuX;vu6Y>bjl@WjIGK{K4-egk>w#QXw{MQm?rqOGVp{1 zDDEm!a(6;4LHNIJm5I1IqYOSQ6LDg`l#D4Oh>@OFln+e`x$FDf>dW(CCPjl|_4Mbs z1AQjN*|4dgzOx4MpvrF)sf3)gk?B__-o9M5IeB~t@tF5R&5Si!0AU1-TBL^E1Ug1Y z?;G#U)czdWjs+-H)E0{fkgwHvPZBy6gsMfxx_68@`18v_aay@cKYXvZLUlGow+Qk z159mG7iBBMl(56I@4YUH$?)buvgLBg$ge}9$_%Ym*Wbk|Q#V;r*W9L(N2IXXB7S_% zzCbyj6XJorrAu~2vU|5IzP z{)9TG&kRndIor>dDw6YY&s<}(@W~@_EF*n)L?M-oR;4XQo6Bslo#EducBKi3B?$E= z@xR3ucYU@UR6{1dc1qo!;x10!+qnTBHoKDmDt@%W^Dm1E7$Y~7olJSEy7Bnr2$Iv~ zPZI!Rc@|z)?LI&=qrZ%hG%`{vy#n?)WF4LzJfMu^o>{|vIX&|37m9n~^|3Q&o%9|e zkj<@-1g|;O6g+_GARNy$g>jpb*M z*EWMSXhT`YS5fiW@lN|0sK|C^6Po)KELlE!F!%cibsWG%z<^QMnkT;@ayg{n23>XM zw7D38D4hL*MRVyliBoI=VWWHj+FoinP4u%~sw>RSD)%N1D{kB~XMSf<%NL={*D?ll z3DSGU^h1nlETJDF9hMJ|gdFhcttm!cFvobTU+RZt4+y26;fEezB zQXtKl@uAwYt_J3EbVWZVhqdmef5rU>(iz>{Pj3)E={zNHmpGC3q_X#dA%b&zKd`8$lr zk1iArIfgF&giJaNe$#)xNQeZG5EXzczL1#T8iep~#+NJpRl-mT=bzCgO;Yhzm<3v! zNmIi!)3Ocz?7(tPJ$?(Bu0io(&j;Srv%PG4%!kH?@d}YAM|LPSSaCNjMl#>MZVxh1 z6)$|qz7tGmtYhN1h|iw`F{}zjD)=MacX}BhqApq#Bb}N+RU-720dCOR?9GfPzg>QS z8hI}@Tn*Zh_PpXv-*~fWzZcW=5ko!3XydY(%XDb4jA%~MsWb4ywl|n3 z-5g_OlV4G|Jz3#wgTv<4*QTx5bsMge*s3qb;F2=OS^HSyUI9aI`yL=Hm;Smb0AfS> zCgE!OyZ3UQXP0ue7Ohx??B*@}>0E?yi$I&t$t*v<0!<0%a#hKnPHf>hGkwo*dW}8c z2Dwh~b5fmr`{*Lund33P4W`J<#~uW(UkE;wUQ^FVdquagh{`vg;gQH88R7O96}MPW zsPNL0ugpt)Bq#8j$K`V&b$Nz(Z|zF7tZ_oo#wfoareVH8dqM{}H})Cv)`3J~&2x+Z z9>}m-_WvrW19v(J{6=Qs2U6JFGht4o>7%}tqs7+k?_yI^ozw+_$^~SAs`X?ZNNMIe zNH(4(YM~;AZ9**dq9in3pTaP^zwi=*nTVWEemI9H%Jr1#au!wz_f+} z7VniNgjHWq5vX^Ph?=Ot6F@+55LQcLuj4SM{L2i|BXA90w=ay$E>AG{#7?4=%z`OS z=1)qcx@KlHid18;Ix35ewzYcoFxR_am2bD@W7@PE&&PRH&s9hh7zP3XTP6Y4JdwTQxoTk+b1^nVz2UAbqi!?2uD0xjWC5Zpb|KpqprKLc{1~U(BN`lvyVqc<3S0;UyQcbTNs|FxmD0 zN5z*%L;1e{KhGG9ec$(eEo=4|S)(M`*O6?Iosi5-gzU-^Su2u#jY0;Y>}yn(v1FGK zLYDcRQN2Ik-#PQooHJ+c=eqA}dA(lObw9FKE@;=;-zk_#!Pr51fJO=}jS5T5^U`(Z zs3@0V=C|Zq%Q6HS zaci*+l6JYSj+o=Ou%B`6!6^#i2iK$}5DcD}-#}qd5$b}p=ulhIsZuLr7zt_WqZ-dw zHvd~S0a9V;@Z;ba<>1lNpMz#EAuIrH5GU`;c{rQhQ9vNu33p2GSBQau&9_UGCB7pX zV=;7*K6Cf@rdARhL(e~WS;~^^sg1rttk#s|0NYxa@mk0rdPUm!8vJ3SWd){uoN{C$n1IE zYRmU7Q97WQzW56044Aq!nI78vGNBs^FcCfzo`(qgu;K1bMG@Nl=!3#!$8L?jfGYcR zVmE{f{DCIgXeMtlLq~!LLYHf{eZ@eCsN^^yfBN4rUj8p)r3VYLmxwCpox6h7?@||x zT;^4aEjnQQt;g(<2iFrtuhAJdz6F}Ei39hZHMKNpI6%W`AoA^OzVC7;}I3y|)>}3NnVTTX%n$+VKH#lq5OFKgSt2&iQ z0EOzEK^3r%vdX8EC{qaY8WPWlQ&+#539e7Lg$n(5s<*pidn_plfb4r)0?}&!n z-&jW`bDfGPeeqKy0=?WdpUWiXmjNvy|M5qRF1b&pM%84VV;b@(L|eG${5^S~e*Rr=KbKC`bvI-=N7w(U_}+@WM1y`k60Xo*co$1;ePEsBGuAifx!f zLlCbLQvz1#i#-XR8FVzZHN&NZHR+z(tM94KtG+&2Ey&+VY2bFt6)$`3gZ1I}h1<}^ zcc85f#tDwm&b)w?kjW39Raf!*cWmaDF$v2}iLExBWWU%g{NDBLRCREolp}0^h~u8s zDvebp;>CSEiuoQ)ypKg zvz^|r)x(u#V2JdY*&cGsPKBW&!s(4Q0j<`y{k8nHxrTpBqo_(@$^Kp4t30iPPhMke zZ_#3<4x@OqRSp!GUH)j0x+fm*HUoVwh~!hEvOGqt)p;xUaT_`DfNnv^DpKY_(R-`l z=~tO#$u9Td=XDqYwhhHUeN%D*a{8zd+i>}9*UuC~;t*%WlmCtJ{*b~{BRh7)Rg<2- z{g5}vXR1OLsW;4WW$w%Ci5mH>R<08>2z@ax_^?!>Sf)-Qi62vj3Rm3llPB4L6>OR? z&PBoeQm#rGjCS&6(Z~wo7?I&w4z^sC9QoH>FfUN+$^@*lW{YxA?g5H-_Tkf<>Z*9* z-nKNpioSrD7x-nY|LfK_j{P5+GF^gDz^*qZc`vwok~{~c8v59 ziW{1T{48{`J%=g3wk|&YrdAhDQ?{69OSv}R}GJ#C6;gyCGMrR`TIWfx6(OmUgCh0#ZRF~??}2?wo6`FTzH&) z_@g^oAH!pGAp5>wG0X?y*$#e&95(M;28;IoN2!cEAR*L`ZI^k;N{<(=(NQJLEhTsy zV4lP&;bK+r7p8D3b-!tifqeC^Z%-3{@-CO92~655`5extGpkjPYANZzU~CkFOdJw7 zWP;#l80;(ST+kQr*@1Hg;=?oio!~6~+W%8AZrfnkbLG5s5~S`t$kJM&%7viCbP^#Bx$3t|f@aTaz+eG9G6O?Sy48Qif+~0xqOa z9S}JfF3I3g*n;nEpmn{+;qLE&CJqw~!d-x32XGuHo_$j}Cvf-T1I$#UD-yGl`$Y2P zF;nEF2^j^oXsz$gnSuPK9sQMBrBa|XFlKRY;%L}9>!M8q(SulCeba*q$ zJKEygUgRE-7089Ii%RPsIDFS>)sUy{T-08)ca(=fbDk9 zU2pCg(eL=UC`@~_B1yg1^!*9p3i)k)%!zAd9CXbF<0ph>v41pg;tET7C^{bwwJ%-Y zt#w13W=zf@A3G#&@tP>M@@kdEG%Xf}f_o?LhldT}kU(+F7Elf`es#woB6@S@mN14j zP7s*`qCiRLtfsU^!Y%Q*)1O~IT?igh5hNRHK*<7YO(%i7Mi?I<^!IoGQ4s%gK26C* z!2fA~&Lz>OuG<*N!Got%i0K~iyc|LLh+bYk$TqACUTE1A8 zc56e;z$JcJW_d1yFi5jYd?Q$)Q0P?r?OvTXeef0V9P-ywRA^`ddGi=2?=SGYkdiN1 z$^n@+$NPwfZ;^2R)BBMEBE~gz;US?LJBmBPT~gOr^s)827XvKMScZ=c=KhdBvlT|g z{TFj@zrE#eI|m>%+B6A{@n=52<2vws5y>sIMNm=Qz67xizR#-6?HI~6fJ2h_^MCZb zC|*_G6T=pfhk3clHM^1e{c;Vd=)Q@b>=J_7khN!leUv_>wL<9FvZ{{W zIgo6u4!D*hPn=(5(-=jQC?WVZQDYXv9cA^|4JOnagW=E%-Z9(tc+|@7b&o3x`UB=h zj^QFd;YE|e8ec=CzKT&&O<%HElx6mMn4%wvctIulwV}%T2X!t}I0}uL-Z=J;MX`L} zGUPC8L6KtD2LBPNvTArP5tA3$;uGAqa->#-Z2m4BS z%QcYH5G|nR_RXez}<)K?R~+tUL_Suc6JGa z5tzgY4^f-8z%??MHU{&$Z`86#f4#?A;Ko|`Oy*#l`MlTx_ra<9d9efg@D?xUiM&0C zT82hX$I@QV1Nb<{3h-~yVl_~45g|h}$T_!pnK7agvv1PKI!BMhFX^5H3Y&zK7hQae z$s+%If%!hn=QbRl6Ax4{V|wF0cR!@4#gRuGkJw@PL9fNuxJ>Z!B)2>#)lIel!Q%qtV`=><9M{&Ki=x0i)*m2a#7brgIi zQQPO$DvlkZqHmDn{yixO^tDs#2wK;M(FFAcIxl~2CEJe-~1#B-WSAQCtY*yR^A*g(r$`x=w|%n?KdDq>0&sVrJEQtVHJo+E%gBCgy(5|F zdz367-kMMsJuZ%oC4m^SfxX>BNcDuzogutI@tNSLD3h|tV4a-opb9ADLc+>SBTrRT z5svD1R++wACrgxm81RRs(kEjs5(m$;S?hES_}e!`8ExJErKVObD|ym_(*RJ4T(T>0X$RG;<*prR!4$pW78(P|$Q zhO3JExKjK__tC$ZM7PIyqv@B6SXKJ~46Q+%w1p6R^sI8UYwK&F)3yDU0)Y%n5=<1p z2?)N^f~-p-o>uJFfT3!#a+?rS!!&vQMN^6j5_J1iWmNupE1ig-X#Mlv(Vn50PVtnth6J%u`^dISzR`|D=y3nB~Sv=;UFNENxZY zy&iJQ373($zxPl++hOj1x9OAH!^234jr`tWEojN@x;sbxl}x#f8*{`Pf7~l#Nku`$ z3C&h=Z{AJ&ixfUgXxCmg@Vo@CUHU=ap(r`k4s6+|dQ@Xj3J=l4zx6}iK`d$v%r*t< zVvDHdx7qE*74!R0q2Vm6lV_DMU-w@lBk|Z_;V#}ee5;jwokrmCGt9i6t8cM`;qkb> z|GKnbl{rLQ_>FnZ*9z$8OQ=GKFHV5_7v7g~yNU*H!bma4%Kl7Q2vN=9m{$tJlI5~C zX9f~kE8ju2o~L5K32Of7C;K}t6=c}l18K-S9{zBU4!U+K(<3I&z zyiu;6V8|WUdBB1}`Z%Ya2-98tcqXUZ%g`|f0J*-t$oR?eiy^ZnHMU6m8$_ne7=#w$;$cjlY@2;;utT|51#opbyoc{FSMr8YckqCb~ z(i%x9CS{gzHb6pnltIu~2a*^3tQY1pQFw?xIpJnL-M6Y6Xz*2W%yOc*9=zhB0C*5j zLYqfix&U@IN}oNV=Y5RW%nEb5;^)j06=ye6;q?@j9d+RrRwFN!ej^`{g%ZJZ&SN~X z+A~Py4r<~)pULLfVQ4CdbMp#Khn84iYTU3CPS>Ymj$#~Q+XOqRs)bowi3;aQgArvM zs0KMv3<8ez-*sHI+!~`Qp3$1fCAdd$80ZYBy)SsKBqA4YiudC}2y#w3^y(N!73Ym_>kqkGvv_`5K-69#{`JR5{ApvQhm zuGtP@hoVkYkx#XttLmedMr;CiFC0(#?8T(A8NV6*Cr)?M`ONkha^WdePZ%U8?>%&= zt^8>}urFoXIgh-x+&X)I`|NEe*lJ=gn$3&9f(WxE`6a|<(Mh;nr*E%WRUY$2&O1JR z=Bv$dWGuPsYk;Z5y}ZSvdV2I!Y{;^L$ynV!x86h_}6gopF;k6%mbosJ(OVV5pyL+FE*2)mN~gj)#B&LR!ki}TEz=%S9Q z^EA^lR)XKgg#T?Qt6Esw&=NX&lJdIf zMmOD7gun8$T#tV^#7ZWh+U*WhH((fpWO#9WBw&!=hnoyX_!K`CxUvA;9o)Y;e)6|! ze1mx1LZ;LQ=}sOZxrOkYu1i$U6GnIJS)KUcXK1VJJ>d;0-X-S@@`Iq%?@}K54Hrxp zX}=HfO=kmr8MWLeJDESj8b3bCP%xr#!^)$tQbHP4z~;T1Vd5FgrZ?f6&3plZXRF~R zA?ac#UAGQ%l>5KQ^%bjjcv}zbH!O($$nB`DWaK%z@Mk7ypVpWPbq}-RMW&Bchnz&v zsa;ris#A;_y24s`P9{>W97nO`tgyh4eclI^3AU)ceYCUavg)s!3GRdAd4jwI<%$Zm z=3W{*Ju2DCA#z|BLSBHqW(;#^UrF$oOtW4LLk6Boy!le+L|;rr;7+=#YodZx?;$5g z8FG-C?=0b8qHy=UxwmbI%1ALx(6B`B$$s2ZDntq*2+ndX;IZ1A`_h7y6ucBx<{hy* zeg+T`3&dA)(c5f4NIljj7s_7CL8U_JGLISGXZPU3`}4jX=#Fsf=Pwc3Q9D=5h*B{s zWR@N{)rCH&esoo!0^}Q~j_7dLD#Q*x7tsd`ez2_I{XG>$ecG4f$D`3azB-_CA(`+t z5lb$D0FvmGbEotEcj89k*|5AE{0&hkUNQE|dW`*ddgS-lLBAEsY8xV{Eg&31`IM-H z#}n%Y`JbUz-deP#(p3d`k_;vly^V#l7mmmzp3dGH#ynFay6rlQA({Dko0U_#`C(Iy zJ?dXWk)5uQVO@bO=(h;#{`>ZgMvIVu4*f-usso-chg%c$$O|J=DwJfVaVS}!q_D6q zkG@zJ>@9@iYfB+YOj`a*kxRC$4Mhy1U#4Rs8>Bg~7Hq7OL=2wM+l|@SO)&ZUx7%ti zo3&6u;{}3XxJ_a|-Lcc-;O2Dv{zyd?A3+(3NiKo2dJk%9H~7s&Lne1vpHs~;Kz z6~x6rq72F2z0^Ymf?f{4t)%kjQlohv>q2M0i$fMR4)&{p;0(2(^`SqJ-erXh4^mc+ zrOQtsX}v-3(g>qQ=-adi`ETXVotEi>Sq@ti9vH6*9^*uHf1VXRD$;`csVL~}8*mWy z)zgA24JvMtKg+mX)AC?cfI;8?@Wo<3?G;%{4v+bjkKaN@>Y{V-`*N_Vgf=wuFMNjj ztDa9_gB(jt2>4ELd|Y(Np>xVtLr9Pj_WtRhb|P*0-63E@3gY z>Mw3df%j7slfe5Gw_ore(gpAg8@qWohkpB0nkG5UbzK`J3;hA6x>t3)ndf>I@1UpzTq!9LV`J)LH!`8Llh zm|A}#QZ53h+$@zPvacPwc6M-8L6FbqF^YQ1YslEP)k@xHO;Ic3R$;MBz}TUK>fJk5 z5c*(2bkjgO&+1|5V}fJtF|BOv5B-`8I=I6nx;Wdj^!nmbeTcKyAPduKqak-xPJ$a(kNO$Ao5P zY`(h_nNSbG?KDrfPXvrY(~C$_pAdPu!phbL+??o>;djVIiSiY`?G+@Je3+EUIP8$- zISFChR6fYmtm_;J4vKsTWQ_K6-?j-&CLA0U0lGw0t?LN!qA$=LeE4Roi)uQb&~CXt zr;*h6;vDO|TR%jE>L8nWsPl>9XY#5FUBH44Hzf|ab7di3`UcANmpEIM@SPV41cX*> z4)%IebtJYr7veFwjv7dqjyLOdBxmQefAFugoAumTgq!Qd8iY#Z@N7Ls$k+k$nY~%M z>pN7AZ});ul@iOGB+8}Y}BW*nibTqRu z2}bM2cn{IJh#u|=*%Q2cL?^O65wDY-`!3P$wa&o4#d53pSF3J5vj`{{9 zPy!L(yM;Vy?mPWNygN{oqRxsU$T_*b8hr;}lrX9j8%cx>-{v+f5CNA*l z_t61Z`eb+xxsRB&&lu0sMaCMZD>$C{yInd{qF3g7#VUaORJ_W4r&WFcY3 z6|KS$Tv!k@*}9O5+NRKtPI@7?eeEL)UL*LCfLad6qOu*meayx1Z+(dxawJOg4cTnQ zuBIxsWct`>V%v0Dr`R?@4Sp}*rJ;v~v%Tx>Cpf3Qdu9}ta=ps@k5?)Scg*kUF_=hdayuHYA`#ltn*@eh+ zPWir^D!$)#{?jf;_nS!u6SMce4_vsw;mwqGtS_ za=;{AaN(1fhkCxkNFu4KoyxPrV<-4bg8WNrEeK&MK7xf*`RnYWQ-EYt)HGk;RS{a6 zhPHiVqDbtK659a~0ZdDGD&5e@2zsfeT6a8{wfR&*5+w7CM9BgQm+mJx)P8t-N@xoD zf0`WZsC89d(};Xy$v&9ah^kWWn`i{(2_Li9qOOLv|G>?!JnPBt^(LX>JLfC=!OaT6G1vtgx0;4sb!;&S;a&m8U%gwZn8 z_vl*3?%7lPW{!uC?Q+O0ez~TpkqFwxp&eVKe_dfz>2gQi^;>2x?Sg?D+9uX>9;&06 z??wlLh2>6WP9{g>uIr|A#^sF|IFNtHRmfC&lA`=l%~x=u*%Cqq5ri9mNJIHdcS7zd zFK^!2rzgZ7UH``VQ6sV?6~Zhh$t$=%1R(a4>!$Q?&d3}dPJce}1Dy@~g> zn>2nnehw0N1***(3VjL0%sega=I4cc=S{xyPHCHmp4HBA8&jxsv)p&lx+z#71aSP- z`B)ZnNTougA|~;jZL_REIHd<|-%X3o5#lAr4E&T@_(IjI+=!^rc$HUR=gr$jkL=jF zv69;-Gvm;OWV^m@%+CuM*Md`{*4QZOwV~Si>13=6*w)!qIDadL{ec?!lC-yE(&!J@ z_dv8WagMO?leMCo`I+BbW;_k(je8f$-{?I>aRT)k2h?VEomR-tejl7qb!jkh_jz6) zQw~rT9%eV!*K2%SL&IV)S};*4mJhL82a7?$JY!KE?x!!UF8#VhKB-D2f2fpjQkYqC*T_hoW`hQ0@HNWFJA}daV~xk5I5NPPCvumy~tHE(vM13M3gx`1%8t}quPwOQ~EDAQJhTiGY!&gPe ze?z4w-M?jhGv?l=&&}43FCtN7jSes7kTC^d*bfG0sNkjY!vYJ^wG`AP;I^0PruS=` zUC2~X?OtVO#&>b^c7L~?J|f9&k%iW!C{rqCkS;h3VgjhCtKK&uJe@iZ`bOeaVdsgB z-=v&j_p%Bg6cO18)|#AT;t)$^VAGUTS_Amy=gb5KY*$>MhW4@Kr-JJnb#x#dEqc%p zW!|b~g?#FAnnqW06ir7_iP`sdl;4**jqPe>rlSSvVpu^jfL{T-RsoBF*V7_KFcVP= zjZe0#n*D%vZ&j7x5)HCV=XP7 z)ShFs3G!IzN$m_O<89PH6jPYTWcuB-fs!ba8&{b?I#C)>4Cv{&u6OomSLqQW7;h#f z(448ts1lTVdchizoLQyRrLu!0s|J=Fzz80Q8og=; zXUGAlj#C9ej*U8|vx5=op8Z4|6dJ{j>Ybv-yx7j`8N~K2iZh&kGGninxHQcK(j7QM zOn_rqhKmA(&>7dsp9nq}7Glw}VW%DV?WVpY@a&Fe*k-Tv%#G&Z`zbDXx|xF?(H>7o zDx`W?sx&Xz(1{8VP6bxm94-4adbz4OZ-=kF{TqxS;HkZhOFB{*l4?}aToou!M~k)= z;w6TcCuV;=2jQpXf?QOH3*07AKvs@cPTT4_mOna#JeA}9tjUDA8U@{$>(PEt6lVlJ zlR%L{b4Z?IS~Ik9Ghp4>b6zmQ3@o#}$YX zCM`M;Vgjs~&=OqPTF7VnCgn-fMM;z2Jc7lP`a-BKJImgj`F@jk!#jEC_BUYvOC3?51UK_ckLb~IV%-(RH0e|Na~nNVM+s_IMh0% zyE$&ug^~&8_DR$kvy{I+&Cd%lgQLt_&2%5Sn;Wn>-iw+eEz70nXmfL+zOOLj5JyOj zF_;LLK8WKL4>clq$?Y`MRrcV6+0Jd>7o=O}kcYpN<`XtQjvnlHXe?daVR7HZGfx<) z0BTWWsiES|@bbjQuPvL9ih?(iaGA60OshthDa?%;)W#`+rI z9Kjx52n{bUDTXM2MT`(O#S#$jzPkM6HEmXPnhA|aX(i3q8|P>E<*or)Z@CdIo>62< zeLNWch|XjyF`~6Kc4OBbeK<8rwtZ@dl=4OE*q3(5$g?f12))PX~vYa@O&v1K24mmaMAz-v~`J5AiAtWMOuH6`$oG&)4! zgx=7Z%ee;QlsY=X$7=>pJx{Y|2E84H(oF2a+nws}$qmnPq#h^ntEwhUX4J@@dblu- z8`IIExrBL%G1N3DBPoJ?s+X|M+uNfy(=jZ+I`(s4L9o0`AZgqogwvSI*c8f%O$ZWT zBD!*ZWewk%NSSJ6eV?#R?PS}k*^PN(3fm|; zLE`Zbe-e9=wWv!%_^YfS!u_-Py#XfSup7Y~j-K>{il)=y(1myLT|43Dg`^1k;G@ou zu#SbCrpVnj7f)|`~BQB7s&E%)OjN&eSXc-i64j@oc2zb^do zKnzvmI|;(>RA_BZv+#C=FbzkBMog&eY2BjRa%aH-$te3IJ0DTFpF97_}Ck5v{e1=AHM`I1G6mLJ z{bmGZ25z9Y)HQ`Lag=mQMosvMkR7iM z;$WDn;q4^T;~k9F+GV=ptAv!`IrSs$u!B|zKdXf)&v+Zfu<5>Q+q={JTk|z*7?&kf zn^&9wqSR$?D)~JJF!tn)k_U&Pl8RM zjniR?&V++d9o=>17{cD0tk*q6YB87?Iy~SBLmQwp3a62gj*x4zDZGYc z6;dVqRhpN+WeM^U!@oqId+DEIrMCia?wO69V7o0Ji^!$!Tu>HtKF-K#pcaMj)4D@U z0PWC&@iTv%grFabW5kI@_7nYvKj0P)m24Fwq#L4B0DkphhYo*@_Lr8fsDXlhH5+^{*K>KVH~+zKv&c*;O}Ub$H=~dP_8= z5JfX}7tm*;%~{vJ$OIZl2>bL@Z@&xbXI5rSXI7J|dk{4l$bKpYb<9>gy%#b%YY+&R+u!%^Z3azYm`69* zFkzqp8||uxeoo~z$oiq?;q+itMC$P~neg#h*DgHA$BL_bGSxA+h7T$SPfINb?qEy| zT?C3BXc{vR?8>hoQ<9`WTw$MOJ7rsXCMA%9Cyl(}Tld3-P1BVp2jZ~2J~%{%V#@GmVy|_V@?hA$+!ypDA1G#%*pggHz{YJ=_E13>`T1%`+4y z@a?MYG6SJdiqcmZp{R5Kgex93Q|_{4-*bEtLeK_35`CHh+qt4;>8-mA;aiWi^GcHU7 zT(Bh6E$#dwvdJNo`T#NY6`>*49okz9Fbnn}I*pi1bC-=6-hVi~c=Z(~<0)HqBCxK7 zXG@bsj}ej>0bgCte@PBIc>S0k6W%-#Y}v@oKU@_XaG;*Y z_R21hqG-q{8m^iKo};8uf=9y{xWF<&IOzjsI$HE?AzIu~Q%@jT_!OAXTrA(-O5h9f zWVbFXm!KsWQ73UzI*h1@j zQim1>kgnLA;FIegi|q*Z(V9U%-FWi=W#^fI8~M4VH+s-t@3PoIY1>LwP(aQ*byWy1 z*Pi?c%2i5eT~HgF-S|28W`p=sk_i&>047Ktfm$e=HFTgW^T|t z5#Mf@c6z?^h)}>(z-ivqGeiZ_6%#|K&)e?~w?5l>v`JQXD=fH=1(6jbka5&ByWPxuz!a7@+et%rYeu;0vhI%Li`4H9 zUHBI(tAS@b#tVu8;xLP7W{~hzlmm=-BC=Wb+)g>-qfp3<-nVMA$SYH+t%&KEdk&7{C@r<@a{`k_&Tx)|Coa}^Oi560iHaG0Yz-h~{8l}vbB;-4(IM+E zX;BGu4dxnhC(jr!xkk>G(jCmrVx+&!lD?)HQhfhzTlWru1;e2w5vWT*i4*4-IboA& z(KWO_luK9HMXDYosUL$6n0d~T@qDQl{&4c5ZjVNQ(thc6;>Z#*wg*-8TpW{YV+QS! zg{bI9!dP7WDe~aD9j@L*B#pt(>b=QN2 zqfrGC{W?){rxa67T^7;FueNEtDV4fzA;q`%DL(8PpIH@!^71Kh5gnubV^u7@K6_pd z!197eWT;0RA`vI^!G@Kc_Ef>S?^=iddm}wSi{yck(##2`vI&W4faUEiEIF7z+}bq~ z&Tu?q`@IjpjuSiN$$8ebx?HoeN^#r!%J@yfU&l~`V!(5`&ugyX8`pCz7*(crh>=(GoSTSqhWcL~v)VrLVFN=BvNtM8It8Qv1p&U)FA`)fr zwYF0HJ|u@ZjS0bC%&sC6K5x9W?lW9eSgSruo-j}hxP2>s?8+aT3{e z4F@MrZ;fjhoW3R#bsjBCkujAcI0f%J0wnn{S-Siu0J6KZX%ra2!uanR&6${l`U^c- z8t|1tmhS^mX2fa@nLU6xolh=rBXh;()T{L?Pei}Ys^KFJP}R_?x2I`HJ|rsuBtqLl8+F;wRv zb==OU03N;|(W)(FslI827X}?= z<&wM%P7USo_0n#)U;K$`6;KQa5F?N$LKb^P#=5&VsqM1w@l+&%V&8v55XCxkz&Mfc3%~BO}m$b_#zfG$|hD7QcMDgwe`qfu% z(k&mvA$p=jN*@=|l0uE|MIA6CWOqCsq6#>Aor{o8x>jGeuBIP2)wGU-zneya1E+)` zWBg~y$@m2U9}J^!)cy(PH<>6c5x5vuhv zDtdcF!2$zTP}y$cZ6D6iJxCW9LIjV$`#5y$u$X&pThUbZv_%HX`sBoJviRloLN4Rl zKgE(;2d>DU#Q$>Q&tlrxIVfjy$gtjZc-V#X5Ys)NPYOh*j`AcjA;c#k{3afUY=2^PU z?}4!{U{yPO`xNi#FEXs?f1oY;M%zeQ3_TzrpOXuKs2P$1X^?{M6BE*xl*KjZFk}C< zArO$nv4`cgZ0cDC$4zWNYwnupw-5Yg=>^ncB6A6t3ZyH(2QAQ6I=uZGgSp& zSqdT2(*c0q^|H36DTj2^%oQ80>9z(9OZ2zwhb*>HTm2(-*7@uR7P<0oYG8k=9nVX; z&wVH66~FOUVAkT=n5^B;%eOoWDO}@?#43W5*zn%Km&>=hGu)0nKDS;v2(%=uJb4*n z0&EE0&#^f(kyiy;CZ3;UjYq$RvS(cUkmcmoC*Lm5b17M)Z*O*pRn_3dMqB_?o{37{ zP_G0f-lV$*2N7I=m+wtH_1#dqsEOc$6PTfgzZ=hB&p~C4p;7;t94AXZM5)E*xJD3+ z2_Kv>M92)4W@@7YcVE50{e!xCB`c$_4bK2wQgC(h{@JOJ?%?5i3Y3xrKhU)n$WBg! z+A9B;7*s1W}n%@lYb5Me%*(cuDMh^xptUSg!|KwV7+GL`9h;g9)*;kP6 zUScFf6~KyMZqG;>IB2e$`sm@Hqk7(OS^bEQ=((9VKxML9}AoZ)Ac+XC74xXzeqs9zc^rChDEg(Z z??DhJk7B6ktpztj5!!$t*~BAWs_QPd5OvKe%BJ*Hi1Es+ z*ziBtU(L&G#^l@(+paptL{b%wnf{RM*4E2p$*Am=cF~UUd@Vw{hnEv7&1c;!n@nfH z7;_%|(#h4+Fc!cpk^10R8YYGqZ>7j+I2EGAc(aT8o-sk6iU6i0nEMZO5psDAM~|Un zJL67QL)W9F5ei7xc+~~Y{eA3*DB8P4$y`>?w=1piq3=n?6bV)ZLqTPL8`PKjb9^!I zar&x4;wLU_hAbocNOyL-6ZLoRSK98}?rPulWyQn7_MN-JH9AMU^;Tf|Q|oc5;J)$L zIJFd+Zg`&w@KbThUZ*X)WBw=SX;@go0NDR~VjNK_M+mX15Qrb(nVYH3_ZO;;YvsQr zud02wFZZ_flgic)ZA!13X;E0Obo!U(T%^S?w{z+w5)>$9BJ409?FV-m^TP0!P+p7s zhHjJJZqqwvrSW<3%M18)NT84uhMCIg2R5ChX0xOOU78@iaKJu-RaD7=f1n~rH)#%; zz4f!<<=Y4bq6OCJ-h-|9q$MMsQ%@1{fm%wYd=+38LEq*@-hOxZ)Zs2LlsLw@{f64i z%E(3O_IWKW&UpTSLH-fiQoAr!Us-gMcMJVE?j%HbN0I`Un*0Jrg8Q&S449O@P3+2ESPxox4I#k$fVs7 zTX0IZ9cg3ze1EhfL@z7Z;rVvnk$?(NOzCsVl<>(&NqC^!6sk{;TfJU$rQ{_!YObs` zj%+EI6*1qv#rq=(5#YuCDzEqXt0X?q`cE0v#*RW?0tfOme_;3ea~7%F{3 zErTZu+C{GX($4~`dWG9U-+!q!!U!ke|OU5*XwyrZ<< zavvp^LdGO@iOSS<$we36AU`VCqtsR8GKrq+Sw<-#Bug`zBzBR%j>062(=(#3+#SGT zYmrI6B1tK`tD9=U0wgL5@5r7mC1ZuXZgdZs8Pys{?vo;$|H1LqX_ma2ZP7N8$#L$S z;7^8+GneNmH_BQCIaDu5s+{RbV*scO+(smiY5xuGVqP%fJ-3HaIwSZ?yQQmRDmtEL zHcdzUh}$)5%jYD<5xgTW^%`2W2JAo^u1@)xF@bUAH{&j>-We*Yc3Pa8Q;PRjQ##-H zDA<$yONx+S+(>-v1x?aFe6W~?;33^gB`kkE#8@42QBrI_HnRiSr8dLWm=HxmMw#s!L$?MJUPJqPJ1~K%PZ=zpLq`jwA( zZ?J%8dx~`!b(=PPQBR!Mpsr|ljbZGYC2_vx(%`4$?^l;@9e7oLaFCP(>RzQZr!S+% z872pPPgef|Asa$J*qm%_=kIRPvO&fQ@*b3*^Pcdm{?^jMt$vzewfNJ*N)wU!1N2A_ z8X+6%;WDR#-KhY6G&Nb7Czqg5%yp@tP7uw}4f*4gf;uFcJgzkCoAK~Lv|3bt-3&s?1>ebP!iM7!gr~iur(MY^?oamq*2uQg49skm!eI=6A7n# z&EGXTkLA#)Bjc$5hyI=Ds_>lz+4S!R&PFC}icR?9vbgjP+nMK_h|;>kejpJ5sq64( zWyi`3VEw7H-p=+cd$?VC&|u_(W{(MH$9KSgaH-o1Hu+7ND2LQM6{uuWF*xswq$R_X zT8d6}W)?8z3Q8{UuKqZs-cmITiG$D*J8h_J#sL7RyD8prFa-Q!qrX@zqpRNo^?O%& z_Sjdbyd&779fRTo=-532&Hnn$nSc6sA-hN4ta)l-?6x5|wVkuR^R_GSHw zkPm(h@d?`Ym0$v|4UOGdymj}%TS$*g`Fr1AYu~J&%={Wcq^aI*)EEfIGaTI~+MZ;r z5ir!h{kiowiP1R%b3=a>;w6P|Cgxb5|C?Uwb+FGwcJy=ey0-4`ogbj08veLPD;QQ+ z_TxEO*yHUV*J?jt<4_Y~Qg#Dsuv7k!=ZFW{x1k6)3?dv4zBolHyjzE;_OjjF8x%I(EqNcN*(yETpp zYRyX1ns*6!CW7GMR2;zETcRjF6eo~4pyD!LfERuHxkf$);ol9hUHH-kQ>fdY;zNu6 z$x!U=Zg&{68uNE8UWl^@<|Ud%>TqRtbMAa0{+uasS($>YDTW=7gm+_nRehupkNDI>D9gM`y%?1LgJe)D7lAS095S}?-4x%O#Q0U@4Ovf zj{OjERaJ-8Pdn#C0m>ZK^9&~se_T*GXRkNK)Ak>k>)-v~N(O|L=EvLqTZ#J#svyO) z{O~b9U|Hb1H7}J>^Ra)KO#^@9y@COx+%MIk$1W;=)9C)y zU)91Amqs%`^FMrP{yzUdqm1Cxs91r|WPeL79NKdU<9kW4pWeRlarx!wXqaFcShh%LrKQ&j__4&np2ObQ$vB3xX$p%IUD_3BFQaJ z+B0uve#r6s67j9n^^YZM=_pPhP_=ID>EA>$#z$zoW$P}7YS^FFKP%&gvjEK(RESjO zLL*FJ8?G17=267bzPvjmz_hdx(FIUOg-DzO;(j&s9!bZ1l+O>JS#hS*Mf10f95?m#I%JhI0j)lS7xA2>lc4RZuT(@J>+H0Pe1S=u(_lk z4@+_huoYv(kl$eYr`P<48_0tZHwL2kc^hUJNGtoDQ}SA<2QLqkVZNdrEo2-}3^lO; zb=3!i#PZz!h)I$Rhei&>rh*?)e)>l)QCt;kBvx#O%(j}zpE_{8;)nnH^9@c=3+u-Z8DKd?!I6avD)YmC|9TH< z&=_FsJyvE@VRt(|nk{5N&|0zsUq>Z9+zdIb@BHP9Al;-4fd;dN=KN_r5V{Y~p$2A9 zg0l5xf2LYKT{fhwF#{VZ2cs}7W5-kh=CslU{cJwTK`Ih3oU$-ezRY01Kq?p<2mw z&?r*peM=rsBRWhvMmGxB_>$4CC}p+qUwzw90+oTFFxVLI7Yxy&?+D;}+Ai$wU3J8M z;d!pQ^gKD?g>yaKVUbtkLjn0yeCp2bwd-B@!O5bc$J^enCmJ3HRNP1!@y`fbOBL+9~M&+I7pcW&hbUT8x+X=Ji0=LjEWD;|=He#)D}td8vMF+m<+3_-JOWAn0((EPEm*&3jRr|c+J`&3 zPQkpC1h)Yepc`Yo30z}ue|EeBEY@?ff>;5Hx^7pm8FgnlKXY2^1G@|2F7}t=wrafY zx@Wdp5fffr_dCJA6~tDDE(Zof!=?70>i%b;_Iv$&iABV_x*QyFtm$9lJpW(94^mtd z`&Jpq?0MN10{{TvvKQx6iw!(U4>C0c04Zpe7jB=tjJgZ}0P-%*PTl|jY+akuQUCxj z6BFkE005cZ`>;T5zs3XrY~ZbtRwU@HB6^q)QMpSz)tq3ScFnd>LWSmpvhZ=0tvsC0 zk_9ig(mI?3X{Nf}6cR;ZKRz!IN|Qz?HXx-QWr4?(d&{OYA&D);Hy9EECCT*#rHZ4fN+Ic!?RYc3F!r(%EUD^9Q!;Iv4nXTEDm3s!3 z@*WlOuZ#Cw_;4}uv?*FBEq+0&)a=t<)cAZD9&UwwT9=nOoUP~t!=3hpP}&x-jZ7GJ z@IqTdW8+7X?&De?ZkHb6+I#4Ay0zP1we#fxJi!x}4?6o30rm{9H1$@Bf^aynH?J2d zR>=Qsw0XjDg^LMaIM*}lzfaFz?GDl-wYuh5#m6v}zB93K)ti1Mt8k|#A-Is@%c6!J z5xkz?6>pbpPO+0=wVPLI^J2`Sb8evX$iuDE1Yf-c@YD-=PTd&kq{o{oJ_gfhXQpAA z1xl{=cRW`uo8KtN?_!NcIlQ3p|Lin^J2m(WwLY2kym_W`%Cj}ULN}7@PHU=1_U zlIg+3Mya&nRsA<=0#}PXyri4~xV*{Cu%2^UPYLSL&766*L#_DXXWf!!FNeB=S<$=B zSONb!OdV?biyk#OUK?cl*jWy|+a)of#P$fKm*{Qxvr$3Z_#_pVjAx(M8gTISRUZwo zzHuxIA}BFxKA(GS^i|s&1~QV|aV*IQLj~&G!3>z}z|kMCS7bONXS*7j3$~_9jD_3e zc77Fs@WK2U*>*Op#OiHoYz`{~yUUF|as)i3V>h>KtzjFW>_;Lx7p9}2g8IrHf0e=p z9zV6t(b!nDjZ}N5@BUkB?m$c5p==7@M@QQ9InX{e^fxTQUFVsbw#2Nnd1Pd~bwhvh z#>NEb;{0a8XjH%-qOxxDv;H$ z(U8ocR-u6eRu?T6>AC>OMov`)hq3|YS^6ZrtDrAW#2}e{Pkl_h?HVc&ZOKSn!V7a9 z%lvy&Dbtwq=vnr}UPZup8CTMynZ^D7qMVEoiBBYq#C>XG9KgZqvPa!v6B`^9FTXSmF)Zr$&rP|vwEEzRQ|y}>I)W2wDm3Z) zVTyxBxk?VGSxfTkic?66xq7H=^6#`HL4cD=svqq2KY)f6jE}1w^7}-zx7W&uZ*25R{)1n7rt?W=V|;yHIk(&BX5^0I z@A#gX$%`GUP&T*T%$Iau%WolYkt2?W0wulaW zk%4>5uZ#_zOT*1z!g%K(1gIJNL}EL$EGeW3;#{}k_;I|kQ*66-)vIqS<6w#TZn`?? z@iFP`rOqvweDnnRV9Bi4IeN52yqbK@l11MVX>9uPu=|7LXaMh_x$x#vHkqb!e0xjZ zJIZ*oIz!)H%EHVh=0)7p2l74S_JOyjIl971X~FIKcOp!@xjvR?sJ&|#@v;OWE}if0 zo!t2r_BC^KERk#w(lD)Zx#`D782>XL0>y*>0|XIA7ytmuQX<3X%osHK87Kjf+#sc< zPC~^|qnUI@1PR5UgiwQGm>D^obycQ+?<`jEEs+71d3L*6nMD zq;-|b^urOH=s_`bMg%!Jp3%TM^|tE;3Kq;ps0XiK@`E>8`!B*w&s>(m)@nRh}cj>K#H{8 zP42zP7J8Moo9#8pe9zo$C@PAI{(V1po@cn5kbBCUnK^T2=9~iv2toDgfPiLr#sUln zP``fQ^Na}KdkfI4S>W@E>cDMPfsP%^Keq<5n!o^lzg;s65(WV608|Ii41wQW4!CAP zNQr@Ye*!G~=ll#4U{T{>K0F`7ua%`r5Of8#bQy2zGOU-tvBqx_ep!ZYLzpJvDb*H2 zKYn^W{TN-zdm-+KiSX(&NR#oTrXVcX1|n)fM2mc7MLY72yK;_a?xQ1glJ;e!m2TPm zeUTzY=iND=v*-Og@5wp%);oS(#$HWAOXsXW8;Jbh6r4TWS(g#*u$ukDU0;^e^zER# z@4Yu$vDxyrZrfIT?AWog-0!#eO2#brJ47>=5#^9k`N!n|`F)!-3EgxV*-PGNTyU-P z#}dJJn7Z}o>0uoHa?hMI$J_hL4t?xDb^Mrj)BJJ8x(tsdp=+`gCcn>{c<}Q{NjqaA zyu%0G;AyedQ3789b$;%toX#(g%o&qA!MDDwpFcjTQ{J=BJ(qLz$lUrr}o#!6K} zjiVbA9(5&NNAhzm^7{1d?rFBnQG(M%)v`|ds^+?UP0POb-zE;t3$|z2up!w$9Y5mT z_tDFxx{TX38Mo^)O4rz5FErkdc9dY7pDd@!{P5?~H6Pjwg75N^f3sx9Q~8Cb50b8g z+@{N@q03mYZ{-WLX7$Q~7B4zVgoQrpFxj4GIa}th<~iZ({M-{c{BHN2Jv|TJ+0nBr zHr$)(-h8U8DDRJSgrG@iq07iv_WDW^y7*}RoP<2hnOt(@@S(Dlv-$px z`F>iqeLfxd>^+~iq#&7yBq9n8@*(r2F5?MR3Z+d`-(mhO3*wI0dfx3zp7(2tnbPL< zc~-aK+M~x}WyI(*VtlY%&MX_@7^u?f^^#3^aZp2IF1UGxY&<`~!OCp8%F`cLG9H$)M>~E(MK$ z6J=bb$*9TixMu$r6@abN0CxgHG}+)8MVIlNF5~;(LH>{}vEI8(^l37lWgVMlgX!05$UJ+dN@;#(r|kVdjybk5A>+umv9#gPd|G=Z$}hcs zd*0MBEpw(m(JJ>sobgnP+>hRD$#Tc-aBDI;ITeI&oOZqjB8nuU4~eMM?<>nL&Ce_- z$~;C{`Df`Q6;VEwkl*j4yu4iB-i-9p&)0rd_`>r~=k)K}%`@btUY@D?k^KIRxyRjCYm#t_F5|2w2{iV*#A1+(niPHQAAI*c+0&*^&-?Pr zuL}1cI8f&Gdg;J{17(MneON|M&ZXkvACoRsUrwma`km`o z&SUMc!SY;vaQRzG3p}rB5+2fJ6sK6t{#PDs@9Ff}CxxJFvJ~yRsQf+ydwIUye_fe3 zuO^Xp7ai8Nm6ev3_&2ZnxRBrFGBgPfs1mAelp*+i-gmu4dAoHPTe<$FW>()-5 zYnH7kgx5>vlGFZf{rekj?>g|N><15wEt^NfD4klv2sxvF+ph5Rfnr@2Xh%%AchtStdiwO~?rCpdQ;1VUTt_3DJzCerwAcNk>{Y4-BVFXm)tdwf}GKXCc1i(geGgV)=+XLUZp<!Q9pz)rW%uaW!!!8S8$HY4Y+%UpzLn3Wkl$Zcl5?WT zW(flGk|treE~6-Q?#)zIlt-(-KI6s9M3xVV{M~x=@O10d$J6vHM+vgIj$&%$+EE&; zzp_$)TwwZ{YWKFbP z22>f9GzmB9GEQj{=*ZBFZPC=0Q!DtQhu615L(s?!&qXQwVK|s@zoUU$k(3KI^v9 z(o%m;PL3}ZumFQBSqZjeoIA?iUND6{c)lU2;I%UKXRK`J%Kf%{teqa&3JCz@KUg~zYeK$40|b5lTbsK(9oseDwpjNsNgDHMnnFs%Z8BMb1&WY zzYB;6*{EjVA%tO*v4k-L2L6W8RSs->Z8A{6A()Lag5`19Y=`k$um8Wy4!c}PP6X2C zKuEU2tXdJ0DkC&~CPLF^{SMAVXqtjhO+<)8g!#aH2<};zTWbK4V}Z1puxJXZX);=s zuSa_868iogYWy1+z4gEvhTpB`N`z(4C2aJc1CQB0J4`McB6S(p=`xn+G7jl7j{HI7 zcNS?}hJq?C1*Z1D&sK(=tl1H!OK7G^ctMv@#(LyWVwoo4SzSU?S0Y09Ucy%pgcS_{ zhXS*%pr$6FpDsh?dXwiiqt$!vrS;po_&*_e&2IGZ%MqjICphP&QH$#pVFw{WICPl>?57_ky^UTzv0_2 z3Kz_l^T)mPSkCZ4*L!}B58c(l^UVG2JiA_hwj@Y1USH}m+BzkK@3CGi+(cv|q8K77 zBO;&QSDNW9&O2Us=73Rm=9z>3{ZvRlQ32)pi->Jl2EX4=Y&Rt*CzZ^dJ12k8pxZpX zdv`bNg^hPjF7o%@N_%JA8yvUenuI~Bh`M|1Fz*_FzVAfzc%WXdE$47j8%;8I&}4iV zY`Zx7nLm)v`NME zl1wyoHRV0JG*~~=V6i5lgHu7}ZQ^+v5Yc)fpKHI^i`Qn2GzpLDG77o=P17PvABuW4 z7j%q3X;e9H>qRy(+b}(Q_wmHU#N;KXq?Gu)B}6_SQED2|)nI)lqL!OsZX@bzU_mzazRymPMey_>srb(!}Lkz5Ch-kUr?>p{FY~50m zF*Z2=GLMfKe4VG~r1x_{#fA+UnwS2I{&W4&8+sKTqlVh6LLXr%7n% z6cM3Hs8et~Lnfuy%ZoR3CVIOyVc498vL>IMT_0qyt8&(wYIs=Qz1%b>ez>y?Li9qc-bVT{f|fCtWtt z+}B&@vQFvKyPNTT$I%mWv6Tp^z-g5U+W384Fl1YZ993GUf;C->~TIBBTC3<@G;2F&Cc^VH*+B%GX3*AA#}- zbc$-8O7eCddEX`L<~Hye=7Bq}_atxqs+f80==TcOKSvYMl-Eg`j6rOla~t-qe2P{q zwB?_p|FDUG96tp6d*PGmf7?x6JkJkr@7WdK z&|8#wgvtuD%hHz&zlZB~NQls7w9^8%rojWJ^$q?xGo?IkcgMjKauG+wYqrpj^8B41 zdnqTor zXBwo=yM;;$vgyO6iwZj3F(DW45+R-_batL0f1O6XloRR9_8IFspEuBk)r)`8hMv88 zcm@vWY%Zxc@{l>IX zJVV572#pHV&-Cr|_)9sFTDC8+?&CJ(P`ghSoofU8c5mv})$_>R*Ll94RP((4k?~Sd z*6~Tq2c;!>Em;e16=8D7sLDR@a^D&0N^RPkyt(wq2|r;t5uPOqee-<%=h~oW`;fzH z&oY8P`&=7(_3G}q`?ecB(N8ze;dNhtzwr&*as_Ah4dwcYs2kV6c9P-q4N*m0rAc^L zmyyrE|6zKS(hnvq%*OyCUX!+cwZtDC9evJseo-5E-B{j+_Nx~a-qOE|XUx!RJX>Z| zVZS=ppQ}lDP?ONmS61|{!30EX?isMf3PF_(zctUli^|_2<@s@ixPb__67_f?(CAaA zPI6Dx;1jVW2MK7{9wcYKXsan=(QtqB;Zf{VSF)D>!`kP#NnI z242^?+^*8^b|sfQ$YWK&Yui$4R(6_p%<68~U>VCEEzJKZW0|kCXh(U!Q;3MMi zcnB;L>_5?Dd=PBA_{4XFW<*uHpIT^cXsf+@%)JFH6MRipgH!GoIP{W%f7J8 zGNKVDiBL$SXkV3&xrGW&?d57q{XXv=^7~#SqVS6jacM}_G z2{66#t2Lho_BHE?2rbvmydDqoPmqWI$g@O~@T4xIiEAc8Q_af*0sl3^dIKsxfYY;gI0C>g78n%Hh0k0>YsHn#;>=%5`vETqoDf zehQ8ijrt$;Q&hlt&}IWE2@o=7!<;N3BqbJMnuv&01rZr`RLYq3C(({dX$m5A5fNOb zQ%1C|F6IoPXPJ?m@?)gR14T54fKHThjm~_UB(T65j(mRqpViCj0U=b zs`@O1y63_4+3)x^e-9D>q%VMwKGTQ^u+NHp>gr3L&$RoQ=eBS?=|u_AbC23y*%&QQCU~e#PFX zH1ra%GZuozzD^lcbs4RBU8>9Y@o#K#jP z6mK@xM&-0&U&=&XLU&a{eKi5$E;~%C>RnFDjrebPetzyXrFo}@mKEo{RFd;keBtSR zA7$_V@kCboCdx|ROj&6gNzdF(8z_m^(YN$f-eP~;2jg;IdwOX0V?#T69vOVC=aIXA z8y~&rTF(B4qpTi~$i{MMN?YohY~E z|1gx5m6FGk<=dN)R=VN4Z;E6wHgEW_JF^G$?`-&8cU5`J;zi?P+}6>1Drhun(0pH~YH(O8dDFLA-t7 z!0cJGXXhV1ytj<~MCah-Nuv3m5RINkDMO-*SG{fIy`8I5m$6HgFj$k(+99E8vK5w% z~M2@G}Pb5Rtj# zciYeXc;WdjIa%)JKH4{yC{rc!2YdzO_fuA~=6i0`J=w31Xzke<8+M^SMh|L9BIa*kxx^-)0;q9aX+936?0Clh(fMUOadAk#NX`XF!iD_7-S zSU1P%Gzs@}UWU_(>TVlCHk8M_d_JGyz480JKcz3|$-cImH2Gp1=liLVCC?9Un|1H) zHyF7SwT>S3a=ruS1F^3)B2)j(_TTkl-<*#=uG9Sa1(i0FX2tyH%)yig9ZH3?%h8P{tP zYB}u)RqYVc*NnCJeWgF}J0-cNc4)G&{=%{Q?EPAWPu4m%i>UFAdM>?~#0u(Ik4Go~5}ogubO7lupfP^N%fy`}938-z*;k z2Mx?lO4?JxZDGhcw1->?tuE}ty7D~S7OIRYNeaxVGZ9vtbK*(Fc-_?C?~LctvGomoIcPv9BUaJ9XF$i-Tz|}qedV#2!VCIvG}YVr zf%~#=eDR5#NY5T0NTo`&o!Zi;G=LIm42`Gfc0O3r;}UJ>K5!lE-(UCjm*@JBmHIvD zvN_nc6ivcinuJzP8Ih`J#~{y18Fh!{;8PQO(bed5v7P z{pGQnBJP9N$o=7Qh|Eg&aqb$&S3ypyLffbvt)~7v-!AUnx7WFHg5~}E$^QLY`gQee z-nhQV7zFauiR}x6?dM!N&PlqF^XZ&cG|&TiP=;UE;C;nHi{HK`_u2c~8NPC+N09bh zSIuR|yhiMa^X(20;S7<{2jV^yP#`XPqC5_jX7r)uj=3e>`jqEwT`;fx+TUCk$47<^ z>h4K%I}O9iS5`v%KYk(Dhr>GCb|UI?{--7zF_MGl<dBcl=q?Oj!#Ou_387gZT+qGbDZJLr*F^B&N^-ArJ~HkSaSqqi3+LN?tDd1XAKHv~CyynMX|S%E(lIYSA~O2G@i)#%JXjusE4jE2 zP4;|S(zRdTbMFSr_^l_~r(7q;``#Sc%ABrPCMo`Vs{@C;Txi`_1XRg>(Wbch{%ZHl?Gx3 z9LKAD%;J2~or+nZB;K49u?o&E7H` zCNg4x7xv+(%g{>~w)0Ydb9`#RO-r2!3;qexp@*G}Do!gJRMI4^tdFtdmO+?)! z1z}D*%({dsI_FDD#y*XU?ERCwmQg`LzCR{va$di_T?6yitH->UMilHr#Ntd}_wL<2 zU2eN8yZ*NsWjONdedzK#H|wna z1?O9sx5Ytl1@iA}mCwzO^S+lLAGz#}sW|&M6&Dx#=gpm&-@A7=PtB)~d5zfTbRyV^ zA`%1bXPR~$Fz9?AIKQ>*LSEu=xCAft4D4CC{pQZb+ByE&rWfXCaQn~h`{=#-(<{Uo#QRe`_^c`w{*FDO~8iUJPU$@^Wr2_*JNC+Nw`m!ao}7ZlyJ)2zuTD5 zd0KyVx}Pwbi1U5%9#O=ki`&nAFnDQ0Mk$UF8F5&n51g-(^NT)kOqlZ;2Hw)iGwR-J zJo8^`crHF!-Ui-_HB^()zO*27BDbH2I4{=dK=kdvW(g)o0>X{?Ktd1gXa1f&)|TEq zTfZsdyp!i9Qy_Lch6t|^MU4Ap`_GNThV)V#FYkko$DzCr$9Nou8ZvF@%l=(GJlBtV zq?KoPTHPKu03Us>_2^7d~Ga8CeuO`MbnAtjJAP*;$vD-!CmkodD3#x=0RS|WHvyXKkzu!~d{;?OfpW)m0 z0EY}S=c1`HnrSj_)nu%>a16egT)p_(PDi{(?7c4$?j#!UMtO;>7koZCdi1FG^Dn+A zeB+I=xt#BGj+egAD8o-gMxOTt>z`)FRqvC}-;uq3O0|phr6%KJO~L?8M$_W#01^Fa&bDI?gcJoKPSM!U)IpUnQkQWi*auA(X!O8TKUx#vMk4ehYBD6-_r({V z7oI+S+8ean8TfC`h1WE#^z+X@FBI*G`NQ@c|JmAs$H7A{rhUVF9+X#Jw`3k!AN5xL zPiYfTwW;X)|#`RM~*`&_X8sp`+Cb!%Te*LL31 zl6%y_?Y+R!V*I_SJT&>6u!Zv#IImqqbxlHh)?L9Iy1+OH^yaW6LPIk41k~<&*7w*w zS9>14=bCdkYDh=VgmGhXR}kg{ic@rk1c%Zdu~{k%7-*iV5z@P3*?qW2E$4CZbb zBMz+f54AMhz<5yx_IsZL8x;qc*McPf6ZH+ZUe8 zN9D51j(j^~W~S@wM^9{tyE=W@E#Z44n4UYgllSsqPa=dgyP;1bja=w!LHe88&bdfze_gMO zsGT+op&1JyymDDw^Gnz>4M6Q`d zS_IRYN6t0lFTtrrfI1DrzF9D(B*Ky$g)nzK!Zj-*ToNME68{|XyIh7Ek8o!cLLD<< z$*{we91CINqQBJS3iyX0Ft;0V3}ZP!n*cL^o(Ks1_vX$Fe<`>^t7 zwe$TB(!rq5g!A+Y((N1_gLF0EJiR$ji|gTC3w*A~rGN*g0xM`x!2=aMP{9KgJW#;{ z6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aM zP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE z0~I__!2=aMP{9KgJW#;{|1KW*Ux&(o@DXn*4TnGrA(VI_to;(Ejc>q|%4a34f%$|D z=1ozsIN}hJDk606hX_4jLs;rkg#Wk<;YqU*p)W)wO+@9LlMuOk2CAmSqnbJc)%7^k z*gXR^_r#)B$_&&_5mDP2i#m+ycGTH76Lt0`qK+=3Zn}uN2Sn7}A4Dta?oUA7{c}-w z|C|c^Lo{HTG3}U!<@99QGL2m_>N3rl_B;m87}Rmbp^j5V?bJBbN{U4-9y1<09z!0> zJyEFYo`EWE8I_$2P$_9HBDPBi&-w^qr{*Edy%?c+ix6@o5g{9qGj?1({#It`&m zXCW->V}xbQM1*q@D(zZ?%DW^~NlQSaIvv%Lrl7{o>8QCU4z*I^P+N^fos?MAb&9B` z#TsWaHgJh(=#II zB>|Bsvrr{@4l3_miiksV5OH=D!aR!*nh}lAAEObH5(mrS#V~8jVczor%*<2FTg+ny zua(a`|HthAUk71rQ1*{QNInYF+9;Tu6Jb(6g8A%Hn9oMR{KHIyxMm}CZ!|)We2B0^ zpCUqEfJ(_TQF*r=Rd&asT1qUc@0o_0&Un<)MAT7b)J;o3J*SKYs*HwC1y`xedwiCl zf+o%cG;t)Lsl$$@P8rRTMFX2B+0opYfaZDvnrn>q3j9knD5oXUG?{6upc&Jf(P2Z= z6v?1}lQcUTr`piiWk(~I-MANy^+E$4Lmta?8MS$A)8bLXA)~q@233>e5V^;O%FgA8 zIQTij4=zS{MifGsSGLYXh#Cd+!KE;}SHhe$9_F>tFforYudxnT8aQF2LI?ccfbaky zq&@_JPC!Tr%KjvnzL^b6dIHR4F);I)?#?9$-9Hzh`{y7$c`+h(E=J{ap7X7UOp;N3 zcN}W&i9v0*)v)91rOrZqR{|QQCZdre0Zozv_arb6^8I8jT@qTUR}bxq!6~6hY62SZSh{DTz9yrdE~8GG9kuir)J&d)YAI2ORA-~guH~qdvKSHj zXCs_>#q}XVwl-=jXrkKCjOAVD^W;UeNw=YGnjP(2Hni8QxW*ZaYuzHQ)kIvUTaA0) zJGf$NysuUFt@(}3y4bYuE49T{CBu4mf1C3Mh5bYPmR zBCbo5aIIUyHEso0r`ge-b%km}TbCWJbsJjp81h*1n7a7BSP>1^*r z=%Oj;s@c$0RnSeB(M?y-O|zk!Dx5U&5KZJ_Z(Dl#-eJ< zG}K6%j@o)W>h2YdI|v)4u&t<|g_~`98SPXF?cG*ft6Oos&UZG-=#jczmaMHiQZPHqV|s8(F>j5F?WZSP{cfNcWy zAta(ndIGL;i>RM&L!GpE)Jly(bypm!I&7$-&O;^E0sD9@FbiQ@qY>(qVL31l=DcYz zWm{ol-eVp-elG;($$wM`{==|?=l(4a9H$_x5n=jq3QPy)!p!5dH5wuMY=oYfi?CCP z2v1s!O50|l%B~Mk%^8ate15h|LOsof2C5B>9X2%6ZD{3E&{h|5b*h98P6-`Z=3Rj~ zr>8EVcd8A2+=?OBH#-#!a7wtmvDzBVj!Ps?q-xR(4}CICSwra zomzo^fCe%KG3}U!OiQLI)7GG|ggcn#OnV*!hlE>I1q0kR-0Wr@%=%bH?^HW_I3;vb zt>|o=(=OvWmkn35&&HLAmTDrJxfC=`RnTA`-!(KHwRcQMjpR5~bq0079E9(SMVKoJ zp}S%c@|gt7w{u|GH3cT-J?25?Mdr!>ut@%6a3>(74TM1ZA#DB(rk#($lsXIMjdNky z9)%Eh6himMB5dzmgtHFc8ILNvrlOh}iyBS|we{ieqEe`eeM5Ffh=ztDLv7w5_ z{(yN1&xl2sHUpvQA0WhGgT*x)X68NSLFPr~N#@OeOc4H~ki>KUP6+yG2!%3C`(6&% z{io-{k{*rFj2MLNW7(gBN<4mS^YgsVxgn|z^;8=gCd+8*6wy+b(AF7;YcvVhYYIB0 z+R$B9&|8zx&ne>;r-a*e8H02YgEa;Bx)lslCETw{7_P~9P*=eB)s4^;jL;Q4qAD1v zD;TLscvLM%{#%z|Jo)bmygV8NX?77E6^tyW@gus;p!vf*2D*d?H5tR5JT@YR@mT3H z25TY)x%jSa2{*fJ=<8Mto!-sKYlC=nNR7wUM(oCJ#0;9aZD^RzIv^@w2k=@TDG^mT zU+C;Igk{(e=KcU7SvFYq#=^|J$2`cq$UMos`5zU_e+2sR+}{TR9fa`R8kn|^hw12S zn0Lp+vOfVKd5aNxa0$Yb7a@ZE{Os%F^}f>@kbTXDh8(Zg>}aW3(asT%YaKFf&=qub z+0cvE@T!Dm5E(4XUd z{Q~|LItk(I6qt6~VcxkI7N->i7I0$-wkiv53gXU%Z8=8f)BL{ydpGUS~5*tN`S_yga9fA?H8*u7V(&r zkIh_TtVGPzZLn*0C_I)<39*`p;VuaSTrzIb74&k7Ml9h5mFEF#KnFPOXcF`Xq{X3T z@>EoJ#36F`a#VJ#K=^?eggIv*)Hxj?JFT#!&x5(x3e&zU2&5TT8wq>=TcY`oKq}k) z8iajkArvYwsn5c^KNjYkFJL)nM@Z@ngzcS;FxMhf(iBwL8-;4_c+_-@sGDX(!xS5u zIHkb6&+9+8f*aflx~mfUIwfPRIDqfh)f9aEH{Id)cijzGQLg;^G|*&_#(G@F-MVP_ zZ*Ng0^x-(IgYTiW;@VWjh!3=Ih{jr=L52-=93pBur=glU6IIj|h&ZwU;fEE39h!oW zJPDRFb6|E%hH2G&nD+eufx1?#1Fj_Sf~p%J?C%PJ4ntVG0;b(h!*t3HGuvQWYzR59 z0HHrEMz~`>BKEM~Ry1;ZYGqhaXMX}3XfhhBcC<)S&^ArPwHM01Y7N-=E(Le#65iKk zWM2+HRs81nW$xcbBbSV$x{O!LeL4eG2?Lx8`jqDwaPGi0s)#m85?ZKsGO+_u@56L<4$S!?ENPPvvQI|X;rR%6 z&PS!4(TGf$g6fVa)JnCY9_M{0C8BAn4Xs@gu69be!6l-bOF|!>_jMU}sfrOpdO)>8 z)+Cfw$lH~bw|^l$^PCc<@>nga@DPsWV5$Q6za*n54HgbhpITSQ?i)gq{L>(<2 zwH#5XrpBX+Yd#`QEJXOh`3T)^M@X^=%h^Pj9nZt`@rN+6oyt7Ry!&rg0@q)E{U62} zHER4t$-Zn5_VL`m9|Gk-AQ7fLb79^(6P6SaAsZ!x9$kg7gDVlST||{VAD|lV>u}4c zqbg{iCZb8|Otf^{(O#9%F-11=bbIRxZqZoxbF4_leY%8kx{TC+A+P=$<>!CCO`41! zH4!hV67EwaBX@)II&NVdz;OZIci>Xc&S^u-WGkAm9m#t_cTPi%lqgh9osG(8K1KN1 zPY|XpLTHK=AzR;sWzUl^vweCZ8v>;Tc=xh7{r?F5%y}#iJn+Cj(%SZbaI_7CQw|8; z1uzv(f+=?{%mrV;vR^_-dKAKvmmqx4QdCN_BQiZ6)wNjE)+$~KCGVQO^H{o^eS?*Co8GiFiENb$35nJO?#W@cV&bbKRC?nJ%B4kSfEIa1H%yuf} z1?<+NfY1&Qn5X}Z@Mq-T>-D0vv=mP~@xJ{tP|#eJ&{mH%_K0`ZZ0O}wa0~l;+3%xE7@=|g zo(x5ok$)xms-mp_9bKX+IHSslRway7C5&)M#-4(K#u`x$tOJ}@gzuk)u;fI9d>04Hra3Sld>y7G3j%q8SVO5&4@wG{R--&N@(a5(bU+-8`!shgD#;5?;q7A+~E{4L=*9l(~3u(BHqztBv;7m z|Bk%=O=GpuDd9DT)zASCY7*|zMcn3+j6KHPRS_LsQXn3{d&b-|(I7)ao%Cs_nI4O( z?m4J@b~VEDK0}ye5kh~I5c2gqurSXST4Bm94e&DaH1qbq4gQSW|NNb|-+udwbc>y( z%>)SfO(D=32#XfNbYgs9?$4hAOZp^)rb`HOCUXc&|e;*8GpEBA(JjEOyE8{Y^aeckyaPxmR9a6**+gQYB;m z#z=>Z`!xl3sWJv=Hsg$kE^g5{+o@fWj25m$G&;z8NEOshjz#rd(TH>}L8T)L5q>~M zSn?Ev?uddVcNWY)y#>=EwgJurc$#_p-xd(~xh(&g&l4w3L}X+nESA5v%Bcnj`ziaySQVp9P^Nh1iQry(p_ z1e0eXOnFOT&ie|M^f-j-u?XAqA;N!{i^@BrP*sgV4bIVaNob(i&?ME4R;e=D8)rT6 zSv|6`myhj!-Xs2yCSsIo#f!R(wYmcT|0u8i6Y}t1tHY~FSfR>zM&tQG!h@=ed(^=G z@4hYxT{RIMQ#p@>_l`?;S{uM-8_PktrXdvU4RO(qx3~orKW5X#pD`a{^3@ z7sEu^0p4aF|2NqHKbPgd^0~0E5Qh&R#*`^j{;>Sl02-9VRY!_kqZVt?+qF^d53FHK&SBJp7{%?W5 zBJY=aclPYrf4F;%Io{V8LTNUH=vbK6J_7Ul$*^oy5aL*ZP`0g3e~bv%EL6^jLe=zm z)YN3ub+XTo^E4&2c8bPX9=xxw2gmx2Gous?Rb`AYWM2~A)MQ~xh3x;1Ec`eB->*yf zN)_?4(~41i&VzBjQ+ZARpIz#-2KEQIY-q*jNTepBL8^p0yQiV%t|(MxyEJ7PBGTdz zmKuxDoG)QHy$I$nN5MRAAxvJ*VQmC~dHoLy$lnB)lHtGdz1?pAL#=JV=Xo}SP_zTW z;<+##o&?j`1emu@hUK&Jc;AU72v1vvO1onaxpM|;q{N}lK0E5`324lI8QqF@T0A~DDl=H1g^ z*_D8hJqr<<`w7C*=Obd96;;^ZvMUy~+;-!Bo`%i@G;>+e#>MCLO1P2deoe;B4lC}| zB@ELgJfiY=N|>ZcP_HzfyCj@LUBcyKg}hxPd;cDK2-}>J@RlZGv`aD0b{nb(&K>Q~ zIi#9s>>;~`?;TM^;%!#n1eSpx6M1;9N zMnuX|RCdXTbn*R7>~~R6UzN`7>u;yVqa&XU&*wrL=fX<3N0af87FhE?qshj(9#?dK zAIrX5{3W_XTpr5cIi~{uEDio19a^mO*-jGp+_uM^e72y3yZM}9XFU3K zq0zrU2mDnzztsCDPo6a50lx*!03=-nfs!Fm0fh7qVETS0%qbEq=`un#$000zCc=~E zp^_$}ic3T_zTcJoF6@6%Wi-NrQA!_Ln$nY&r*x-PDP3uGN+E%44J0(nJ-YL%w zykD~#`$ccoWc1Wz+~}5YE$=H&v7?!qh^ta^C>r6NLZf}}({sKz>1E&RG}iYLz2ke1CitGB zslLZ4+BcF!--DFk8%A?|chh3uAX?$OomLg}^Cv93wqX2-#+egFH_e(by4imWn`TWM z)8rgZ8q*|e(i2UxraaLkYw8n?v!*`TIBVKdjk9Jv-6$*inMPSL&t8=k_gup)>G=kk z%1iY#?Jw8Moc(Iuvunmj=JDBHSJD>H6qITT)~GU`<+Y|mx z(B5fBOQ(#+yhoVrQdb;m=n^6wOHs-73BpwcVeY92Jv{-I(^i<7$5$%?c+q0pw%DGxHZq=mnJimbLHrgp7L6?zv zCFg#(1e&w47d=oqmF^)cJw#J!6iuWj={T; zvfg>LMb^8cnrFTLct9^s9@8}IgD0D0O@F#^X7n?SGGm{;Dl7iE250BIRwrxAjL?!R zDgWiXa@Zju)?vkHBPW3K0wvs~2hIxVW!w)V<2pB=7iL9szLPw|in@IE4BM$}ukN0Q zN(W~ld~Y1W4#)`66j(OSgjt;e6A=XZ5yJK+5Lg!eui#R$dnLc$uwlb5y4RNH{;MHm z6NHIx!?fjbn7@vLWs4OddNe|FS0PMag^1mJmgjUM-d97FP)8NfP_v?0s$`t$bB%7p zjc&W)m$^x^8h6GF)nwy*?lGz;ysb;Z&MPMSJkLm=EemSW=+ke~ZDgl=DUOEIbb5rQ z(Bm|oo~F0yMH)-5)2sA0y`N7tn z|02HfVC(bvP;1X?54ZBXJ|ci`jA-c@_ee|6TO(U|-g&gS=e<$QJmW_<^{|aF^~ok# zGoEgo74u9$2P}Q7Mvg-id{&@YwkO&K@vxl*c( zR(#)ZY62SQ)<8TkX$GoporTJdWr)a75SBaxq1z;c99s!9O@ZmtWiS=64rmL3W#JbB z@(;n4l=DlK_3_6aU(}mcfbea72w9&%_;MLcj;S!MjD~sr`>=dH6`{PJ^2~CCt1D1x z5AW}bMs+nFwGBUug2t+Zmh69Vin!j%{umK`H7jn@_-t3s-4Zd%VZ|6t#8O>Cp(Yt; zzmg{YLHwCNpM8BS|5J7kqnmw+bQ8^@JIP8zD25&|biia9P4Ck)^ftXjW9bcgh2Ey; z4IS_SjizWCNg_Q&i8P#M7T)cjG{0NnQ-fP)J$rv!&olS8`%fYF`5X>!<6(SmcpJ|P z547>T@L(Iyix0LjbmFTI1@r;yf;S&+;dy6NbI*j)O+CC$n9l2iry8B*HNmY6?8MjM*&zP7$Lt2@j}}acr z-4uh!?>|H(&IwA5L0HNxgrthF?3fMno{2E6T?$jyY6#!9g3#(B3Hj&XQZjobzdv^D z7~XvI&2yc)t|bKe9>Q6IFyVEWc8-DhI~kTO3PN_wMQGM?gtG5+TMQz0Oh)DH(*imm zIUcok#-Y9zi^f_sS~z0RJ|zYn9Z~4+h{8=Nv3yUQ@L=k!x=*-g*O}qAS4wx!jHI+V zwJB{*T}qqZn9>(Er}Tx*eg~UU+PntFd#ST)kSiga-1bn?MbOGsEva{I6t$yy)R}D5 zi>&{Tz3+gIs@%TcGm}O~dJ*Zpq*q$#y(7IhK@=-UlimZFxp$J#5fHFo!A4O)ksi`! z?o1MTvmlVUlR%P5oAY1i&J0FGMIGDw|Gu@pmFV;3J;|K??X%B0`%p((Lp_LdfyFe0 z7SL##OOt3OO{bUXC3>D-qi1OWO{V1v28L7Gm~?2KCZeGvqK-+28t2)E zVl66|SEAgxjVPV=21;bU4R3Q4ypBi1bH5fIXC^|ka2C`Y1Jnwtmj4h3aA%zV+Rr+6 z?3fb&{Puqw2;3#$qaDDB*}%@%fy1+alqJB$jevZtH*O`)uW<9^(t5Yzm;2v3yE5`l z;+lT9lGl#=J~{fu41=)1Vi4C@4Ek7$F>bp>+OSuaHhpSI-Fn1&{_T_ZuI`V|y1M^b z=A{n`vaWnY_pW|M_pa@ydpEwI`!|m~#yw2;t{+tXds$aMq0GzgQ`V*T$a>)|GXHRt zKBkNG4xOjnWS|{%j<(TB+C*Pc933PbeMnKXn^w|hT0&Y{K+9+z%~p88Y#KxJX&5c1 zA+#!|uYE>bNY0@4^)rU`XexB<=O z@dFqankksTSTJo!V}%7UqqCOiuAI*#BHJL~ zZArvrNr&-90mIFD^fig-D#f6kk@vo9;g`x@Gcl;2rbn%d0;);TsFbn>Pb98J8EFSf zaV;Qi4ZJ^J1+T-e!{e(2k|#*G^oKVbrz`;-9f zSc%N+*hJ-4?E1x-#?AWscQ5Q9DtMoW4iM2XB8n#>6A@h@ zqVI`FCZcR2DxiP(*oi2giYS}%$x1nNhcf9~x=YvSd%8&1D3#8Wkt9l@b99c5(+N62 zN9i3pP_Tiv9-NoA;H9xyuS^?|Ib~!A>(HL9EWO*;vGk6tXX)Fqfu(=vMwWqHn^*>S zZzd1v*-{?btJVMH9oD;*Jgj$1d3f)Z@`yey^bDi}DrZwq;BKL-{}8rV$1foF#_ zR`|e6!yC#oN7Yxffdv!lSQbrwGDAPTmTX>7*KQV7WYW8@zeo~r-l)S;C8rcIhIhO2 zOexO?vbT&RB2W_1A~hC`lJ%&Q5`&rs9jcsJi;D59QSOW$rBgRM>w)Xw{gn=$hvVRJ z_8Djvyae?R%mIR-^8W`ofIDOSSAJF*A`1QC_U+-jckP}{M6pD~@%hf^)-qwUS5lc3{ESel3(7iF1UhgB#1w4QVX1X2=*Yb9_z9(lJdfCp#?5x!XP3 zp1RJ5q!{2fPjs(-LTsmO=f=hfv?%2Gu(ap=$UbOa6P#uf*)1 z{m&W`(QqPKNJP7d=qwR^_qPSvfA|y@6_Hi8*l%3FTx60G3r-zBl7HaSy?J|ftk2a) zFV0>x_xXFzKQlCQ*nsxdE^V7xBEuS3I<;DsQDrALQWa_`Rma-S{%|K8g*K<3-G z*zMQVU%CCe`OE#g`zv_HxbSoj2NpcQf&R_qi31#5VEWKT^7N6l<+;O~%3pO@l3Q5! z3fUW`(v9c4v393icjN(1P2qck4myMO!EC?~t~K)x8HwjjL<_A&qQ#Tv zwWw-Xg-XWNC@;mJ^l3dxUX6qIh1KvrqlL$nP0*xHhvw)D&RReORAGNJ2XJ%zS0z2)%Td9& z5@nU0)VtwxAr{`oweb4-MR=yngN7DBefkrqZ*PEVXH}>w|BV>nruc6}M9&e?9w(Ro zzwEi4_{ z_{yCl1LdwAg5@q9g8re)|J%WG*N(0mBzNl=sNhuh&Ovg|P7W+!9@DQ|fIOg^pFFsy zpFFg;ufhd}_HSgF+TYK5u=9f40{?SFEzCsC%tQ??lfB`2x;1v9L%(-p9$*qxvQboR zbJhaJ^FDa99(_zYbm5&+Tn{t|XmwtX#wjtVCv8B@^cYk<7llg6D^Nah9m;&U8znDn zhIjgMcqcA|=k+*fQa3_=g5YeYZRQNZ4+?%O3m?%&O!6ZGrZ z#4@gTp!`XfdAS8)Cx`-*i2Rd?S{WW-fGzMaU07V#tsKBP-)S(4s@X0MAn6_TKuJKy z)EGpVc&B_cnj3UzD8-?+q(hBV0acP$p+fv3lsmNnrBb({#NA!+HtXSeJPIEB*25$9 z1*pG%7pnWL1$Kt2>%Tkx%Q4t|!maYIbb>+@#a zpE7AoR*!BStigfJEkOazEa9Pka=SJ`a%8*EzvXslA1Zff=e+HM<&IA5VO(Ht(yc>~ z+`Utv+_Q6#!Uei_Yi=3dBUt{h>ug&=yQ4%Ar-{N&69vaRFrcN8sPTEChUe+-;CW=y zY21qe>=&hKj&`>%*v zpKxG6(79q5aDfVZPt%n-0gm{0V?EHU$7M;xQUlKji^>i$Wp@aB&6=F`K$C!$>2YXi z)}v0U9yN_RR6Wi8YXZt8Y;e>AuWW+%C#&Igcnv%bY=tI$Ce$mZL7m2Vz#ypl{0$u7 zcf`Mnh`Kv#cK>(&2hXkVzb`uW)zQ37n>OUkoBP`Ri4(?Vb?e&E>hIse;_uho5)$Gs zw~h#r+q4OF+ilw>RBqe0*liOkw`=3TgUGgw1EESj(l*l1(yvp5{C3ZoxdpxV*{SyPe~%Gvrj$O15fd6KpaX*o8WUM2HuG}c%E1Yk5eeZ{eH89Xm_VsIF2@VdB!y`iE)~&<-)NRuytk`wniVG8%b8sFK(JsK!t3zw~ zt==!$@&~?ar+yz1_5OsY`vC_AbU6BR4Dd@PYL-U!<|%aJh3;gEac@tMNsk}cOO`o+ zQNTD!k0Fxim<=$AXlr7xFdbT^3TT`dhq}pHJb7^~s+!iIV$v#Tb^2YX>&c0uml z!ub-uRq;>1JO) zL>V_v*pua(MJFhSPE#(Op&Ux0TuP=KGEpvFARAq!Jo=XM={6ORl?o__3dyc?1O9KG z>o;x`?)zw8-jXGYb0$rmnANLyFKb{>pzQ0{$`TYDB!@?Y$q}u?|IlsSI^20(Sm4Bg zwxM!J>p)BQ$TsrselOSxhQCQPVx zfU+s;QOf)#e7@TW@6?^}Jh2WQA8v%^$~>rrsZb~7Kt&Uw8ub^}1Aim_J)HXf4}a6A zI){idi0B)8QNg9cT#GqB>#8B=c2eTK>xbequk1Tvz4-1COX|*p8ODtt-9EcK?Ypm@ z%fI>gXu9#)AiDN(54!q6Bwcut5|m#86KrN(rT0_ZXY(g7SE&r)={rdI7ef##= z7A;zoJ!b5ftgcVv4vz>|zVi3QFaQ0AZ$!k8xZ%J82d4;% z2(ol;+gjc^V0v!;_$@@E-y|Bbn`p>8L<8SaskGGRz{*065X0Op3H*U zty-YO^*}+r-6&v+iGAjH_EbP$o<%hYjvb=OIESqnT3)txA)bd{B!fWPGYM*I){i|YASBDzLI zhPi=T`?qIZ`Dm^6!n^Y<=55n&Cq#|@?$`?hu71|P*M(gzx*N6Vnz9ys zlGkBaaumiTM`3{>8kZ$4NV$)i?RC!mK9(=12ujt1PApaBEu7I%4)`J}7xr`lT_8{@ zfy@Ll5y(iO6apm?D3L%31d1onNz%|)|=){$zqQrBF1*xg2g;%d#E&Sn!AByhXyJzRx-GAj=zH+(ft+(E?y*hK| z{UO7KWw!6oL2l{iYiSkWZwU$ul|v)Ke{zds!NcD(E+|+K5iSRWhgdqcZ7c5_Jk^#z zC5~wF7NYUnh(_-u8ouYJ7*L!CxN?C97?7x7KwkJky0oYf8QrS`kWoZ>iU^($ob2=p z8)Vcuyuwmr5YD^jrD(KB)}j&b4!XD=HBzHdB}GJq_$4TNE(WDjx1z+YE%5$I3$Mc~ z;jxdkz(r7hIt}Uzx1plVP_2Iws;B+}1o)Ns_ah?7O`k*lKwq;L*v@5tf9h@d_R%?a zZyX%_gS0d7@<+oer>sS3qgL_ruO?|x+Yp6D$?MR{q(ex`IY^Plmdlzot*IsOi*>mw`*{LgBoO1k!x&&7Q1SyDP|-Q^ zqSI80j?)u#l&aDpdXhe+dh{VRqIan|?Iu6kK_Rr6TGIwEAyyBs^Sh>F00p4+@g``_PDpU%f6o@DB@-Bipo*cMO}HoBzC)=($*; zsq2X*Z6+G`#-lOdVII)-Yf>;E$#3lg%vONhz(?o=PknKjkVZ}rCU z?eI7mjS}aUqin)zRJfo=l@uLnrpBR8nutcqo)r;6CiYy{p|gqmto0aT6fw>qV2V+I z&ZNg}cf~&YM)2GJ`O=cM^*P2oqO!qv3zrCYT>nO*NX1kxl@#rlk=~`gxp-4 z{ltkA`Ae2A%N{;rWM*W?PF6qv0E@4Gfb#De8XocJ8xbM`;8|L6Z?eP7PKckgTYLgMsq6Ju(ejw=t-CTMPK zhG*&yc&EgoL@M_~uR?`n9V#2OsGcO^sZ>20n7MaKK!909IO`}TJ$jh*iU&LI@R@AX zt6q{sB)BW~mA5|z6u-`+Fz&^wnF~ignepP}ma^X=olRxu*uUb;0Ui$nm%X(~fs zQ^f}u@M$p&c#DE*7q!mbXm1@oF(=eF*y4(Zkgy0jBrNUO1KJaZH*}*z;)Tpev z^XA>(yk$%7;iE_M($mrkzxn2yB3YL0`FVN&8ceu$?ONfEojY@J^1mPB z0OOqN-`n-oFC8WFiX_Fkw;pH|@RdQp^G@IJkp>+GDm&-( zh&1aFmZF8fq(w86i2712o-)Ou+IcN1rLbSYI6kEH6*MAE_6EFhR`C=&1OW*>h&hM7cV zC(~3(Q13K}s!VsqKfn8|6YN`1CU?PvIvMkZ*UETqVk_DApkPzkFB9mhlLN30z!;EL zEEg!w1Af#5mO zf&mk^&;tw@_7>68?>aQW;uz5BFj3@}^dknGBYQvs-JH>rB)ytUZk-LlT}g!ADBv09 zsYVe)jXLx-vtKClSUrM`yhmJ*#>N=bHN>Ijg*a46j6%hP6)1l^8l}J5fs(14;LUq4 z&S~L!`%QS9nF~$qvrwN*hU)%0sDvln+Y|7J_+R4m*5G;kT*cnv@o*rADC?c?Z|(EH zAcn!T40vx7)F&3fGj%n*Zt~2-c9cknL+LZiQ0~k+R5VAU%7r-8NRCnVs5IohX-SI! zvmOyf9Xhg(Vh}Odpu^}C=KUh(NFpw{EB5*4q{o0xtoABcH?4+s?%28+vxnBUOq<{* zw>%))RCbR2YXo8(U@q`m81SPWpr&~8QFy>HCk7mRfC0_uJ@U)mZV!om=CR`cVLaf! z4&m$M3N8%bul)Cve?BZ+?%lUv<}0txyuWSRw%k*vPUT;}exooWBjX>(gNqk06^f!h zXV~x&S?wY_Sp9;6<+fp=)*X|E=H{=QX{VL*h?cxgv~Us8{G|>IaPffR7%*Y$j~Kw3 zU~vrS`57rZpg0C_pKwqDWp~?77nas0qkB03>&(eU9bPi%Fv+09DE13wuP~(^7>jVD z2!E3ZWq+VaKy9-Y)ssb3Hb$XB!V;AIay3dDx1z+&E$}vPf!E0>czn1Cn#(Jp-ZKO0 zFE2wy>!EtBqT(0o7SGU!;=cwFnIC%a?-cXe`6WJ(O>}Q%R_?3iGLNcp;~C)dXQ4@2 z1CJ9Tyi&Ho+p-TnXJb(+J_==%*5Qeib*OY+i)sm4)H21PUYdv|rfB$?MT8hdv}dn% zqh8s;Jc4xJ~4^Nbyxhe=9i*V+25M;#Qpi>>twt(x}N3LA$2U1$NS6859n zUpJj-%?m`UW)dx*`y&R-T~73xGZ%PKO9}=|oW|U6TqMV6$CP$-cs)(8?0_vp3p^;fYixe$_BoVDyH<7r8B4RM>DT?MNVyQ{Q zx9*C4{yCiYf4R~pf5kJkEd2JrIUbsqEJYbkoTJSO@qe4B)z8 z@m%0x9&nP%(pOZ84pR*U13sh1*>BqeqNnGC`3616{~s08fA;S&CNM8>X$Sn*tSc(o z;=nZ;Jx%S4B-Bt2N-ac@*_W?%L|&5alKo00ImmI zHi($ZpIJ$#>=7Si6woUr8l8*+B9a9JnzV|>)i5arb<84aO6ySd>^f9rUYxKVr7!G6 z3FgabtKoHO5j^*9geENt>Vq#qed-ca_Ki^K%0X4$4H!@?{ym+Z9lvy3IB=VYvYa_V zA>GQ_L6(=R=8+nAKY=QB1=I(&L33_3JWlK3bvh2-=Xby-F&3o^t5G(76)K$9qOvI# z)maCTL^NPsg!ieKVi2nIPjer&4gsRG_uVXB__=``-|Vae#AyU&8?I4|p^NXy`1Jpp#UNjwu*W zoj#|!+3(wZqo4cB(0=+LRNb>hUySsOQP%1um6DzI2A_P@Qh zkZ&WpY$W<{J&`zvXw@vDC9{YY&;Ka~yt0-Q9^k@&;yj=@2K4{X!2^2ir=RhFkaLtV zY9^(vE$ePA&?X7^)S$z2F27JoK!4sN&b*fStyzGt;uRK$`UzS*WzwU1QZydmby3o>k!e6Ukd(Whu?n2f=sg0 zDVn*UOWsNkd@Vs0^9(em*P;3DEqI(=3(vF_@G@9Iacvh?`+ngFYoQ(Wb53zC%ar(?f=4tzHwAef;=|e2c|W^tbYY0vplQ zG@=i-60Mt0w0sWH!ns7RFQNyzz{42uFb^2|HYq&d7ct-@6}34^H)pjYDORoUL3e$= zBt33P0+uVhRg1Bb4nqvl=ws&jKs{PZIs~N(Xvw@cS%6Bg&*_2yLV91 zycIs?Rm$!#&--!EWQ$OLJ{Ria7onmpP;Dp)RjEIT0nYcIXZuDGDSdg5dkU!_X8~nS zQXf13d^!_qQxw!6#X%Fl4j$4*cwOHBZ{uc^IInB`GG3oHKNrb^&zZ?EJtofae@+^#*Q8kl!KkuM=ad;!k zv>{C_Q~EZPhYt(3Hu_|vO=bUG6iW@b@-e*WWrM*iH%vk_e~5xu>IX!Sy( z#jg|1Ur01(nL`iwB@7s|gA^W690RyN$i)L(xj=Y4S)X1(=_{+bTMH~Q3OJsu#S6?| zd3R6>Yk^wyko1T&@N7Ud{L{5)mZC+&1RZK$h(UEz6e^!yi3-LwD4Q6EQmJpi=Sr;N z6XKN+1&@PUpfRq5+Oi+2f?TNb7DKhd5&wT!3v|XmbN@}h(@#5<>~q`aQ%UUq5-M>l z)Q6vk=6Ezb&TWC`_wU2&&d2aMyAvgo*P=}F8kA2HQArX|Em=UVWF6|KalKD~ucSwa zk$3n+D}B@bOfeWHiOLS2>5`y&lReno7607pBMB<|2d|gSVa<0Cq4M@m8QfT& z*t?-TbZDrx;m4b8Dm%yiEdntPa4zsL25?Q_QJP?JJ%BO5RU1rj<^pG^LiQnhljxUo z!vEs@|KS*a+`lf41!(2T<$0*=TcFzN36=Ms-~i6}FG)lRzw5VGNb8BFls|kNI64RF zlxV2;iqOO_fMC}CH^_~e{kjie-;B=Jb*DEfl6l|wKt5OnG^0C_?PN`j~nm5_RqPnz&|Kh z!GhLp+sR$K_pnZ$@=VsQUAt^ouU;)IDEJ#zF=XE-N=YQzxSnXi5~A75h-R+*5d$99 z0~iB%UWj?XPcXpY9T4AZscp@O5LuW}IrG#S&qC&f?)w(VrukyR+eC)Z;6xm0>dJrnZXlM?;0L>{qJigMwD}5Wh zGxoygv>v6-M4@crT0Ft}hA{@!&&A-WWIYi!&K!VsfZ`aywLzCASeyqG*8?8r0WJ(kCa>(T?e(H({U_qTI5sdAFdy&>2(l=> zh#fjw`}FOXIcwHy_YWRCl+W`^tm*${$6iDvTZm4aAX+Cn^nh1a621HgO_1k>9>xI0 zJK$3~(|56L>97#%%VTR<=8dbJ@&5d>IYv=s=g)|{K5r%w{4;m+yb8|;8bk~;YSB*; z(aju#_NEwwuveH_izcR6)Hmu;OXAspXjD#Ij3=aMlu6o%Qg`2l&#e#Pm9Pb#$8_-6 z{{l2AqoA=KgNkfW?N|nt>JM@NXZ!~fDZ2jSo@+$&x_th1X`EdEwM`4PRSV7c3*c#7 z4KHasd{W*=$;3F6PGs-%b*N}qi>k>wJee$_t~m~kQgvv_Itc3_CIOvIBG^A^h*5_z z1|6O;iC8YVvB#f(r;P7kEGwDE`(x*ft(Wo2$Oe|@hc>eCektC+H>zI?d3d*`a^FD_ z*18{Uv%!9wKzE%SfO7%H0M-Ouxj=CYC|(d1)dku zJLZMBE>Ii;6z_od>3ILw^X5JsZk;;3uH}_c^(=G7)XRvPT2uaNrFTKPo96?~B5oK3 z%$EdAHt34&4ieEx5)on0A;>JEdFpyJGRLA$n%+?ljE_RaGg_2O*o@LwcA>=et?*7? z3vcGv?`okr9}RWVJg5()L7n+7RBKd!38og5~Kh-6*FC}M!g zQSX~z&?-BZPr4C@m3kld_-}coQkFyWt7my}ctgvxLz-A7@!Q|8xjej2OL<6_W^(TV z5!O2UIQ}{IGYG^uz+B+BFyOa%fC~eRq{%*QuN^)2KOO(Yv4Cp_{((UjzkonX+xC%G z?k!lbaPfVf1Nuwn5%ThguHGQp{XWqw?h}q8n!)ozP7L6gL1k`u7tx44bZp?9yjS{1 zWR4ruK%O?Vky7)0ZB%{Bys>pNcD?q*{bZfGi2K6a_}MFzM0}be;01$#2@>;Lt_SKJ z^+1yjp#~lN()4I*(4&4r44#r=P(4YD$_ZLLaW)!d&&HtC#jPlDE(YGm1bCf@fyZYr z!y|qqG#Q^mO;)IKmqWGY4{!h?#p8qLeeOT*V1x$vOw?9VQVi)AR^7JA3?D7cuIUdf!;qOH2Y{ zO(O2O>vy2k`(i*JFDjk8a6;{j*T%5s=cxB7Z-4)0^2k0dyE7ABj=*ZKv@}~D`lR30+6M5W#ro3<6 z^8B#I7UqG>2bWE*WjVC8WS+Zq0F#KjDFW6ouVsGAJlDitVFEgt1++1W2;%-Xjt%C= z$vV_DtaH=@lUAer*U>0*Y8OhTya6A>8hCxX0G^g8XmZy{u&$_A-8QCX5Fc4YRgQjWvBFdL}}qf7e^6&znLiSFI)q6 z`!3PJ<3#gfh@Ojf%nME3K!=CFk~g_$+swW_n#;rbIQEM2EE`(bbZU5F?BOG zzfvWOc_R0Rx$`q<6mZ6%#mhzk<0TzN8bk~<>d?dG6~?mx=>nP=qS1hPa=ISX%~7bF zvH}&PRVaIo>w()*;;J6r7j*DS)4}7|MtGcD3C-(*QFN#2A~#DMnM9?}_j#kB+G7%t=dM3{SH17ux#hCwk8||+zdWL$qWSTj`SJam z%cJ=1@7YS(IoGd4OSx;`w$`VV_~+QqBoN~O=K{Zm0bCn=6bA6jAYYe%2;)F1X|m)0 zC*xm<{dQsU?)6Pk%316G`Djsl$kF2t+x&&iOAmwmhQqSBbWL zOhq%abYS>%dE>gb%k0kkQl0w*`FB3Pe>0gs1Kjt;e2{Cw3n$dc_-J9-T-E{kv*WJM zA=j`aoqD}Nz_TU+VK(g-BoU1bBI+?;X5O5#29*+*qdaSY%&Wh9 z13t{NPppDh+HQDUT?NhCQ=$3tBGhyMssq210}v_RzPzK8XZ;@ctUh&gVyV6J0p4MB zL4-H&G?KQVMB-+Yj$emz@oP|tdzvojQNt96I;{B_wP`Zpl`vg2~&?=mW zz0?<)M114MKXW=C3p%>oCx6YsJNId4t@Xi98|)nWS`14kx;zCA#+) z*-Bfo=+4noMK6yXb}zDRb4!m-zRGS<{$2C$d`w^7CE8TxzONa>8(Eka&K_OwuK0Yl z%oD4<3f-**N}?*wAYis6VxlBsv{{cqsod|TMaMKfB2sh+NEgxEB%)y=&j!SxM!F7_ zr8TIKxD;j2Za}HayHMg=0p11yUZxm$9FB&^=PRH&x&rEhUqF3(1ysv^2L?Fbe~y3l z-hAAnGaQ;w{)^SXv1oW1^zcbtj}j+ElsYS*OnfvdBx+IF%sovpimylgR6Uxe=-_XT zL7375C7`=WzyOn8@$?#R5b&Z=#D0?qySw6_F+5qTF4{S(!ae48u6p0ILz`G84{9cl z>(@da*}J7Yq(>`xKzBc7A8qgUt>liq+godWu*(KJ$Nqh14!}CVqcFf#7kpd{;9lW$ z(qt#tYe&DH6X6^1udn|X=k~w!eNaeixm~+3dDqsuHro$R5M@>%`k^Y(H#Lc_7sG(m zrbJQ;qNEl?XPXe64I@e#MRZ9Zx_9w$KYx#XatiY8$;PCDH7j4g->XZI+&!{|vP*Di zuU3lYGtS8YrVndud3ksP3x7tqHvG=qa@mrovb&iB6c|O-9!bFSW)WjeqSEKqPhzjI z7{~4)Nee&2S~N}Jy#adEx+tJpYBVaHTZAVJYf&a;GfIBH2R?T`fLHuxcphQT(0TAU zHx!!dr=X^yz(u{NE!`wlfFdT;TU& zfNNfexd6`%^X1y$1=3_E{ZGU{`w#>ME3t3gwezW5o3#{?trU^`1ks&JM7N4zz~y=l z9^k@&WIv*Fencl)5S?sIlsKN~(ng~DYz^z)!~0S9eejlT!l+)EJtCW026k&H5AEGj zsrho>7i&S>2gY+Cvq#s(5ZJm!z?{7g!Ed}GpKu~Ag^28=Os42a6CE6)bB z;d&s)3iD;=&FA&XY(N#mYE(>KhjIy3iI>FC%$U<8&=>H5xvq?I^+ABxN7|t`>4CM^_3%ga{TYM!Om}g4uKd4I2U*r16*~% zU&{qt7~s+bIS;r-#T{Ufaxt?~VoRm|ND60&ST>jA* zaJ~^K7+`Ek3I-$u5}ghrI_67stUb}WXNfNFCdzTI?R=5Fh$LfT!MfG+vj_GFko$FN zERX2ZQXbd8h0LD`=7legXsB=i?hV~BtKz+6t)|G$JwfafvOh(@iw5=#7Zv_HK+-vO z2T9D2d5^e&W+puvFn>11pn96tu{$VUKpE!Q<~WovitstcI|Mht^Yex9_yz*AvBA!?92 za3+-KL>SSLAfhk35hctdy8bay-tT#ue*4_L^Fz_T_ukB%JhDq>|4xl8BYQWO#}8;O z^JjzWfy@DzFD{+@RK{nEOWWLD57a9>cb$>zfjr}?chmz7B6xRD8|KM|XtXj3Xq*~{ zx{@AGp4X$QiT4MtK=~8VD1G)#lw{tWtcCa4CGb487#{LcXl^Zo`fxhb-<^eO?qhHO zXa8R)k>d07xaa1#AC2kxjR0K!042_HpWiZ+HLXE~i#k*>#iB-H3~Cz%G&DNA4irC6 zNr#S-&Qb4UPcKQtc%vS3B~g{`&bOaA+lkel1>$qnt+PhgzpH3|%G=-AGHGBld90MZM%1{)_m_R8|)nWdCnYwxj=CY;F^F-5BMb>@F)!6 zd7&$$$u`<+M=$)(zW)J%O6<#VyBgYV<(DTL`A|N2lHIN*D%AXl0hwj#0S0_ujp*i+ zq+r0M`lMihxfwm+0q25<&V)H~fiEM74lx$=BT8CE^xX*}yZiPc@Z3^D{PBW?uT8l3 zboVCmh@Ooc9AHQjg(os!WZt;prN5>gXclnRC}O5k4-_$yXI|Os)+j2Tw_)5LXNpEM zDFzJ^c~(|L4Pz9lBrZn<=GkX9ppcpm7{ z&LE(xQA9u1J&ZcV%lkP=uX@WQqR3tGuhjcQmHn;RV5SsFAe8d4Z7+A z#Wlf4VZc?=WJ~ti(To0*@gEQv!SBATeY0uq<-BTimnx8j%F;b5L3!jscDw4Q7{Ivz z^MKox>1P;_-k2U>K$1T>Fo1bLYof2(6MfN!Xn#ARqoawWIHHWS$9s-5XzVM9= zt8yj`4w8p;ufsKA%X8clS@A3}7vQuWMF->jGRC_l%}{&I4?lTq+CMB@q8C(L?O zmqgSyifF(-r;-3a)-!m%&&c|Q4g(}TMsUt!5b=^E;DEc{ef~MFdfywbR=meO{+#!7 zk3ZLU70s_dYkn=AnxDVir>no*vvYvlwPT>NW14r)M}`N;5f9>@W539m191Giv;gJ- z#WBE@2XKFYt4Gj<0mWwqT^MkKG}-3=T>Lv?Kis->XQ1s&elxp?8c-V5q03GT_(8#d zGQW)hKU5+5uKLe&0aJ4#V=H=q0jI)=j<<2}fFqrV4s|B_IFjg-zC>qN5dCo0X+`Cp zV@f$)5WVD?dlLsXwoD#SN9hw&>Vf0yWbB^(#C@e6D7v*CV3!2E!?Ugm9~QxVaEe!$ zS?}-)GckW&ho;;UWL}S27erJutwkm7uS;5uvW6`vbz>Jw+0OkUm53nZ4@$bR_t_yHo z(A6XOFa~h^Ka2r4Nt2!WpNjuLe}4DFt*`G4vmMP3ptIDH5~wK|s3E0O9lD}mKotc8 zQ{H~=_2GJ7=K#3}>;268I|R!e+l9!HZA0bup#gG4*N)ced-vL4=eM6# zZRP=dIsPBU0FHlGZSYYT;F=e5VF1q#e@mL|bbIaSCI5;1KhQtI(l#=}`r3{*xgY1Z zrlS->$H<>fIWfRU4Je&z(-o>g-%u60O;0#6fHgtQk9t6^57GTn^Z)}~Jm5wxQgQ(o z1~3mWv?_)HVGbVfWhBv8ovG;aZggN}r@USrgED>ngXF1Gr{CLu;6PrEoA#XCzh||7 z{>dA*IaAxqQ~TG*m^G3;BI{*rd$rQNWSx8KfzJM-L(GSbx}Vhp+oy;KGwI-$Dx#TD zKm$p{Q)Us>&C#fwuEi6^7?eE~gHncA_@s&OIk5tsN8*(IdYXfyp^kkI>WrIEjr;ZY zpFig80dk>OeE;Uj&-zY(d2gSpNy|~$B;ZLi&-aOFVq{M*XRnVWpsQK$@bhGy!ziex z8uhBJk{f&c8Amw&-=YESzqf(|Pf5J0D?B_&c5l74~#mFWj324s^D6>y6Q zYk~zHq+r0k(hdx`TakVf16U7W9>BT4>9$mOERyy|wa@F+HvFwYu=$*uhSEgd^` zu|{ik*{Nx1ZsP*UXTQjcnlmtS#^5I{uMV%3v3yEx%O{J<N+L zd9vaa#=aO1Puw8Mu@ASg#JhvmXZRn2Qq@ytq;Kd}yF&TV(p1J4NXI=2d*C+5QA z)EsCIt%o|{2voK)P>okXrG99CU~FuxayM+)pw7(7dXMPwH2~HOe>gg&gJBKIC+Sf~ z(xH)Aix!d&fszgpCe|@@=xGu$*d$`KBw(B*s1_In)p@tR{V|~9tGo(z)2qv~M%TML zb7TXhpPTdki36Kj#_()E_xShpmHT(|drmy z$MwLMht|9s_hPlov+F$E?GeB`=;Dn6W-DHSB1V}63^ECdUuXvt?+)VrIRVX0F=%Lr zMeQ^J)umOalCT^V64_^CBTA+0gwG8vypxy0GcgVx-|C@B8VB_e)&g%q_1!OU0OwI% zx^Rho0De!iMV6era)v3cRM`{}^-Vf7HR<3h2?#an&|cD_n^A}Uyc1dCdY_2rO?te` z`}W)w|E$NbF7xJV74AFd`!d+aU-9%B)YQWDK4rGwIp5dUsrf1OK92oJj(z9b-^Tg= zcj;uU{?=X_Y<2>7wJ4n}j0L|316-P*Yi6)G2HYY|_Cdg>tzDDA`mHBpg@6b#5IK|kXG-`1d? z5U$J>cgbD0l4C*~Z+sKWoRO99?wwyg$K5@Fl7Kv;fNjd|AT7qR|GlI~UxN-^O?tF7#Uj`!pjE1f zCaHSVGYP0=SchuHm8g`;^}w|#W88|8>2Ja3{C0T7uYl*#7vOQ>RcMOzP$wRP>ia=Z zjQ~^{SHu@T-rl%)>03V{`sO!@f3cIDVcvS_qsRtk9qRFpWA^jpdLMfmm~`kZi5OxO z6hBYy^Ic;U+`Gev^_b6>mB?E&?MZ(76}`sk=c#yljqck*9@e|1%)H;#>(jkcpxmWH zklZmcSdMHTBDZ(G{cYNW%56dd<+sI?L_sd;bFxsx85fnpD(1rp>9qLXh#Pqf{suyeNBFJM!|r_ z3I?24FrYepOO@#km8VPv1H7rwg#nxkFb25#ggF=BSpgRYxMl_~H>QHr=5%0VKwiII zza0BN;Q~Ryyg%LY+>9Cbj-NQ5Us&|#Vc>q2#eV2LZO(!zewI}e%gO8^>u!$#Nl=|P z=&;zJ!#L*43UAh-7taTp*egs#AbaL=J&^gfITkg!9%xvN3dvC@mk^86$@@^^@@{yi z%!QYE5j?-+T|7&mKKusMR0!3br=h~bNdSO;@IdCxRo+BdUl$AS-#m6A!?#~e8E9OE zrz9QxQv}C+ANzS41!afNNM~*1Wuu7C-Tn5nU(@DSDre0dTQ6hQsCpR>JiP`v{5;vy zYjDq23h(dJ#b55xIZ*EE?DgS#pDXtH?Qh*WOl}<#B!_nHWUaP)uMPL@ggheTKMn@C z>H@{}0N1<_Q6hI7~seS7z4r;3^-1Hbe5V^GBqYi$px4P6vu#4l;gqx)&uf99T>oR0M7~(#{ixg z{H6{STxvj{ZSl?P*E{SN-~HmT@A_Wh0)att&py4ayZ7w2-MxGFPaBoz=iBV3zSx<& z>V*)?mgjx4Bms7})&m7)f7p8|g0ee^ci#**is*0DqC4~H6!yy1!H;=1&j(6zsCAxo zcO5Dxti==O)}pLw8%kc^3ZL(G!|Uv3cpi;`NAgx^Zp?++bQ7w~OsM)7%L6;03AB4V9=&u-)XjK3c* zER)NAp0ACrm%$zm&kt>Ed1i1^#oNK9`3>yh`y=mv=v#YHdJ~0Tel8Z;y;Ar z|INKNWZDV2 zExJb4={u@Kcc~m@QYp$MFDDOB6XidQ0nVAh+tsPy=2LWFNAtXXy+bqof?7X_ZC8vx z&ey<@5IHO&TwcC>d3IV_np;fDlTLq@w|QaP%+D66bKUF}$g%OQBw(#kzy#*a>=kC# zp|?qgPG(Wz)q$x3TBOCHQKBAoB`s>EN26+D6e^hol$YXAI{i(QxbrT&rLFL~6bsL5 zA~ZXnhvr=Y>hv>E*?K|6G0(BjRNx+G?QMX7ikVnrv)^n7zPY;Vt|7OyhUB< z{RbEj_5cGMJfIPosUBTaFrb=(0e2J(D5+pT5o>~q9^k|PS1yoMf%1Q-Li=|&&g<7F zG}ABekHx+VA40;}r#Mg^H-22!kt0X)^YZfkv_bg==|uiV+RoYMqEN)|w!1#tlB37? zuu;Iv%$wO0SMkYk?hY~vNIv25M5stmA?NhVo&|-Ohks{d)py^Ym^CY9 zjWV~`)hM8!q{A@h{=;V^0Xy93>E(+5x9614UNoV$^7eDRkNdW#Jl#|tH=vn3(pm2t z*xgU=qxAX&DD!>X=i9M;u%h`XdOzp<3il6}BO=1(h>##Th~t09UK=v(gnQ(;i~%+x z1p|t>9>98_3j??==;8s)0bCfsHG$&20n7t9{w<`*zHYA_y&@;V*Z&{)|KQjUi)<@* z-#*?pDt{48q6IXKX44Dw>H`c|NKy{%wC2l|BC(jf|? zFDdW=4@jX#lk0-`RCquZl_DE?QIVntsEP8th_Xu%*-BG>W;xpbZoT||eM78& z^xb#GzVbC9LJp1KJ;)()*KS>{yLP{s%e#(?Jz;<7+`5)n7{8-io}>er_`0b#P!eG^ z>agCZRXhT?9>~7*m zB=_vI&pzkuLly)bOM~guEig^wygwGE9~>~fAtC7aa=`gAf-dGA{#zyc0F;0D?KiSF zG!b6j4(|6^F^A`xZ4#F8oO4zEZ20eC&h=$XXmR{~Ei~r+?AxU8_lbU=HfK^dq4}}T z)8vtQzmGLPG3&#JPaLP@{BSL;fFo5R+%EJKG0*v0EM#1M# zxZ5PG{Qr;tUVXGaLk4NXUR_)`UZO?x9NkM#(?bFSxE8pdUZlme!ixbV zwSa*E@6k}&Ndsw*4-ep4K*xZ#bc|XH4EWWH0ku3BVAA)7FIA&rS54ae?)62JCPi}I zuR3h(*H6>|eWLqlefvdgF)=F(e)!@0YZeC2{jR!?zB^j?tg1o`a7aj1Bs?Q_10>Ah zejx7#WXTwsm59DJ3&K?kx;YZjAu|a#WUWPuED22xtwh7r7}Wc69cmwV6*Z1n5PI|_ zR6ie&5N#8JbCx3L%|ryzd6;MdOvMD#>eUE3@-Tw-tVhtEI0T)_+Su*V#q*U~w7TfZ z%R0Gd-h;N)80}!)f^Yc9xL>hihf+njXkZB6@7wbCMrZkcAICp?Hr#hxC!X^YH+*=` z&*=AY?$>Ahxz``%>GkXVK9Tna=&{eapW{E8^Z&5ndCfK^yYRc4;3R_P!2qKcU`>!~ zflBiL0|W9Y_}oc%o4Dl#{d)AQx_7*9;J#Ry|318r)@Sg*yaBJ?UpTT@c26J+-Ab!z zCas{kw1n;y7{Ijv^8m(x`@9$sM|b$}fJwBK#tI&wW556p4~U>|gdWh`1*+hES7a0`GG4Pu!ZUna!EJ_vk``E|- z<0Um+tL|Fryu4LR+HqHb5-$(b3 z()tV?oENqA5m)~UFT01)dKyJm8c*g@7@+e2t_2>azth9?4=)BR^r;1=(ngv@uhCd~ zi$(|xD5(W>3`n7_Vpkwb@Bjk?8VL+w?*LbE2z{`#NzvrVz4Lp9S8?nc-+#Y;-rqBG zfIiU?+HJQ@%m4V}4~wq#zPZbJgnryPiBvhb$}m8cO-Fb)fN$X{+(Wlux*}n`YQ-(t ziRhnYMQ?`%-Lov{XqRwnksm}a-Uk@Ne>1*ME{_B=_R_$ zrxv)4)(Q-mNUzZtdW(kBdo+Z0(g4~+eS{vsJRpU-P$qStEV_Y?Q7bw@x_5wfp)S3% zvt`l5$r1m)*!RN#{dXR%MfZ)=MvuBB@AYk43(ucFe@&V|QQmiS;=>u_u!d9#2Jrjt zknm4M!u>Wg7AP`iXC-2?qI>5Kc5tuVj9$DOkhKQwh1afx=IQZh{A~=bI~aqyw#}&Z z<7U)2yau5=mY_Pv_{Xmx_`9bNwDfrdU3>;XUo1xOr%xdyMMkyHtO#{%MD?FD{@$>- zIImK(07R7k`~K%QW~?@G&;MmrMt)UrA>;4hU5Opf)hk$P^!sktXZ%IKkMH*xGybFX z-TraIdtWx|Q_}A%o%>lIDi!}5l3h6ACj3f--^#!M)&#GJ0mk02uO`TQ0;~;c6!!6Z z#o^<|=0`{TIT#@F{@_7*-L^hc*rE6x>PGKSFM6H&&=!FK!)PsyCYdHuf)@kk5^I9b z(tQF09-}AdA@NT-2Fw?=fK0d1I=YoMdNE)G?eM{X&ncX~r5*wUcxR9?fV~5Ly3mBS z?`&H%VRA%%ukZm*_7nBS>c8X9J{&;wdxY*Ar41h3S4&E?6y)Y!+nhl0*`MgAk8c+k zP!)QBBH37LWR0 z#i35ltEhQ88KE58BF3LZ$VYc0c25h1UULL?0u#5WBUeCS|?+m6;XJYSwoC`P5mR%i-#!rdL?-kzP8TDt? zK^_bc{T`nA;CG>Kgx0Tbq;u(#7tWnL@#8h=g2m?;17?#d2VFA;csRi4b_*UC9KeFx zRT;M`62@f77?Nd0v?`-lwv4W-j2qL|Vtlhx1ht_xyK=8o~7QRbJm3_Os0Fw$aK&1{*cs%$0P_H2KFHTQz`%g_iozKK zBBTB-wE)L{Mu$5ed-Q>`s%pP*E%%Fy&z_(kcil>= z)pX4mph`Gnm$A{tcSH1fI`+{Jw}TW}_X<-b^l+HbDb$|9_tQ9`~byZ7fy@Fr9 z+E$ra09UT+{$a;(w>_ci`k`4e=<}7K;)aiy@%Qxm?wQ_6TXd_>4WH56@6%^}Msx0G z&2KRG`}&AkpOSuG;N0(x|DnV4nk6Q?aMVrsfe1gAfdQ-umWctrd&B;{L4W^{vjn$Z z3kV)i#TdYUU(}$%dCj-2Dy&xg4b`Om)PO#t#a^b_`!Ic|6X%%(3D}5OwZXZSg7)TpjGS# zj#VTK%d(=cA|u>pLAR_#+-OTg8^>C-$d=JKWd$0ha6fQ8>KxdHn%NRU4=+LWbITBN zb_;^PU4f9aBvd<|gi!Vpbi9VzDJxJfBLNL;vA8bR{>p7`_r;3M1G+EKsnk`ZO2Jja z`HkFfx0q<-V~s_>k2OEu@6&Ji=zgBJ`}F%b_m2^tUM2m$!2_ejtdHLBE7AP)++Vuh z6#Sp#-7R;Vz-4-XF9!H~2l(m%o?3u0V9$=?-eZ{u^r@0MnE#&0L4&mB z+g7_w#fJ!#K_PU2YSGsM1DeoYYDK#R59la(fPn#9JQ$$!fJp)aR(W~AVlfe*^MEJm zL3)nvp`~=E-~sV8Ths#UX^Oyr*TvrOaQYYT4PWX7-W+XRSC_~%?MLhqCrLs>V6@k_VJCVaa2Yq z`vrfy6d?x^QO&Ue)eGK1sADr~WhSCd`cl+SjX@*cEjqI8#+K(#rF~G5@BjQyU(m7F zZziRRa=)m3WY9-1)h=AQSnv1ot!DP~T+F|T*Uk`D^hj)AVhL4{6+0T>r`}zdb z{QP;p@m_f2Uru%*%S|{&`saHO5BP~l)B?W~m0Jt&-k|6UTnPi1{~L3HX9<^_6t?F* zy)O`TZ5R+86|F^y*pG9Wic$%r5GajIlu99VkZRFaei-miQ48EeZ&Gi1P4Iw{T0jyQ zFr8M>?V=XY^#HvVc+>|2cwb1b1#}*uV}RHjzH|#M-8rymfEk`_Xo=T{9btDUrKgC zbrTK~;Yb-6z?xurdVm)L4DSHm7YM`yN@IYDF<|eG;@)FM=UpuZ@c%Aq@F1=E>j{OX z;tYbgJDe%-5i`PU%W&Pdt5EN=*E}4+g3xpc)pAy% z`uTSe%6o(MHK>!Z6!lYL(CCN-O)?YF>X3vRj=dGp-F4cwue|urKlUEwywaQ$bJf)S z9$z$i@A>)#OYYP?y?DP*%=mk9zweCyB+m^WudfGt`f%>|#J;ZY=r~_i?k^Sp=42Oa zZbCNcpNe2WAU&W=4Di(ixfTe30iqTdozHo^GV$Qe`>&f_rXri?<{;;O{4FFN zV*u9z?F0tA5roL}N*!$sP|B$`2g-#NNy z_~Zfky~F$dXT-jNFTQnv=mqF?z<_}|ZyY=*N*ma(r#55CsJsu}Pj+34CV1}Wujt5@ z_SY06ij3bB8A*zag?20E@%=#6f(eQR!xjB@P(-E$H`(LS$z~C^H(MSzqlvl#4O5u| ztVf;HH&OG56`|@1R6k}x=*g|9p=?F%gI3f#5QpnBV$nE948XBzzL#qYk~8Ad&Axt zA?5%E4=4`<&iL|x{0j4cKG9m#;K5q+*Ckg_kt%Kt>bal)Y+wN60CNHz1F8!i@D*K0 zpHfrWL#=5SwWIf`GrdDSJheby+C+nCJ&m9w8b=l{2HZ|dX@Q9NXXrutJ3a2*8NA2i z9Waj`{9r=SuqgxbBYORZ#l8;)TviA4*K-H&hz=RZ7;v*TZSsh`9q+#3DlZRS>B&F7 zgK}PJdQBMMknyc5gKuW?OwjFi8B^F_pYLjCvERN0z0`PgNoNj_gzJy5L9{EZtv zo*93}Z_jR@H}?nV_j%s||M-tjb|KA8uoFS?U_g$i7BDb?HNo=qfHE<_*H6?R14{P> zMJ=$0=L9Q&0UY~-2IV#1E*AzBWqIxn^1WfcIqo2o!T{z0>0S(|M*FD_eMJrFQ))&Z z3k+ya|MXzM8x%pWQ9s&5LufsX6d0iMfEl!s?x3Z#ke;V|#J-TeH_T}80^LK4cTO!D zI%QCP#D7}eH)5Z^mc;=?4Z!i=M;kgQQXAC2hc<2Uu)O!*+kVv;z%@j!vW~LWHMkZG zIA@o!m1lw!{f_u_g*gEGg~}LUw;;lnfbI@`F1W2~MaxVxnxrg8!-K0(|I1fU=g@Z4 zR1y(-d?P|rUPdjh`?*HQF(d4UwPYo$R1xcxnK19Wzc6ULW^SVZsioY|MnZ556|o*`h5#;<^4X7rP zt=}8sTZ4RWxMCPkoxY_y^d&Wfi7Vc$DVvoLMwv^5FmM*f(&%qXYPAfy^8E9b#W-=99cPKDhr)+RUjV@^*cY zeDxS`p^$z*@FF>qYF#x3C^8hAgy(G*;S<950|f`LOBigE&?kd^f)darQ^t*aH$;s` zv$Pcmv#-Q;wm8&HeFe3?+lU%`zw4_+)H%2k^;1@$(UC+n$xcEG8}Ab&pra}Yzp)6L z8U2pG*=I`O9~r5>@&Eh&XGyVCXKk`dbU&W+vs+B=R~~Pi|Gd86=X}g_zmIeOJkR~U z>0^6%XZ-nopYG|!H#|zbJQ=@P&k@>=H}`w+-uS)yeU0Y*ACCXk$u1ml6Vgfl*gQNS zi%9T*qeNaF5U3X5y+NK4V*dcf0QL@G4Z)w$b@}K6<~%Hx?@MTyo{n&!65!4r}$R<;}bw_`c18J8d%N*?BHl z!uTvJZplhSe}@&lRWrJ0$>_-Q0E!tc4$Ekg6^DjLWYn{7M(yvmpvHkD)ch(Qb<^U} zAZ;bWj#|+yQ$}mM7435*bWzP7KVQa`c+=2Rsj-RVzNqo{dhX;tI{I4Ys>}VJ`-&eg zsa?2YaqHZt=eBiv>wYooW8{9l-zPLbpMIaOk2n9`2C$!B1vEe3cflL~G084`>n5ZS zA+-z)U`^1d1uBXG-o4>K7{Ip$j5$GH4B&kMo)L0VqrCzHJadA5wP?=!qTXNQ3UVEH z>vsqJZ;oFH16T{-PZ|Z$ArA(8L5*l1HK&j1dVv8u1P}1XfRU6ab_NX|z!-4r2aAdZ zP8pgX8U9}q`vx}naDcuZEs*DecqYK$0DL2I_>kV(Ed#o13vM5qzi;oqu9^oFpZl49 zcz=}0omZ1T9WuUGWUR`RF;DaY_;#3#QL2PNS&4|UThK#|N9S}i+9^qBm6e2M>G24& zvrpItp##>)+=N>DmkZsmVP-6v9G1}{a}C<4N$8N3h;E7n;fe+Q?R>w}jIl?y-Z=OC zFW;na{QvaHLbAsP>9Y-0u=C8hKP@5XQqn`s@;LWDHK(2P@mU?54{+T-wX-&VQdfP} zXB_YMc{D$f`y;jChUO=Fw;cPt*MH@HpZ9m~c?Z1lzcSf{uib=$L^$NZfD9tR16ULE z=K(w?XkY;E4Doyb?+!B$@b?d?G!HO5ggh7^c)*zazTpvC)WCsS^X=;jgIwRc^;;u+ zUx@DvG6wLy(Lg+awE_OH9_Y&hd@*3Z-~o&Q&FCY60XNbP>Pl}@Pr(C>T40?A1K2wt zmd5S8x2XT*VgG%x?}q^fXY}m{3Je(BN8E`XIW$}wKCqj1*Zhh3Uw^UZs(C=c?`d>& zTUWgfs62vNx(*H+wM*Kc@r(iTne&HX*KNghwXKy^Roe&OX? z$=uKHfH(eEB)jm1o3NksPem|*XN0bV0cF+#hL@l*A7JnR)&p4&D2)MOAH7p_^NeZv z&9|;8404@t>-UEEz7TW&KsU#a5$K4g7GOQl7XysGfYBS&c|Z+sEx^1DL zqK`wy5QRNGt(dBqG3)S__RDfMxBj6ja=y^}J$|11W2^CgpT?U1({tO2e*c5)={K#j z$ItgB?Y40@>pMPyyu7b5_m_(Q<;gC5?k0Rggl|0 zcZRqxz)x<`Ex;JS9|Hr7z5w$8-}!(v3Z_FI3@~Z|UkpeVJRpi*6MMshK6tz+dh+nR zsPI0{K7C5GiBhrU8)yH?fA*;ZxM$2fQuG5obpY3y!-qs_qi%`NMi1?&jUL?9`SfG+ z&K^JJxVpVT_a*uxWjST7tw;8&nV+%Zpk2a)yc_7SVv3!;LM<4aWkr-C;bzr>&M66K zZ{r$Z4Vv2H(dbwl>SwJ-?Zfe?!+V14A$}wg&2y}{K8tU7@-Bgd@T^4iQ)S^jJlC?_ zHhpYQ{f-Cwd5Rq$p7Zt5{5`o}|Gizl-*=_=&YS<2CA+ZCP56=sUwJU#0O@)_nx`kg zy+N)87z21tkTpTZ0ImfX19*4Xe{Yy;fj~ZDmBs+(1H4bjenMBeIqr)AtOfXDfYBQ? zYJt)izoNR;rC9CJ&AHfC54ZTzrq&Xq4daPHS%u5NeuqRUA?f3kp7xmu<5K!+9Q6&YLD zBg|pNbj2)cfMF`{1to|YK->ct87x5!I^^o|^je@MeM9x>b1w$8 zp&mVo=8(i@FC_qfwTOCUyxed1f$2LZ?h!_m5&N(V^G=tS!z~Wb9RCT&ODU z&$&Ot9OT~mM5Fvwi(BQsw5W~qnYnG9f8!gTw{_I+p32;xZ}{D$vF>+kDcz4f{dm@| zr02&yTcP`T`+X(5{iS}tzQ1dqKYQctpqAZmap;W5GeXWl!VFs!R{=J=bPuWyVi zC@#Lb8w2M~?4=`H+FXsU=29iRXE$TIB4e_{ijit!sk?z4*(X?CqiXZPtkqoeE>kc3t?3GEJB#0_sz`>PfVQ7jmvCSrnWMT{!pR8_^k(eK-{tftF+UyIz8 zi(BQsxTuZuDNpVHz>H4XV$Y86?D4v+7lgg_jHezP#~Yx!$vg|G~ra zn!T9p!frQVFA+W=!e<@~_}Wtoa9@D+fU;_VvM_-C1k3Ug^zI56JA;+Q0OP(;c|0Hx z1{m`}%mY{t@T~<(Fo1UkYtR9z@BV_??Ot6JF?q~iGxm*q;CYAi_lbMSKJm{wAlCrH zA~o(ovELN;q$ZE(>|8J{LfgG#W1+9cSDEKj$_jF| zD$9bKb7XYNOhQ|G5?UTvizb<|XvDey&??kRi9uL)oS6A*ogtyU!y>f5URjCg_Fsug?HL`-E3kaKsI?i1egu#C=jz8fr~ z)e#9z53WQb&i(1jP@ivyDHb%d$!N`YytA$7!o5S*4;&JPDHe?6og-Do*{aI@LibOq z;r`OvsZhGV$?4d8T8Q|6ej#gr?VOLy>Y(w=&z&BBpP3y0WA(nD?(1oIdwJsDxZ^V* zx@zM8xnvjq=_c$Z!iN>afIxbHKL!NS1dYCcZ!I9=-yZ|G4&aYJ2Cx>$I-oBG7 z0BZsKF=hi81Go<05BCNAYXN@@;J%}P8s*tkA21kpBjKMfal4?JfNo! z=+yv*MQG!P_ZHlg_37KjcGqT)>!2-pe9D;<-)CJ_PoVIRbUOCN&6TeMtjJXpvBGY_ zNV^3?6)U3cX7tKVKo^^gb{UCib;-86Uk;?~aR%8P&2{zmos^WuMpo3N7z zyNK|S2Lo6S;97wD0_D{LzB_}A0fv7F_XW!G5;S%NxHrgJKq($z>6 z&pC>7)g9wIYYQgbsI6Un@40;K)KwV>Y1yw*_J*dF#{e1MC^E*_C5U^0_5^(&kn=zH z0FRr|G-o9mrL97}Y)}5TC!$%JC;qdglK59;3{_=JRb_mo%D7Zj7{Id*$G3N*bH5&< z{U5}f=ls9)&KBPM|7f86|7XVkKayQ|*G>2r5k4TD2QUV(9>5sDeE|alct*(319)G6 z=L0ITFJyQK`R@w&@&GReaQv5r0mf{AF9w|U+!{1$fnR-i0LOnI3}7DMj{%1XmmJjS z!}UeIri{z)`&Z}uzV(1l{;y2@bFIq#>ID^!$4Bbs}FISJ^Zc;f#%pZL#;K|RHSupBFz*{z=Z@8SP;34I;1 zxaT`ck?^c4<5y!p@0xKy_#sxKUq4+)=kk8O^xoR}XO=E(n)}@R)_VOvtAlpmjB@zD z*W35s#Q&d3b|KkK*g=GUmVp7jJfNyDfNKGR2k?B5R}(b)g8mr5eL-Vaz~BMg7c_c< ztO@#K0M7_=Enr{(a{-VNi$|3Lho=T1Zq z(1-u?&B@uG_`hpv7ww)~+iFkF@2(x#x2^I3Kt!(GEIR&9zsh)P98+XGDEt5<3~}gw z06nwJ=$zr<|Jey>nz=&f|E&Mn63{5ejHap;tun1>r&!R%WkqaIYo8sYJv+CB^T|8f^1gon{qJUv{$IZSXXrK8 zr2jpY?82LF!n;IxuYwrBbAngm0lu|>zjuJa1AH-nYk_hxz?cp2#Q@*FpuZ;g3+X#T z{up5F3NQxne9-q~x_E@bKH8|qKIi?vdc6C8f0fn$M)eZ+C%9KNe{whN?x|h0`)732 z9=WZJGv@Juc_)vhU8qbSz<8Wln<;yJ*cJN$ii`rqifyWlaon@BTQG#@cWn}SsuDV< zThT7vidGIQnr6hJkrI!3{K;62Mh+QG(`2+tv!I>Lg3g)zzez+Nt|4sP|C2G%F5~a) zL1@J9wSE=arUmrlKS$A}qCCp{=55!C`?_jR-ridG`V#%W&f;guH$C;cUWV6CZ*7FH z&!4yd7oh*||9dUxpS}A3lgTb@cN5+w!aF_~z5|*Md;3f0 zpPtj&`Pj@h&WC1p)b5_vNx$nk!FTqbZ~B(8^IsM7f876nBH4v)Zo->Xf&oS?U|_(N z^nk0u0QM6#c!1#@a2W>p?h0IKKFAjX3{9{+4ETvm7rvvg4___nIeCI!@0Wv@f7$=$ zll#T|k7oy<^!!g`sretiJI6Dsb0*#--r0MmbyMU9`Cqy9-@KXn;KbJEFJPztHdd_{{)Z)&s0~ zk6PsaLBsQ!{VmyrSKWl|M0lfu7!XJg@W%k|3;6qp`R@$+Vt{WgVDJE;1q8wX?h6`o z!oD+t{usbGU|@jnobaz?y6_`~?cQ3{Ysy5iU;LMi@A5FsKlfir`yUZ5>Qa6;XN}Xf zKki%KH@%bg=&TOTC+}$Qe0Kf~&ZUc*=Wc$geg3J#JFaRzI5$%!M^b$eFMe@%Ns;lj z-HJOsJ|Ghuyt89PKi=WtT^=O~H!2dYKbDB*M=WTp#NxV~1k~Xjfc?vHU78tsR2foH3P_ApB3=?^nVYc`$TFY z{vS(rVY8d?8WCPE0|Nr}1uBC9hKG>h9l)~z<<$bEJcL*eyb=Z&eF0xRz^Da$F@WoU zKge|9Ckp#;TT#!+9Q*%+^}c}#zPg`h|F2x`KQdhS&+~jb!_=bhCDZ|kJ7XEpD# zKDXcoXUshwg^{~)7TP7K1*ApVNy;E;+8Z`j( zD&GH{Dt3VMIRLQ(G$c~=VtFsam;(yv`(^xo%lYb!|3{Nu*ytu~B^?8p2XHNrOu8oc zKIy$dt_65L$j}3LSActiyfetV!#pF%-T^!(e6{`|zIs5J7{I;(MlImW0|H?H_XLc- z0P}#;WGeoZ!ajVxsOSH3-sks1 zm|c5lW=G*)#av^)}zrdcs)bTAI}zg~yhnHy0ngFS&) z=o&zV6)o8-Kry4EL)Lcy?N$u5OBm^?0XYB9QDwwCWc*TP96)%V1k=fnW{O)P{Oo%_ zvEc9Xx;yWh(pJ;&eds&DJYymD06aUuf&&b`d=J3z|KR$~xbIzF?DK!~#{VP9E^KfU zHWOis2LqS~7<;_zjiR1YCgriG(3O5hf9e13llyfKurhQ%-u)Zqnfo2pQ)tt?pU!=M z-dAU@>PKgFbUrz!9drNOxO-b@U#_ZtLF~LpAjg`Tlz;4<%AD5JANK|N?VBgbZVu6X zx2!m(TJfSokICB<858(6xN1dzuHUnG_fJAcn-w?M;`QA>B@PYKEU3rcU+e*t6_2`h zzWEc2CRtXrV6Pzd3}WvfMMf`0_Y&egfN_cy)7WdsF5yl^#z&4S+y!I~khP{3ojLxV z_+E>PUG(-V&z!q|MhEAj$?csBrgYQpm{_t0IMJg6mf`@$9x(d=@J(0$U7#!M19{{B z;ba%qy9paf$ADLfu#I#*;H>~WfM)~^9>DuTeyaU)rjBkqs@(w74 z0o)TXFu?E+GWvoB2Cx=j=mFdt%%_H*?I;Q#KQ^y#cyH%lI=0KgwXt$61} z?9fP{<8MV#k#@ur*cE>Yemh9V--=`{(4|hB_5sGL(tA%f)WO? zw;=Bp+AWxElQ7>dW0@-9XjO3l%L`Cr8kB;WblrFE+ooxSVU8*&#+?r`}o z&_iGuUQ9 zM}_?ZtqAvc39zO(UbSMn-HN%YRoo(eOO;SmRT!XafgyA{lTQuk&#xyAUrcy@)|mwp z+dAh??Bv4%dWxH$jKcxFK*UavKL;q^55OD$4<@^i=q9Wq!iF+1;7WQxSs0K?6#Q)g zh3@_NQt*MZZs8eVU_c-bp=-i`@^}DafX)TNcE4Q|K5lGY-`@YD7~q@xjXPl6^J6~g zv+v`Z`?>BHJwML6-2ddAN)5gqIjuFsOtJUtGL_s62)x64q^ zz6G^^-HsZr9SBX^gj!$3p>FyLT$jEAjU5SSmL;Qgh6Oj~$mpV2(9>=~AG?gfD*FrT zKEt=G`u(A&RT=5t@2LuWfcfWg^wsv{a+YYMM;!-?mp(orf9`~~&N&mhig_U8_Lso{ z{CffXdo$(%L_eSco&X~L2M*6`c7L)9lAExGN-)5v1y~dGuLXEU(9i^pTA-}G;S{2f z&-2}_mb~I>{X$Y)pT{NMWD{WL#A^XGSm-yz}q>$C4adU$VbJZt`=OX~i)le=qoPVJ)I=ac*YF~9BU zq=%d4XPAR7mCF4_j4%hVfPVPrC@MblgOTnk{N#VXYk&5p8}79y;5PQ=bx0U#+yb{- zadUPOI;SV1y^@Gljzl!gh({y#`Tr&Xb<@|O7RSDtgiyW(^yNC#NsU4M)D>u$lZYmK zGbq)9wyFgk`IeB)f(VBd{Z$FW`R1@<#SG>Ee1lAt@QNx!^L}5(_ji?FbuG|Dzkc-? zxr@(xe;yeJJ}Uah{Uh@47}s9AeL`35wsCw1pbQScy?{Y|1b$cM4uCiQ?@e~W>?R}< zA*q5Gz?vXq0QUvU+ZjAa6#Qj@yY1tv3!?h<&ug(_vnx2=2Lt?XjaFo5&^sGo+!f$G zfh*|&{utn-u#c0A!^e%ykB;~s!T=x5@3P#__y7F-zIgUT&;1_Ff8tHz7X97RJ868I zp1rG{oYPM1v+rG2vxs+Q%G{fggzq(-&M*_XE4M1_c3;f-9I4o#!*owxsSTszHMg7dpsGVv>O+`lNJ~KiOZ$ypsji@Dbz?Eo_ zW=5E5L9wBVW`cVPJZ4-Dc>CL!3Fcm|F9!&q1$yKE zo@5si+yt2jRx05EtOqa;;GTfN19(2j&;$)0P!TL@hrPZy_s=o4D*tai7b-o3h`UYxd^8N2s;tp6tn;A{)vgid04xn1Z zEur4oN$4+b3|TPVAz`{AVXobRMRp6!s)Uo5eQ*BXYeoOrqmP{2J)JHVobvgxxaq_9 zHWWT^N3=F`bVqIGxSO;fZc*|*>U%i%&*I$Q zUgZARds}Epza-@bW@E)}2kdDkoS|3wn&9FkGfAtO{>j_Qs?R68mm^!O{N@wtTB_SLAXdN_bXLNkYi)|nF8 zt7ddj5$@SXy9o4@Jt-=}Y1Ejl7Xi_kH^6_in=&j|bK0fv7_Sv!NqY=G~s zfVUR##Q=Z*5Mw^b@DA``fSWNOxhR}@K;&N(1AH|{Ns0p=g7F1%r`%U*Z;5x zZS3%Hjc5IC{LS0=osvR2hzd-(R5bxg!70!hOJb7dmThZ2G>Ry6k;aljnl6=hHMMlkR8KJgisQ$%E2uWFikV95f`&2?`&L-5zdixbR z+8qzd!RE~4M}xQF*ITYSCqgBR--maF-dllL4+)hPdHa;5u$#ahniKfXVvuRRVo zDps`Rd!N}dn&!l#QF;REbMDVrk6Jk!P=jM##QX|`i8<|ZSKZx8<9?r*@hvCE zU+KR&)x#$ykc&tOYVoq`iXLIcrdt@xva6##u6&Gp?{dF#Ch6 z7W8CqLB27dS}@wqbHNgBw^^{zF5_WE#vZ+oU-3QQa(^xoC~I9kI{V|t0e=pK1?Swa zZHz6LJt;z)Fuc3Y0lc@tBQ?I)!oOR84#4>D%K^OcKQGyZ=iG#ss00IyT7We{qc3nZ z7_gftct?S|&BFomzmZd;`)Yk7L@kidy+Lm+a3u@~v@cX)3^07fSraUi2Nd@nGdjP| ze=860@O}~d{+ged^NSL?@$jKWzb{2lz$Hdih=@77Z0M8mF7l;7|#?*grr(gEo&R9pV@)X>{n6Kz6N#d%Tb^210A-Yi9gy9Ye z=4;l%+b2iojUU!s;5Oqo<2Y-9jO&a6ItM7N1sWLOjsLmHF8sqyc!3BnRuBUM=>h&c zfae2t5(U3o;BNC!Iq`4s0PYLiqU!{rY{J`&skjUcaZ`$GfJ2_Zynu)GnnoKc4l8zhCe7U2E?v9cTuGh$IMeGO_WJ5cld+X%HUL-ow{sCIS>f=|UDXyXzD{d5wh(=Q=t z*E$4$5{D4RhaX=?=yw}YLwOao4y{C8_6o3@(fDX0nyG8iIzvW#)q*aH88?f$U<(E- zW{k2+m~4|UD^uqH_c~;}Q>7e$ano9zwCpWq>LZ1P=iTqVv7zvesRQ!H482JkH$2?4 z8=&L*kU>#iEs*Ctxb`dI0DZOS=txcQ|2fGnJnbetON8gkz<@w~fr?%Fp^xIftOx@+!?VR@s5bQd>T8P7#O z@G=g-exZ5|z#PCE|F94pYkwhCc(?gvU} z#kWMV_)e%<%o;{15(e5m{XkX5ZHh(gB;IAWViWrkU-i!+z|T*ynCOp`<#g#n$!>uE zQ&i-lk9Q>(Etowrf5f2fKKBA6OK||bAE0Z%BL4eEXk!0oR3spl0GYb z(|JGZ#k|`qX8cF-e&5adtdFPP$GM;P`yMxD{O`Wrx%0(3h1rSMp4)uibw$GI%vhLz z`RZ>;mx|8#4!~aVxm0xa&`&ALyQHocyS+6&w<0t}LbcDILCEgA5&U`rf{xqt*r!mK z$O+S%YY}v8DT4AgA^1?d-Vgja_ld8c~FaoCIsW2s55cKiA2>#+Jgrp{*+E+3{e|ZC;jxDJ9Wi0BX#i70}9*qPbG-df;pbFaCeUxZ)(|4Llg(-#o4!i)i# zMf$D~^8o+7VPjvYyqn{t?hP9^hKzlIvh)Dv0X!e1V*uP-3%paL&k6FZ@P8NvTw%^n z^!tWz-EZW6z3$iheK%=$OzJK?{qC9J>G#cUFZzA4_q5bLSzfcKs&l_8;|IHh7`uc8 znX#C0DkWwE5#{;3)>nGmmx@mPGjIR>p~_NJJGvGjKPMr0>wO4*LqgEc4n5{M_5ol# zU~)QPGH*ao`n?GHWG#X}NGw0ONAn3ag@9Z6`f zTG3UN&{NzRl`)ua57{l4VwZKFAe)Rw6bZYkqBr8jOVJN(KxdBWUSU^yzB_*S;!7_) zc5djv9@?-W5vBTpf&+N8!2W$Bv`F6nzb)B?2i=56sRRSK7GMl`&Z7q|@zes00WqFh zfH8n;0mgtpd&67{Y$pnSwZPrxo~wv|4-fFp3a{Mk3bGaHTA*(&VC)Q5#5&^|Kx<>VA)>7wg45Lu%~z z-7aSQ^?u)dGduBJdZG7ozi-=<4bQ2vsmgXu0kj+(s0scIoJPcq>u++|=(HCG0FuVi}9>8zXI6w9h(ooL8&UnY*HI&7D{6hS67_7$ zaGk?~FjYb`n~c`!GTJK%=RP&Eji`e|=_I-xnB>*TUcd9Q#HsVC)N(=O1#8NX!S7!ho_o zg?)K|u`6&n284aYUSebNg^$pc>Y0D%fA`J(-hN+6?jI^rvK zyNmLE|KP~B#lh-BdQ2m~IV*DMZiwrJhrOiT;3T_f`ZQdI>?lY(#LrgpgxP zQ0=H0q5HR^=7II7leq%*53WK(RYDWqFHTEDn`|p?RAqFtNeIto4q(AB2j2~~VyaET z9FIrgbBYAJfpt~!m34q)Z-!Ihsf@DH{$)>LVWE4^$2*G_&Yy86I_f4T$G^b=2K4K# z^%;0eUbCsmF5K-V+($YF7(C!_9zEdcE7Ssp9^mgCz+QrziGnv&P5g8Ga4jJG0|W-R z+&J!o0TuBNxgrLz9$?f0zPAMeVF2p_rzq^>w}p>T-`@XEe&Qnbbsv8*>nGwr+N=2) zo<5xW^;w_Zp8Y<~{XO&+JQ571Y3 z34gbnF<+5zJKyqBtr%l7WAM>!UHhN=>GOYG_A;0MWEC9$vYTxIuzM>^bP6Vp@lrwW zd6)yt4ua{|88D@N4$~zof{r|nVD)K)WUWTEuVqxv+=3eF7SvMWQ8#lr8rWjQ-SDPr z5?ZB8Xs4LbNwuH{a{yJwK)VGa9s1oc(GRp)aJOB?dPS<*exTh9`hEYimG(}^NIz8k z^plUA?HAq4IdDLvcsB<257(jx-jdh+)?^p%aue>MvN7OFdO%qi@Cs4zx&n8byRJR| z8~IaU0QUx0ZE*$J3M-BQ>?_VQg4c`zhKCSqf*uU`@GbTf{r|ZmR#xu!%=mkGzoGdV zvp!J%KM7XNX;GW<}m>&vVhKeYGL|N5J_j za9bI<-*|!mEHJ_3nhR6vKA85bMbMj1BY4*{2+3T9YT2)#`cJPTG-n%Xeq%+=a6wa;LqYJwG`F@ zfBs}4T`2g?_}(l0Xqwag+H0E&r%j!Z9~s`o*=NAeyylbMc45Aou!wXFFnGX&q-%nY z5tUmD1lk!iYJqh`!Pcsee~zcVk&&V|*dj*o022J)Uk|7>2Cyc`dZ3{RvL47E0|Wd$ zggE|BdwD?P-EZ-Ik^H{B{v-_WUfA;k9O2Rvbd*yTO?5{6lyrSRm?9bl2N-VmZcyD0W!qXXVSNO#i z&#zz5sRyh5Fjqu*K<@AV%m+-lCt*r_2SK0ALC}|R2-z*6+Mx}o_WPTtequ9fq^w2l zgR!W0AV$9(s#ww7=IIA!C8CR6Mo-m>KI}n6;nvN3>rgXQS~Wnn-PQLt3t zZnLmz^S_Z#bqp9GFd*1o;4T*fej^e)gB9WdfiQr30)~HxzlRWGfc|Ox;akOj3I_P{ ze(!!?iRP#0{zz@akVtVqnsYz<#@#x)m%iU8=KRF{PUn5Mb#gwY&-w^I&o`cKz@A=L zz1tt?y;UV#vdgB|>@x1-{HR(nQ?+7}sGY4C#P>H<3vO1;=&V|+HF7G_5+ZWxZ*7I1 z!#^F&?zG51$jg6BNA7_sXD@<2G9xH84nfD(BG|DGAsI2Kerh9X{PsR-Dr-?EWjX3+ z#G+A_gr-?CS|~|qo3#cV*e{g5!g8$W$2g|S7;l%ve&AeH#sZs!7Ztf``+>GN&=2pA zs&GFr(DU8#oQun2ECsEnyjO(T7YTETu)u=>i%Hi5?kBp82k?xbp$V3?FJ$ZuTZw|r z1@1QU%?14;D>?sDLA_kx85)t-V)d&!1~C6;9>Cfl|Jk@X&ND(hBN%9J*zgZ2wJYF@ z0jvocJpq3VU=4sjJ{Yj;&7$z}<8&VI@47GGm;3u0z8;33-ynncN9y~1!})e^FO6^b zh~554-MyY(dcTinecGRvA8eNY&FbnGs=V%(O^Qv%Gm4A_JTuF)vsp66C>9K59i8>` zEE(M#R&+>-N7(Nv&(0yD(q?$&Kfio)@W71n!~L?ybU$D^eGH~=zC+NNzyJVVqiEukr90Pb(_(~YS zdVoX}9RKf)|B_l@cwUQ`R||vf=iMUi*-MZyz_>ZiwSfQ4asN4C_7!IgDCHl*IKc5= z76ur7K|c)G%@{B?zi-d*e~X`BbXhw-!qD;{$KDYODi$o1kh(Lon}iP16dS0|Cn^dkJ#BYpc2ht=Dbli=g!Hn%|GBd} zu*8G}SkQO={LYyZOnZ5|bHBOwyZ3(I1oGIGc-%?+x!sIVnf&*7bWIV^-WG$#XZF4| z#Ld`t-}|+SlXLv|@i}wm%t1xhB@U;&433q6Oa2VH?H@t!SO$YV0tV}cpxuC={mW3} zM;^8IEkvE9a5PYOG)W`9&^WY_MRc;8(ZeR9uj1Pe6fsT`FqQNI6#;K5W~5Y@7hPd( zKs>;~4L7rbll!Z9St>tyMU1_^mNDI+cuk^RSpie1-=}hZyt+qo3+e1-n9<$Nqhmr0+Q<=Ta^ky3LyB`xUrv!r zGee?E;Sh~e?z+U`UI)12Gr|4xBXpT2=+1ly{q9#`*#9m9lLQ!(KSt30H3;4xjamuw zQ7i?S;Z@=KhYe8y(2WK8!6V|bV`O!8vDbZ;&2Bx8T81uh2zq8QVM=eyfX zyY}(#$pfe_Fw%bJSFq0kJckpBh&1x%9{)5PkP&F7IaRrpk0cHmexo#mCY^nS*f2yT;lev z=#Zf3-(sIWSHX!;@5!GOPM2l&ni`eK0A6Y!lA_U#M$@&Ox)`i>b*wZPS5Kn2f!bv1q;mvy!k1m_hG1-FF#IGlt(0J#3;P~!$=P<^qH}L8?zcI$RiZGyx z!@Uh~Cz8Q!O@(fIICQBCpx^%i4EsMsz=2p84}Srp{Y%u?C!khx1nN>hP>w-U*@6~H z7PPa+qI0UCa)JF7uYaH-V2n)rfxPM+^pq@Op(5h+)x>=HpQSn=Vad%U8A+Rpii=Aw z3j@^nU(T3rEMs`kn*&fCP#y!QH&`7`uzW2L#+ZJ7zPrto>lgp$F`#@NpkaW<2UJHp zK;r{0!hp+}4e-H$?>{NNY7Fq@{8Y|=kW1U|^>}wuzi)u54-d@p$-9-v9VR z-D$s1<@{csqI&q8jef4VYuf^2NxJ`^{YPv9XvY5un+elo5##M<+)F&UY{p=#$77?1 zBMzOFIJ8X_(Za!_Nm2wF?pXl*wf}>sFLNKz#uy8}g7~My?S2;=D+aghTj)Qz^`!#Jh~o%f2~2#J_~~PN1^t9Z$D5nqj{1Atw}4)A)=eQA1Gp=rWGcWUZ@!p zRW6Xn%d&t?iXXj$2(J?sq4evpuKB-hS(%@klUZ%NRO5dcW4Z?z!~NbIfa(C^0|*1A zGWNGx;5o+5_XV_CV0ImYA0hkaOK?++Pj`{H+%7%>ydJ z08KZ*S3^vj4=B$E^t+-wpi<7y$G2O}`-k^eb)jj$&)36;G`*f0-_`XZ_4_<|zw^Br zZ8N`kyRNERQ*95Q>Ty=ZvcRpj3V2Z_y=)PWN`j}~r&w^iV#WZg3BBw*y4vH=UNWN< z@#>0*M$$ag+xro4Jo){JjIpDa%3;eL(hzEJrSbnE!2R{EhX>db1Kp2{px-6VL$+a*Z`T{j*CLkdUbrYk}knqZGMvEjf+FDKMOj==7)5rn_+hSC&Lc+UoGI4>T z>L2*7BI0m0U&FsW?<@K_!tJdeqF8vjUDj8t=jNV1@q4ulR@L}l!kBIhW4OO#GA&cg>(h5;4nhxlT^`JRBr z2ULXtT3>)LK;s0@u*TnedxMvY0hQ(b-u+(M@wwpPisB4DQIt$1t4Yzy1}*znTO5?BxMg?S^jE1n76a1H&&C z1SBj&!09g$c>F5_?OTc9gmBchE#LsulA`Tx=JE?*~}Oq@wi=z!Ci`o z2dL+v?m2tOd=SkCXmi4Z0kktneF2&eB0fOV5Yn^*K4eTkH{ac6;y)Ar z9t`l#3P-FiQ1bxd00;vr+86TG524;5?Fwjn!{@aFD#`cFyJg}{2kQ- z)Elg39^jMrU)b@vnDe8$pPv05|31yP`+|QTJ^P=bXaA#}HBB$ozwev(J(^yAo%0oO zP7+|21UxIzEG+ThJnolyb;kcT2hGe1>i$d@tBCee99j~eo)U>hNefVKZwzYfTne1D ze=zPcX8yrqX&qjsJMYbQJre7{h4BK(zqz0fYh67a$Cv z*#N2q2m>BxOzjKMt^m~nmF*3ap6Fc0^zY=m+dTTu#s7H>P-}tJg@3~U;sa=JxH^2m z6=8rcC+M38P+#C4nh~nH7O3pmUv9_ee82CmzODyH^;YZtNnQ^h)wlbRuFhA~Ilm6% z-kG6u>6s17KP0mKJf2?o5&nEq{V{13P`^M4fI)wwRr36{eE$_F$J zAx%e&W&~+YxLP}d)DxguK>&(HXip65LtJx}uRd15Sae%}4Q$sI|{H*?|Bt(@fH}6CRSNA4opp0%pk~exW(*^09oS|4lfa7-J|~ zIlEELoayZ|XHRbHd~tjm=ls|1&raCArHH(Pe9=>le+y%}k&IykV;~%;4hGPCKxKIV z@d4Vdz}t-J-^zEldBl|ePshJ+9?(L?0Pl4;Q>0lu}sCHIE4`JnO`pv?(agaMQX z&~=(M`u@{mH4o_9|6+ec4G;eI>?aSeziWAGdB11IzxVlm-;4)(xSsa<_j!D~J^p>4 zyj3sP#&dq{_bDPuWD#GHo~L&QcA~o9N1hp^mq#=H0(z-6axB^>@o1GAi{@4VjT0hJ zpZ09_m{If0CkRSgqC>`>u-AR>*J_*u#+dGE1iTB$fseyz`rYn%DXi~+7q8-)Bbr;eTH2G7y_kI0yA zIAa**%>k$mAPgW*kn(_ss;C7tK0wnC@zoG|lQI1p`R+Ck|2yLU0tVcb6%xLxK(FL^ zc81F9h-rC1RT!Y&Xv7Cph5?t#11?|yaf1Cu-;;Gqzy2530_C3l9{;`zJ3hquQNK^E z`@Nc8YQOJZ^6%^E(extDkM{c>?V@UWy)~^}X3X;;t{q{4*P`EdNapd5M6*5~Eu8U^ zfYH_%jF5Q@P7%Z^fh5p^d2V$1(&SUelM$JG>*T z8ZqyCwp0}R^tsDD5dc@P030g>m-!2H$&;Y};Z+!RT4315BQSj>jAu6@i13PVD%B>zC_2R=qPsfhSW5m8i8EMLjzs2^zMxw22^ z)XRHkM!QU!?R;fYN9S|nJ35~n*VQ$D&ZKk63EPYF^K#sUC5*j7@jsL?+~Lgu?(*RR z2m^=@)G&Z%12jH>_Jyk28Jx|S{i0#U zUP=^d?^})FlbaEAY&~?xZSOZ@jD6}G+*KT^aY;Y;O6LFmb~u2G;J{@^f%{=6blcyD zE+GcGFHF$ypNoLBC>Z}-0pp=h)P7*Cy$euxUlbaq#-M3NJVFx9Xlvuq*&gH33w4MX zESWG|HsM~Iwi_VeNl8?F#1CFctXK9kRMY*oD6quzd`Q-uY3(ve%W>wTot@8&@9dmD zrlaf0387gVRxHdrc<5N!EP*lI?TlfFHwU0Ppgacn<^h+30k1KppOx=!`CwH3fW9|X zoZo7B?sfjC?hdOuLaPdOO2LIZprTqp;{(WVSkn)wbZ5|aMo{YuRFnt!VgUX7G;6$N zBWa3e59%MP#{WRCXKQ7eeyXO|Fxv0)=y{GkKjYuiHSGbfp64T7oiBU)eRMCx&uW^z zH`4$8K1GC8BF<016E@yE<1gSIn}A_KVxA`3I~oQe>jXWCRGvhzK8UJ-t<@e(;*D_m;=YwgZoATXPyfE&oiOlW`ZGc zIRZ|7iNMoeBWV9x1WP8=wkrZ;c{JNEpp_(|J{ciKrG&x}yXgqs~^bdk+yZ;M0AjCfDKZ{Gsc+i61Wo$C-RtwfNr z5P`|2`Z$#uKa(+*?;GG%95Tzj-=FbM5D*4%d6D3@?1yg49OxV-=)PYJeL^%0ay$Z$ z#Co_u(h9SOqmFeU8rT-0iJeDCl881|Gdd|Tp8Y_=K}qm<2dO(y0;Wim1DNrOA|ml} zi?+Re=9%7 zKa2pkg1p0)f&0l0-S&5&D~yHi(0Um5MNsRWAwt~@1HCywMHryX23#%%Ji}Ps*^HTgWvsNc zgdIC}yllmal?9V0PstfNd_)$-HQ_-20R#WRoWRFlAbe$^PAT$WfNx)*x_LmUR(w{* z3HoXXX?+20ZY?}x11SEJWAtSo&u(z;of&O2={Z2YE~NML z%(#xON%s%P>M~?QA=lT<5X!2L0TuB9&sN9-!;A+N0e3qr9!)Q6G5CB`E-X$5K}@~BJrM*D$jX0))!qOH2)#H)It z{k*tHJ(2rJ1JNd6n$3i#Z6#Z9Kx!!JuzN~T#sE7~H`T{g3T-nax6O7fF#hAGQ6&La=%*)Gj+wJy}7!#lW;Mj+9 zhTMLKng$ZC(QXmJboIJqm%xmcn@8W7J4q zj9U9YKwUWk4GsusY!?th_-EzONsd7e$%MXMd{n)INDGm?g9t}uk8gm(U-7Tz02VOX z@#0@qqaw4EW^7ot3%0u1>1^Wxhd9GQLh9evbizptj3#`!(vo%8d0_&DF0-Y#?T ztR^}8qy5hL(S4O5nK6s_YnfL)e8#FCKAwKxAe)FjatyjBThNhsaG6JlH5^T(g=k<8 zL!A_won4KfBa0Cz#p!WU;rqEu^Qls#TAr>v#+b7jI6(V>qqR7%?4v(U1AyaegUjW? zZIi&oJqO)?UVwgk1Pptk5pZli0-Y;h+_&D-4@@L3Fyg{)fX$3{HXdD4c-)*yy8)yX zMtEt)7)ijRq>ZS02MM5lV3xlyz#&5I34Z%Qt-`sFQ$Mhs^NlI3ozFbn&(&k_xYjVEC^jh< z(5`ES1s7vL0q5|^11iG+r#~=2^Bb-h1DgH3v3S_H5!v?*>+S9L^-?)Mn(=>pEP42J zaj70YlRf>ukDh4l{Apfr5zU4BwckfG{$@n0_o@lgiN{uTuX&K>%@A2cf60WN4iTNL z@o1aEqeX@VO&umQOb$a`;>mZdL$G5h0v#W4+?lldYZa z%xIZ8^U>a}Ubn0*^_x&1f zEcSD+pYq5*6cO*+VpP6*ns=Xt_F72K^H!PkJO%VjjYB7g1#MH!Xd%a-$=+x*+{>eG z(lXTCYerCdT(Itpy!_shvZCFUJlD$~$_FU+wS0hbgXN5|z)Quw_BDT=*C+>g8C)&{ zcV-K?Gm+5!vI=_JM=L*8`k!(S;1PfXvi5~wzn}9x& z8H3c_05ixpV5}r!66pllV(@~*<41q$gwVZ^V&dGS_4vW#Eiz|Ky4lrd(3(Q7eHlXs z#?XZ^bob@~y%^vu^Z3nT3jpS3;8+|u`w?*ec>}t1 z3v^#Dhkn<51lYn5cqk6Ww3Vo#;vJ8=d!x~SaL`Ws&K9(F#G|uf#!aMyBn#@C#0a~H z(MqhkGc`>zsr%D&WdXnYiwB_JLpcETf})>m?0jv?P0qd)|83n2?HEI+N-%)>0$MF_ zIT-K|V|5<8Hu3L!%F0UF*|TTM4jw#Mx?{(V;`k*?3Z8rZ1?nTX`t1n)PTW=jD4LOFmU zpqXqzE5b+Gg;G7w%oso(Xo`rtRPP|-0zKYg&qyM-(Vx2k6#wK$`1N~1`EO3^;p{hX zO##=sjG+x-=%7KK9fSb`T>S?Qat*lU7Vn;oXW!1VZ(GT~Z@H*9 zSfH~PT^a+j~3~1 zXhQR_3G)zia!*9}yfgbr&p-7lZ-oNJ82z3aT5MP6#|z z=clLGOy~Q7Hh;a3^n2*JkQjr~h-W)x_Z#?e0b05lS}{)!Ky?7+0hhu6nh((OfXXm{ zYJvM1Gd@z}j@*1XHje&3nP<x@%jxL3g<1DpF896$8zo%J}j$O-#*Sh z{rkE44G49G4jQQL+|k}$g%|DP4CtrL2o-XUA`cg+)dDmpOnHE|FGLtXJA;G)#0L@| zaFM?d8JczY$Azq{ zh>WTzcCYpj-`})4G4K05*Xm4Z;MooMBNN;=bD%pB4_)>$=+Df9A#DKy)0e{d%SzPv zm9)abP&X+OjnZS$R9cLdk_GJ@7IcwB^mLffKh><_=$&5Q0Gg+G%&VoaSn;EeINcjG z6R_#MW`zR=t|~xtH$w}?(3&x{WgafT7Xzp-P(BZ+4hB5H823P~`_{)kD~z>7<~bY= z;%xrWL%e}jDecx2V@Gg9o_=hxT)Y(wtz#ssf$8@B#+-?hIB(JD^&c!rGkRB`|=UWZm|xEqddP zep%b*1r*c!>rdWTG2?_JAj)RKlhp5%1Uw>>hYydDvf0z`Q%vZdZbIASC^S3#-|_8p z?5ihdAN+BpyR;aS2!EGJ+DHa_8|=W z1qAGhhf!INp#6(c(;9|4yB45<9EHZ|v1p!5a}j2AOy$vCF`FU9B1ovWyq`;Q#@TmJm> z&$5)1l#;Dmw-&Gdcy&Qo*uuP-FV8$T{^9Z2Lx$X%)vNc-&OUv6JNxzT>kJL;=NiuGwh3I96F*KJ zYiEbLYqiW`Xv`QwD!~A%1+D}GMl+_rFVEe6M0EbG1G_tW_rA#)8rsJ>ZrlUeufP7v zxz(#z7Nn=Ao!2A#x17?lQs&IebRRi#q||1!mHhVGZ^fIx-dwbF>5_tZ^FGRb;f3eU zJ@n9n*|!ep3m?c2d^dKbD+W<$SoE)2360l%+B z;9s92C}}x@lcQ9fkoqZ+XnbHXnvr*q6ps#RW|a%c>B04s2-x< zDIyB0itXxtJwwd_YO)7LtY&D$7@AZQ1E?0LDi0t|a1>+ud-L2KMnvZi9n#ZDJ~g-A z8tUrbzn8O5pB~QP!*6pv_0)`j`^=d$Wd{!&C{0XE zDEWEoPeq$IZYW&7abw|xUFoHUv?BLq?F|?B@B!)#tnCZ3&qn<~lj$aYZW_W1Xvt?dp8}TAz*pR(A$hEP(rE3%H-=LU$kzx}%Gs zPqZN5Km?3gU%{C4DT0%uQF~tm>d7WFN+s_gGg_taXzwtgtBpr5*{td$-!7Xx{XoU6 zdZ#_+sROw6iin)*#CLVRhiU*>;Mj`~z00_UZVv_!7eKXuh5=Ra0hho4{atzPj>Dt# zN8aAkIqddEz~u5P;Xag-|o)a2KRGLoAPk>hws0g`^ow>1y*ZvNnv5( z{{$9fl`;128OCZ-{8xnm+P=`==7hD`fQo7X$^o=IfS&vLOkZ}IeYkb1n)9de{(1J3 zr)F%yV}h9-V*J(3_m3RbAON zawz%N4R8&=y}xV7pq|b_{ku8u96reP^plfw!WPWU`(*vhlr>8n`uYJ$;I=8n6$2Nk?DFOHW9O$H2=uRww{;wz)(iXya zXfcd?KSquHCe%t^hslGrJJA?XRdG4+wqVh)%@9w0%^~;)gamHXMJ9~bW3y`%W#$rJxdEO2=-pq5q(X!}A`3tSNf zXfuKu2GD#!39DUrlr7mjf~5*z4nJ{zQY6^#pABS%nacGJeBu%!8Dl-QnDyt!>vcK; z+?uA~PA>+x=UeF5d(b)NLjUJ`Fj%8KT4C1psIhwqYVKZyI!WPZkRhOPdOVs-o?WR9 zv^Q<#(MO5JK*fTgs&6Xo2WtI5kEb$eg_TzIe6Q};i3ivhQJW3v_dVn4x;=RS@qro! zXte;%2ofJay8_kN8PwmA=k7itGXH^*-JGOZai!Ni!~3}Iy!|HE9fLYMM-A)kdVK1b z?0N6KlDl?QY{9SFe<=Fn@WIluvVTvR;G$aKEMs-bV?cF%2G8#bP!6Eg0u=wm2bM6M zJD)x1h-WFW0e;K-Wgg5CSC5^w^4Bx=GZ|y6z1qE1?(tqJCS1=mi1vd9gUe&!w!aKr z(hJc4X9*0ynPAux4&y-!g7%payf+rLl0?)^jX}c<9!(u)gxCbMQ$%!@1@yG>=x;M) zh(!K@CfsKe@UTQ$VLYCYMJ!UxI8xpCuIl?}W`wTgFOOvPnxA2)%{*Lyh5NHx zL6?C6`rGo{Hw}--A9r^bCuvms;~F!vm+Ri4JzRI*+Sz&MkS@-tj||Ux|E*`wt%!@v z|Ig-63KRGJT73NIkuvu`3py~i$Gb4tqY(J}Dg+)`gCOfF)Z7(=I@U#~pAwG78Kf0Pz9@0%;1JNwWGz&tcShTg8&{^hjlft8~!-BzzfZ+;{(Tb?<2Tqkp zYhA#5vKdlU&-UtmUDF8oYEDnqy3GNGn#@xNP+#y0F~D$3p1beJMfp?5ba0X<-L<|Z zjK0Y=epENt*pVHb_YZ69oOs{O&R3rqlO6fdOS$V-L>2t>-%ksZ_irygawx4dC;R$v ziJ7I0y?w@83ut*jbufT9!M|w-FxKPL9=3I5OHb_ktL~2mJHG8%R$54pWxpTN?byLs zPBi;!?E~!iUzfGJQ=Ry(>U*yDAs*nH&fqdPfZMVWx*hLA_eD7L_81s`T7*DHIEz!HH3*of3n3awHlZibu1QIJ8O@z5PJ)4InO1z-`nIlz2Qq`++JKD5`nDYJctr z5*J8yz|664Geh0t3mBly2Q_D&T>;-(;1YYo0R!{gp?8MmKk;BY=d=fVsJ>L>O?ADl zsrPqxO&Zrkz`9nVa|DuT~W7-?^nYBQ?3?)L(y= zkuRd(?|#NSy}`4L)g?`Fy2{rAv^QMQ&Y*??>aGA|HHvfC{H@cNgKBj@#lDUDeQP?g zykivzHDCET%^2J1E_1I;O8V@%bLUocXW!1mH+6x zrzhnAJ-`((a2wY^Cp{1S!B3&z%_G1XhQO?iFe;y+hHWuwO4JWr;PDYpCcRKI+So;O zl1%7fgIav!OpJfV>-B|+}p-E zX;drcQ{#KM=FYl5#}fWx?x!mk1y{|5N0!?JD{6kfSv7%!#ssg1oE71+6!D z5e8^^KzZ!|&2yY~28%rUK{|ICyY0w#EFr#@8vA~!`)STkFtStoK47fus@AiJ$Fr9) z_YcnBKZ`qQUH8nP!)tr8oeS`vFZ9SP16X&cF`>ocjvYIy9lzC$^UA*OpExuV^kW-v zY%4hTIdCZ-LHAo6^l9-h{P76_GNNESycj_Vs}Y<;T47MKdCk&t*VBz#>taigJ4+cpkJPQ$ldev zXFb}&`NAWeUC%$#+4bDN?0WX$POhiNwRb%^wyo=l2UXK z3mZMI+wQb&Qm)VHQ5~ld>0996M>|+!MPbYwjJCrZNO1XXy=`G-ofXee~zO^k5(GD zmBsVre*T|2T_^|W3@(d-+w=)^Y%X*sMCi|c;^6|51Q?SxpvKN+sF}0~bx14lfCY{0 zg2y|^5sMD8N%amQz0g52kD(HeQL-6hB{L@3XdZz4R|Nc5G5fC{Nb#Q(Q-cld_YLEM z$~<*IJ;u<$%L&q)Fx3Jy8$f%*G$Tmb0i+|SX$RcISU{g#_s~)E^52@$-1+LHj;>e! zhpt(Vws*~((AM?R!>ye!j&JFF{-F@(%M;qUK6v5QEdITRb5=$_oBP@Fck;gfEGGZA zA3iR$?)kPTUHY~7aC&0N@gt6sGbaz1X1h+6<>zI)i;D`}q+dvf0%(3dV@+s3i0S}e zPEgAOv^inIfPBXE1tn~pZ5dNU&To0YOmhQEnz8JR&$Ym(Kah6xUCdp2(p_3`q^u}A zwK(T!V*ZI;zhwWuX+!pb&mzyIZJ3#9U;WUTl-Rz9{yVi^(h|TC4`jrGljgy&^*tEA zh=RW4L+HL)2c7F{aNC-KYoc1}{{4LW?YEa5&;Kj&-yXp3*5KGKa4a93{5Eu3r$fIb z5{6wC1nh{0F(V#9iLnTl1=LFBQP&=g1`YvDlvuP-%xFvfK#BGPMfA5@a4TsoO1zo_ zJZuv&jr_wT0bz=W16Aes)&07b11x)K1Z&##7y}rCkud}_hFZ)sBjlS8RD=ao6ZBy2 zJMLbT_ullTXWyLCo_t9Er?1&l+GoB#xn1UKliFmyIWq}yQ@(&I1->3Nui^g7H!`W|K>{SLE`{zq8b!4CK2hiByr zFV=TOKG(t(@&Dioe>TJw{!DY%qNkg=7Cqg>wdkqFuCS*XxfVUy$hGLHhOV$D8@i$& zuk8$by+_uApYet5B)dDrafF4W9cCfvhgrzM!z|>`VHR@aFl&D72y1=x0DEc2dn(`W zFV4^N-gCLKfaNw5rdgvg#TJ8ciV62f(HO48;1<%QvPPk&5{)iN0@^EaXn80WO>I$V zlpKS)`y)_W`UJtJHXulegKzY{*n6$O0a>^4wfm;F79}>&y8%aZJC=3t`J= zj$oGO?ql&U-s`zux|hYzyqCql?7e2)%i>@0Ua#KE=!$!7G+Q$JF80;?9ZPqF8H&k& z_W#@U%fg`IUltlKy0$Ges@IMM`r@C%gNr{|)~hUb<9#gt(|cL`#(P=(XZN!B&pnsr zt1)cl#-VKY;`;vK`+WCC1a60o=Vp_4C+YZ00>;V$?jfGpLAule`q)h9A&cl}HKUCp zA|#DRWBUR$u#wmO64bPRjvD7S!I-iJfeDKdaBMB~zdZ^4>W`r-rnC+P6q~_pqw}acT5<2-^=)N*Tzc&Jg?-wFaj)L*z8U)FoAeeA9Wj^Yq z$DmP$fTmUpS|*8TpDLn@UBJzXsQQTCCh@qFd;=5_6Kp(Y*i3jr;jz@8{Xn{3v|50) zLn$Y?l8bQU##QlaK+p85F28X7zOgUjq{Kt8@v85ns_7*OxQ{%1WD!GTv&X|n5zr;c zf_AExeGHlsKWz&`JuB_6tVHmUB?vkoz?iWL0f{j%{Ja?Y!(q@-t;cs+b*r)(n4mfA(!Z5MEdEMkzvqqm($ zx71j4RASM}E~0sc1&yUh)ZZVDI=?MP&BP6;VT*w=Eee6ouVHX~3VqQB(5+twT~UGO zUawBxU(tzVLZG9K`ARd zT%f!N^->n99>Ps!5iR$d(T+UT$X~@KAXFmlMZv=b+Qjp_0hG&`6ajzv`@XsH`!0^z z|JBz+7LhIqSSZo6UsQc($14Ix%OZv=q(3L3pCaHU(xsElXiK}P4gpPRPen1Iu0+rN zcm$^|LD0`8825_^*vG^0^AhNfhePKs1jiI`N+WR1uQ2dt&6)*=!{N8<-*Q?}4$u-@ z**S1)*Fbmfedw~6K%f0J45`rwl%iowT#p(_>rgW>8g*5&9CSLJ->!elX$T;r9ysOzS5gG-Y#4Mu zPl0~VJQ$QX1Z?ABbSy=Xyc{)ln@}q;8tQIWN7pQl{wFa?7P$nQfOjbN?E)st0>(+A$HRv_C}cDGI(YPO z5Z^4Qx^yAwCNxQ0h=$e$sB4Qut@PEXaqepvrF970V?n@=AHc9<3iM|eL07`S6{Lb| zSr6yu{BE2JhhCHx9Jm9N17v|Co;33v=yDcApSKW(j1Li*D#G~ZY6RKWAb4LKYTKew zpESc$1vHl|Xk{~_gQ^u~LNBX;ffA3~Wgd4q$d5(91j&RMHbM1hS}ltz-v3YDt2eOA zzwet}M2;jNPUZY~Oeeot)q7sVoi;OWQ_Kjpi@4ctMi(U>?d`E>nIWKAS_~Q`&qKX^ z5vZ-KNAS^=2+FX)m=uSA?NKm%7Y}{f9O%|8ht4g5%LoBim%9=FmpUzLf;*D|uAl&1 zb|iG$rb7SoTp0G55kR<_`wff-K1Pj{IMgKEl_SyMpc##+ADGCat!(n>g~~ko*ah68 z2pFdDxQD!$RezQkmD8PLH)HROIPz~C{SUvMKT14av6(Pk<}rylKbglU;*n+ZdCsr9 z-GYwRIJ9vrM)Lza8WRs~jX<5GrKp*@2|>9VU`(EeKzRiMPA!A}%NfwGTn$~}F>tvp zz)_8RJjH>U4a@$mLuq39E{dj1dz7% zwx!T#MnacI{k{xv2aMo?ucGe%|8nX9I1&hs9RPQ(7+hH#biX_X{h#sBJ60kfiTZ)- zVNCxTL4>>158Ss94eUG`JL1t?jz{ZM(g_jKP2tg7<}pwbal0(wE=9!sHW3qK0aGMF z^$yx{BmVzIv3Q;T7TFB9Y{o{3JS0d*R=^{w#~hD4CEkbgi$hn*j1IDZRy2DmN1>4| z9QBh;sFS=N!71wzlo|=+0TTlAw!m<1HS|a4Lbq-mbnFy3XKQe6xf{>^>Kq+_4ji~6 zZNafW!Lf7Taw4GHu@w4WVqi!T5%7CFjE7esh;Y{ygIWh8QTG7t28d{)#Gyrs8EqvI zozg_~P(+W1sBFeChe^%p#>zAkK<~GR1+s{v*ZaP^@xS-)z#LhGowQ=CCiQvnsO;_a zJ4AJUgm%jMICykV<}E70Z;Iq7)Y}(@ z+RDcW{)0F_0mk$X5ttVR19{xi9Q(R8(9yknx&ye595{Ne-8h$b4$(|N8n`n#;EH+Z z_AZD1w>TKAJOT)BkADv1p$({!5|5fv80x58poqq4B0^GVF58R_b^+a`X!KEd43q`j zF2~?5yNEHeXD;Ybg~ywA0rLOD`~Uwn=1C%UDk5H%1w2YKVzL=y&gcCi1}HpwWyGRe z#$t4k;?bHozjPjr)5B0dEfRI?OHea&6N0ig!)RTNz+@f)zr6*+-p8RY7NI+n>$!L7 z9=^Q0{>Gt0FIsmF+_A3U*imqwu7l3;9(1nd(C0#7%J0Tkf7>?JtFg%tOyVl5rsD};QtLKxFjB7G~*+a zZY1$Sg6b)CN2;jKkN0ty(8FOtMxbkz*n**H423I0Nm-r;~JKuyMB?bYu)dS4qUpk{SKg9YGPpsJ}z?o+7B4Vb9vl z{@)F_fhYe`JQ47fB;s+|tiJaT*ah5e7ctZ>;ueWVKSvCDrVHp|jYT`hVzf*rADU=1 zlEP6x#e~}X*CY7A8U$rW!kD-aff=h|_)~yB;VI}#K8Ef@qDR|??%gZD^KTq_@p=Q? zA2)k=fG;*cm-0MxXXBwy;$a}%J+uOW$5$iBu@W`*#GqC}ggO`4z#fAp=^~n^h-l-8 zMMuizBmun?L7nBeRiZji#67Zz2W%eQ!1rYlnKxqgUmCN1`nzNiM{$Z6YY}uT8yrgqcMRa@-n{_;SAPyr4sbKLKlXqt{203Ar=kDD1pR?kFeHZ| z@IVxd$s&UGEkvx~Tuo(r;oUTWW%=6uX(BZ+8{ zCZI`bG#c6$sPpm1jzk@61nMg$G|GrU zGl!t+1hljB>TFakUX(@r{%^Z)Z~Q&}!DPDyiHe9Py|aCH z({tZWdwm`a*jG*jIFxpli&}u=z z?gcQ|pM}2I4Beqja7+T{xDoq)KZF4pw}4~6gZusq==Q${-KiDOpA%s?vn{uFol3q^0y32WFCgUc&1>JY_?El?!j}E>O|JUTm zR0kx1OFsjy&xb(dY zV(93eq|Dgve{JfRyQv@GhhalH7b+;#Q?;-?jTLOc98T5%W zp!HljxA zYSdJC)UijPUQ#$3T4T^eCjS64S}7vhrN*Mufmn2P@E|?6J~q#uC+WM=&L`~+-buY7 zNx*1H#2AMK4@e@$$%5)N_=qH8g4#nCRGp}aiW!sao@=sVzH#~UHLzPS**mjIm^;z? zn$s=^>GM5I8V`1hI@|q#s{P30UYiM{tb(fBN4>ovgz=Jq&}8zEH{m9S8C~rnI(p~D zTON!>GlvCDtdVG#I1lv_B2atpYScXNEo%I^4#uQ-1pXF_0Gj~A(dE$Z{Sdk@S3;+3 z1;>ViqkHq(-T5~Tozav7+yjoC2Djro=uW%{-SIWh|02S$o4CMe1RjWl@#x1ermaE^ zDGs$V1k_Qy7$6JyzxJ*yHm>RnfA`+myu@2PStd^GIv7miLQ~uVZBT$#p+#Mgs9F_? zhd!XHeSu0{9=aq15**KZ@13z7XCVm?RRpO`=#E+7_v$LE3q|>YFPkd9VyH}a_tBmLUB-QM-k9bK zye-`arfT`MT8oe7VP7Sm(>_jvp7ScZ|Mgy7!58u=Y$dKJr=wF1C@Z&5HG2m&8JqM3 zZZeYCNHt?iqgX$iLQgh7iqKzd7oShxbAatgv_Kp<`MD1HC!6wLv?2qE_ZgrnmSUw#zgpY}oeRSLeTDEua^ z&*BKq?L#QP4~;Yi%*kk>`x*2&+aE|ZLspg2STn1jo7MwV%ek0Ff051%C2~n=Q?k=QpC*^R6BgRz*x6?jeO~D|YkJ8WhjMSI9tm z`9X*;{RU!X9)kHL2>0^X|G?~Pu*TcUpCRa1ApB(*;@=;Ic=iCKyaM0JC<5kg1m|N2 z%`$>=jxd@QfBn$c^u zG$Ms0R+@2y>FmhNPP9$YdVfEfDE3J^b8)7nz*G$WUnb#yVHCc}#~>a{LCpRYLgkMT zPVm_O!0kRjDBN$Iv7q-Z6$RpJKY%nBg``m~U>E^&6#iEZATYldA^i{P;VAa2YgKAwwXK$BTL_T5uoSF+yO{ec0jy53{fM^l`IW@oyY$*u|Lo{;J9^n z(DX5g6AwTvrXZbr4w9CH?ebD7@hCeTi2xy?8_i*$#Z zj8(;PL}<@Ur<$^#t3) zvz}r;r=o|rEGpgVwI_41)UMeTIcxNvN5!1d(eF92pTURN5kt!5G+R#q}V?h zg-^@CcP0tx^&di{=M24nqWh{yd!)f@B7Sao5DI@Zn4>zw8T9I-=w&rwGFWdY?EaDKv=sV`1p108^wIldT4&NbhGLqx ztM&o;O+{ZpuC}D*Q_9!Z8u^|$$d90x=4?iW&Fy>G{5}IZ`_)z6g9ve1vg-7QHM*lO zhK_uc<@Z}okDxg_hGy*u8qYqD&>PPobU{JT7(!rz_LZa|os}UKAAxl8K}fk@Lu9dk z9>V1ZAdm)mC|)xYo~AhftphGYn7s(`cpT!)w;&ZBfpkuWMEp&};Ma!`C}$8n|1^U0 z;|OIBp<(JE8fW8ZJ{3cY5k+fu812(hbZEoqG?EDC752VxWwoZrYAuOKp7w-~vHOR+ z3iKW^gSAE)>+%ZL{FW%M7~7w^`Zp zHTj%;PaM!4FlW+OQ^;UVNkxR}z|nKwh+-v;=VcY0xj2?jQ;nzu+Gb*Cors}jB97+C zr_h)`jE1=}7W;uKPqExFJJ+Kr@XaS76&{8(^AM!x6^K)3tv&vi?uYOVEB1N(Uqd@e z@n0JQ$`EGfApU+7;`DbR>EDBNJ_Tu3fzNyb{=!c9Pb3kXk0W^QFhcW3(J-?gjT3v( zq|@CkDq6G@T4x?d+tf~U%sheR**H39;s}=&gkOncg&||*9Mu|)VRb2uRcF#zT}&a8 zk0X+cA(BfWl2fgwD~OoXGKiR?yj_(K$Y%;7dexWAr{vq1C1hV#1-p4^E}s?T3YpuMmgZNzP149liuG@saurrZHE<_@BvydNRb#LPGXZ;io! zF#-SaB>b25Lb~{4NR!`zM4BRPk;W+R^i3Z79|}7PfW?0ZLggTYf4u|Y_-`S;_#=p= zhahU(AYIrGsq|C$-WY~&G6jF(F$7*ah~PhtAy_z!&`ZytVRjr1bhb-Z&@{ON%TDh? zOLhlZ^FwGml|Z|hM0;rn9a%b87-x4qc4kxPEUD-;;t10{FnMY*tFe2^V+hYj5uQ^J zo*P4WZj`ro4INWQH3m3&OTCZCh#DD(; z;_to>ku*ixB8@#Ag3$1PGVlN2`vCdR748G>1FiwC0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eAfe(WQxP9c!<|wwX_@A=DNqIH?m%CiU*ulLu+_8I=KnHf~1UdeBi(p6ZRdGk}P|=x6 z#Ywzm40jM0GwSdB^(=y|-?Xbz`MP0x8Z>V;DNU;5f3_#p3J;(>7ey{P9}Ka zZqZBTg>&P^jT<*^A4T(+9|#`!V;;|c$>aHcj|cv3hqZal9`?X*c3D1=ZCNVrx_$vX zao6=x2;E+|>-sDNZ`_Sw>hDJIyTRQErv7d?tsvbAcE{VW#cloUiPPu15!{1quK1nU z=Dq-?6iQ9XHn!az7g!3%jX+xAyWx}}a3jDAryQdjL4>H=Hs&ZV|$A zyf%)l8B0Odey}l?LUnc^OR%`$RtnZRf~*XnGj1iYoN+6K?M$GR0d^#)njv;?B-r|Tj=06Ha|C(eRrgX3$kyt(1A+DY zuovz?Q2hmj7w$k{HGS$B!Bu)3Beae?5LD0qd*KcQ*68!bZ6ml&pF;%K>2V-%5pGLR zoj!*lb`fq%P@O)9A$AdNOJJQo2LkK#I1so9w(@Q$w z%6)+PG$=Eq!Q|mORQZ^s+7uy`*GFI#lMcB|Iy5usfb2p%|Jy#mi8Me%8ZZrMFyD{{ z6gCeLK;eKHyRKBk%3hl3mAw16s>*Q75zhnOmH|W~nQAtO&=x-s0 zVY*Tnr6Jv4A~mJ|^gN+M77#~MzM}JlZD^@WLJ2;=MRG#8RYRJ1W@!2D^K2f%a2`Qa z7D+a<(AsMOMvRlkC=IC}K2P8h{FOKmO$8CnY#NYUScTBgiCk|!;ncnHxY@%DH=L^lP*a6QDMCWsq0A#$(~p?RQ?SiPv3a|!)sOu^^@9sSQs1M;p> zNBV&&*vGI$%$SatX@4fAY7h_Vj0tM zC&Lmy5;}hPJfWurQSjMYw2h!%*{R4cOpFDFB@%^;VTp?wmiYQ7&$EDqm!K6_a(`$a z8!%}ii9MDEbrAK`tZ8^-2>*}3!g63?7_iU)SjY=3g#I#2*g7uhqnd9dp5|)AlhBM# zz(R>1J=3EIz$C2T=$|P5Qm6n>3;?a%09|GS^Nb7t=nb7`c>j8y`JN2UBV;BW6zl1* zyeJ7SJMIPlQG0-!J>Gv+hRjVOOgdOI=@7@H!{a(SbeALnPLG3*Ni^7QNCVN~bJLGx zh)!N69VRmAu!Tv78^nCao_Ff#fTaWa(SQa$hBU}Fq=D*>Fc1N1QvhBa1`3l7Doi@~ zGU;%ENrw+?okQzk`iXgsC>4e@urQ_FM%a4pg@m! zpTKxyNP{JYG~gPFp)J$|s=RHk-o__-ukTdG*Wa0ohhqFhKY{VlkOn&p;y}!34*=yM zfGi+UTx9@zr;oXXrvuIK)nQWq96MAm`}$}4iFw>04th+tlTW!W=T(^VI}gYK62(;x zu$P#}bVchi-g_y&NaE_B%h`I_^>F?DI`;w^?qx#aErbqMh>h4y^$KyZc!T2 zf6~uh3*<<>=sNx!7Ds9IV-V{S@owr4176xg!g+q&xO|Q<1{)5{%Temm{kjL&irz>~ zY1c^2@9QTp*tVF;KR|}RJyz`{sU?2mmO<&4IzH5*YQzb&ai?s7I`yz>o$OQeb?)Zs6lbG5v|S&QOEB-VD{tz8;Z& z_Sz`N(TrT`9tgj!LCDTS(hC-3ZGf~8qYKU>hh-v1C$&QGls|MD< zZ)@t{n#fn%j58v_F;q_xqtqq;)IO@52xBSeY9N5Uo{ETDCn6p-8(6Q?rz56YASTX1 z9Ci0Q`U#9?Vm3jna^Ejna^U*NYJjPeaJGLOF&dCNeCsi>;feN2H&?7;G=mhp*7Ze^qbD zBo)^{6P<5M&EOi&$FRh;3`=~^#`q=uEbM_6tQC0Clw!Gar>apB{hNM51~JGCOPtBD z#D^o~-v=yw4=g+fEL;XGREB2c=-*cmi`Ot=??o7vsLim%^XV4Y`-AsO>~G3|g~7l= zePAKakM=6VWeA2ux;gGjbi|LN2l`Jpu<#+UFcw%i9atzlQk~xu0;fhXI;A^! z5!!Gmuy8c6kle3#1cJo~2w~6#W>5^mKm~4~0tZlm^h>1}NWcUVv;qh8fFkq(0&-x# zzeo6b=0o>kB7bimHe816cQ~1J(5|Dy=0gdPF@XjXjep=1{u?rgOJdSNmPrQ}CLNA3 z>A-wVhn~2DfRku&-;f4&hBP1#-HZGa8Dgt2lMWV4I_zQ6;USX_-R!mhH63sepV+H3 z8PZ^lAq{x`E{7qQ+)O&?G3l_0Nr$UUI&`oxht|XJ2@aixG>A8(ffT`Eq&x<3Ihb@9 z!=%GvCLMB^ba=<4L*G!m;n&~6Cph#P(%_;Y4Rn6SA!H7=#wT8X6dagzNM_RE zC6f+4!*PCe{{wu215qCStWRhPyeGB}l=ZeTNq6?hfB9a_;77RZ&;J6S;PAsfLF_Zd z0J#*%y%*_r#}f}<#*dXj&_CpZv$sZku=xYXnb-r6<#PkZs<9KMI&9~+_pPTfXE2Vzg{ zD1sVU7hWFOt%{si{WLc9-K)oXZu^W>klLqC23;KTtx22FO7(4L4b zxeMY36LAdJmg?Wf6S1Pfef)^<+3!PNoQVm`Jh3L3^H07H;WxZF0vNxKgjSn5als;f zT>IzP6dRXaj~JiLVJuHO2F;4Xhxa~IUfeQ4a%en^jrG0y zm+%P=M4yl+_uzs_C-Lm&F&MWTaJC_!tSBIm0H=!aWAu;xj^P}B8K2!RWJ!o}eCv_I zG2rtMlNV8@iu3)<@A=p82_6Cv^bNNkpTdb#l;ts6^AGXB;h013|F-?#@X3H6KMKKV z9ztRoiWJ>Ok5$VsLQ7`2Pcsykef`V$#8@QyfGP!1*6<|4p8W{7suA9OL1@E%|B9!s z4X5wej$8DVhx$Bh%%Sy&@Yz0{A{o(02+?~CV$4KDyW~EEj_>$I&4}dpUvWI+BnDVa zWcx%zaoN{D#Ajp5lMu)8B09+-hK@%}nTq{>S*8WzZ2Ew`-~1Q0AH%L&5Jz3TgG=2V zFiL}nP5h}}`~hDckV^*eVt@N`B3elx`fDKWpMsb+7{g5;^xZPdM}R-*QwcwPgL4D? zFkI(PvFdO5V>poLN}MLbczUriVvGUear6K2L)rcoyB;zAAcuii_dX0ZR394a{)TTW ziGUFZ2dCiF^yzqexSz_#W!JxiPjG0)A+d53cAxl$Pe}Uo{x~z?*NkOYVg|z!zq0X$ z*T0NEq)+t6+P&N{LRmOT&_-?`sOAKdNV%ur555nfXN}!6BEu64 z04PDmnr!%QGRT9%u*7)`ORO2r;cw!91r|OB79N6DoXPpIQ;gX3TI}Ba4R@#vX$wP! zC6+KO2XYy|Xg}efzXcX%0}H)?g^Iu$^v_2iLpUffEHQ;)iQOZ_ZwD5Z01Gz&3w42o z-2c?qW>_LW!xGmsEb+q++P@1}cpq3811vNH77G0n%;7TF7DRkxc7{1V9Gw4pfQ7Zd z!o$GogMLefb6|6dh?L#h=*)>JgGNkay-Vj!?kvp+=ngZ$4(1p9;$TR9MmN!SN~ ztpH)g0E$!qVJZMO6@Y^ZK>9nS7=XkCAhiOJx&S!(0E7`B45%~OCX>m|v zFpwMP9I5~R-;iN31|KFJPBZE7mK|dt@*D*JsYGs_25p8kpc>LZ_-8SM|FjHpCgM(# zOghYF(jk#ahZjsbd>!r!4&zVQ@YRq8sfILA`fu7Wq<;u7=`e*!hiE1pDwuTW9L{;@ z{df2iHW1~yAq}SdCv6zQnTtsWEhZiOm~_Zv(xGK2$DdvQgg;?JtsxB-7}EaTF)_%S z$WtpY=`f#3hjb<#>i;UI`aL`Tfv z;7{1_3!K5L1_Kzdw_gCK=A%DUKqWsdBQ0D&FAM0Fi8?))w z?orKkM}8hx{VT5D`};5QCu|t;m>^<>L~3Ug$Jb;>?OeYRV z2gPiFEfXZa8Sy>-Y#RtWMiQ(2xA}kPoJpVmbWse^mrNwyL4=m{U-BnxVD~3|iCRop zwh&)_C)WE{+=;)BsQ(O!$@iaQS;5=4%1)#&ggD2dIe4B?LpmuH#sCo`XUmV;pUt0b z!?#%RKG9#EpMJ*wTTFi|8Rz`oAJgyq7SsRZIT^x^B!c^|@+WK{`Vu?Ve07`ZFWE4Z zzX7d3=hDyHWCt1TH*lekn_%C@@8<;Au|anIxB0W*2QfdHD^}pi_0tE=W*z?XdEDWB zipXVLN(M9~&Q9$jq0MGa^jyf_x6WLQI3qjK`2Ig?e>Q)1e;Oy;fUygI!{>=Sf69Nb z`4f2%A}3Lk44A%^j0=|W^{ufH#VvXx&PlM_on8Oq_GjBcyay$&&**0rhgES>-})2# z>{o3H;PqXAdwrqL!3fY;feS;`2ikhr8R1{K|JV2vb`WENIJ@RF?h+P6==Qh!9U5Tr z@6b2j9Qwvc!?&D>65jy-f54r1_Fv^c^j%DmyN3(SG*D|aAUEgWrerXWL)8D9`45bV z&&UOqf6M{>AL1_ypOE_}{KxQeVyN1;bLoG#AN@!A&%jvt0e>DIgmHQ(zI+v~vY*C| z_5bhY&&i3PqK@FRq7Tx}B2+i^=Pab}Ji&#F=l63Tc1Cfe_WbMZPs~BYTq;ZYj6Cv- z5L`X_Ac=u+zYgI;??4`q_pYH6P$@MmV#(5invUtw@>lp zJA@B|xyzOzzlmVyYlylTk3jnv6I}0MSzs`?d|95j|>; zs9E+GIY_o0ME!`*#)zpFgL%*) z=Vpl<(BI-u*wli^Q`d^qckIBBiDUojU3`~6*P#E-Zfl}{7ziRRQo_FN!_E*7&)u=_ z|2BWZhQS=WZu%))XF2I-W8%B~5fMg{FZJ+tYr~KYqrY_}jn2f3QFG=lIwA59av4 zoiiuK@t^n;l0OTf+#NYHt#0h`!e}~Et8%8rM@i05TJe=$I z?*DcEL&gMgMq!b+2ZoQ6PbPw$L;d&f$)Ftq3`-1TSR(6te20JbALBpJpZbKJzIi_* zGGZgaKXd|d3jF6XXafhs66Z23@yT$$!|(q?{5yb!SAm6_pbaOGu#bn}Z?^aQXC#Kp zkp85{u*6)3CH4;I&A$H^`Llmlum@OZ`EUHLV9*X}h9$-`Eb%j&^U(Sq^6v!})&UET z0}I`Ng>t|0yM>X+pbfkXOI*dU#KxiAiR-_~f8e*WEL;gJR0kGv{-@4b5He^3iD8M> z3`@K_)P`T+{|Q)l6Ie(E78(Hy`TogSjbD`^V?v!_iP;QG>={A(6K9pGfrSTvg?7L~ z@&6|0;WESqF@_~>V_0DOciNvg>(l@&%mNlJ{MFy${5NFK4z6?yTy%IQ)@oku_g`9o zg$2OEwZK9hU?JE4&$j+6A#6ZE(q0dou5k@_K|9*~(>ZUXf{5FQ+#_NSX`p8I=OT&g zFyiwb05hUy4jeKff>YcG&_n!`9RZlc`J%xZ!UpcaY_KMN^G*;E9;~_l@6}xdf9?T$ ziMns_o@fW+9*H06n+>!N@gZ^0i)bJ08f>>d7;IPI9%x^x*+5-FxGb>4(P4%lpBx_m z2-?|NIT8OwgeW{*0N}YUeL28be>*D+mrc)DFN5~EyeVjIYst%M3?KblgKQ#KoE^C24t?pR)_X4qpg9wRD`ci&5{i3t?ZktSnNB5-BZM-=@F5 zS$F1m?VAs7h_73(YJbqAH#16F#kiMz?M+kNGT;>mMlJ`5ka%-v@~4wrZcXbpa=3!l z-6nUfx;P3ohEqCBP495j^%kc?hqkTJB+rhg`jPxNw5gA-By*S-P{J>ZiGi+!XBSKj z&!diqj1`=6z$pPn&OMp3=-^ zAAW+TPm*+m-+!XNxIc8s=Qthgka84yD#q2PLSi1t2@2E7;gJ!4Q>4!;J}J8RAoXRj z)|~@&LQIA7?M!ts5aQMCbGc*b$@6i0+styX;W$o3&iu$+uhv9eUqwfC3+5Ivm>{+B zrWf?cH!NS67CGLI6qLZaCdQP>kvbRC%GD}brQySzEd~=LE_Q7rcS3;P#48I_ytAze zx99ri2yc=MDDs}@&sFX8QG%B$!>ii|%kR}j@{){ZlCt?iw+KG9c^g{t)!d-GH)4}I zNrb~^f6a4h3pph@bhdjshyN(O(dVqYrH=Bok2w*ca7hJ@X?)mQ#NA+1D;++G;pJ}P zk`SFk=8jaY%e3r|!IsKZMqQuG!lx$iwc9VO z+-%D^S=SbB5?&Q-H?Q#R9PJU%;GLw%Y9mdrvct^c^ z3h}jBq9VMCC;YFO<<%J=caV;E5ANHClcDXYTPlzoRt2v?fi6u`x6s1+Jy?(ME z`9|AZ&gv&5k&9iY$)VdPPrmWQO#HCjHP5C`YAzPPhi2ZBV(N@8@?t*s`kZ6mA}}j8 z@Wg}DcE(zg9VZ&HCd|Iu$+JeYx#YOyQZFuZ|2D>w(Sf~+3FkVZs8uDI@e_<9i*`@; z*r1vg;kk92R(T;GHD_jDc7lD&sRSjFW2#aO9iuy_^5KzDTIKQ+<{0dJ&v(|3thBn# zD>CDw!wjv0W1sd?NhPPpFBWoJlda^Z?jY>;$r_?ugZ;>%QPt8?$4=d!uq|^@WVOMw zS#LGVzivOyceas3>2lXOJ#}WE*&T}nODoF&&LA$wT|qnVO_{|Rl%m@xqkCFuvmun~ zc7OHODmZ*qVoTKat&}@A%KS=ROnl0nzqLtvHJ8Kd(s9;vxXe9L1IcOkH;-~^k~|YH zARrX_(mp*R-~Qk^d1+VLRB7AGZ*#b+ys8rNr$VBg}a7uXx^f86R$ zLB_O%*l}Uh45iamZ&s^r<<7dk1t`)*(LplT3KCedW9qE6^aPxz7YaVLOpoXx&7J09 zkj zq%NxY*tw|oP-n&IwB8$~@1OT>yYWcU+`moTyZJ;PPsilYG5K@C*JSP5ko0ADXzPxQ z6r;i?tEw+feYukPW@GP}wc=1xR!fSH!ks}8u_86T7Hifh-_4dOnLfv%;q4BcWtyid zT`%Cg3)#X%U#UrWeaX*4tDtnej`3QpcrR0fIL5))V^`F8Z{HXF`g-9g;svxNj4QOW zO?B^z<}~@d{#Bu>>dDYmaB+?G`nJdzqBq1(xV!S}w1&yOmYWVoTvv;6e|!cv{XKIjeQ3woot8Yg|(K%?C}QVNZk`Gl3_m zGe*z1t-^YMQOKku?t>0*y4|;~E1WhVGe*%;xX&zDdm6#VHBg+B~ne@V%2K>v&DI!um6dKl#jCAwchj&MfZv zJT2$EYfC~xdsa*se>!*P*6ZeXq|J=`S-qdIza}eX(dX#e!suFeXLA1KQD`0 zBxPLTCCA4bhS)}=s%kmYZZ7E zn+jO)w47tsX9$FL=j|~4RHxzU8vmiIZkr4zF=%ws?wfFCeB>+2@owZ!$qlpP4SVik z>nx#FutxF|@ML|gySApS&V) z0r5IAryOGRneN;cW)vsRnCRJ&t*EO-5;1I%UaVD+nxLM<^JGpJ(>E zgM3T45YlHXx_4JYX3GBa5fH9YCD$=##u!r#kEVr1xx$^}=#>qlD&2^$lN<~At1?_h z>(;+rAXU93sa#%Qa<7ilSxGG=AEkWjlI|;3bT5Nh7}6x+`g!g~&w}^cVv47NWY2x6 zPmL1l7b(UUrpNDP+>}qhDNi{xRbofetsdXD?np5*@H^~hbhJ(s?`9pIk#%cjpiA&` ztT-Q0OXtY*?d+n&Ukm4O<9Y3#TLEPqot{J z5|8biUFl?oyykRPe3sN-u6kyh~J}hpv?<3JF%e zaeLzHzJ+F-;-wKFP^lWoswu&BgTDwj@`B|#n%`-R0Mdg?5Jh^D+HGycSBWoC5Ij#Dfg1bp> zCuQ%%Dvn#;QnH7BsB=MG1n@`;aIDc@Ifv7Do!GQ5d1?jcX4fc{%b&1qIbmxXCu(6u z=ag)8+Vr9Oj84!-Q-=0^)9!4=%4H;x>>#Uj=VTKR<_n98S4IZ&3MvjPb~tKnzh@VZ zvc8V7LHegdh+VnX|JtedSE8_NQ zkBwMyi1Q8OLHDDxygFNac4eO2*<$avplmHfojVd_rBTbvsC}Z+xMJOxB+)Thf&NxG zDgqRb*1kgW=uIc0+-r2&tx_+YG8Kc0#2J)R#$MUR8~OJ5-8&&2wNX_6iiVieGOO0( z-rTHDpExf2+3`M~_I9UJ&C9w~g0Y_DRr{21nI9C41^f}^Oxg6u10wmpz zc}jL!9`P?{*igow zV;&bDwdw86n?0drJg&}3Dlul|>ZB^25G&(T#-9xpYBTNLuZVYFI)9t&LdhNa%A2-E zoXWehwzf{}alr${=g0TgTx_2QQT+0vnR_VdQ;tnOD>~&PPqVVXdE1+j=EqF)lty!E z7i2vatP7vPXe$Zza}R!g>jp_g*I0Sd3_wwmA2Hcjn5`qH>b1GdNsEJyHnb*U#g=B*8uZ#KwK1CF3H-wO+dParwQv zru^PTbBbRw+AoJw%(J3)^Z0(I80Wb=A4t8~>}wPCp-}4PJbh(jYm0?j$m8>aFZ5N5 zJ3lHJo7}H*Dd(T?;q}N znQ8y@OQ=z;d+>96veL2A8Bu&?ZGo@qH%?Tp7mDh!xTUaHd8}p9JV)oGYiAGIw0jk$ zTssp#s(xY7C>1!S_JOwVT`bu}F>*=CbfdESdiqAi{%-A&6j;xec zYC{Rwqg)aov1T2&R{I-;vN?`bPnWjcx}rRK)A^`QGaZ_}AH@!g8zKTEI39*b$cfH3 zopEoQPWnlEpQgjvZ`^OIIfkk&tobx{7P(k*{@Oi@7iVkAX)?T4?eg${Yb#{7d9l{` z{3-i7J~=h*=HdnS+&hzZ&a+M)pLs3Y$!-2;S>4u zF2TpG$;B6Rr_E@iB+-9AFWvHB_Up9cX>%+-HSe%@;NKc9Ei}u?@d>TiYmxl1urHg= zJPR}SX!>;9HI_pK>LTWmE&^zG^Cy0_Tvr2MQU$6bP#Sd*11A3Zw$nYC@pS6`y=`*#emv>J zs;xe68jkMc%od1bMs-|Y(CcyjMAW#vyqT#+*Hysu#Anl$H-3M(=Vj|#=eHKoZx5Bd zo%f*1UD9XS8_Eod(F@b_M=l!1`MU379#vNl_-J(?|GkMhx%jwNmSa+lb-_8#&~A<3 zE|CxO9ym@+E2Z|Oe-z-pS{xzH(C;pD77q&U*2r9S;{JOHUWk1lSD9>G(5DuDLB7gt zv&{8f`knmtY9=}H-X(jcE+l5KtXesx{foBQLD%**#~qR*-emEd3=w=e`G5&;iG54f zd#?84v8o@QJ+ad&&{ZNaop+ykVVCpAEvZw}27X=;eVIbx7gDTfC`ok=>f3)b`ShH9 zWi85LP)8PhZbwZ0e(!H?iJAE{Csla9Rzdbyl9Fylg$eJUx151rOvI$)LF90zs|jyL zi5^tCoj6-x-Ddiw$7921&rHwuyaWpMvhu;_b_v0w9(P|i4gGv=(x>*stQ9o-)9>wI zyJ6lY^`kR7A@}8t_mS$`G*7Lmu8ZLi17+oR@8;su)8!{;&;6~sJYP{=hv7wS72@I0`YZg@hepPsC& zUvG5t)1-?|C-Z|N3Im(hWKJNM+17I zUQ*%-mz+q(h80Q^T<--qQt6Qf@zaE7bUypw$!+pjQ>bO`L$_Ou_A#9sEN#7 zQbS&p_ip}qrz5O6Jw{LE%;OSCy)(Gp8aX-lNE)Aiu>8i9r`=o2+Ik(`$NDJES0ORA z60e(6rEO-t%D(@+`oV=uK~M1f?ch^MC~s|J=xH#a_()sgq1vjD%dY2^jQX(1Z|zwD zx%a99*KVkQ=hcSQ^VNilXum@63a@$Gqq!5-sR?L5PM(}yoyWWJ z;t=gf-aYqbkf8g1qr*Bx_aO$;us@HwJmy~xNqRC8D2 zaZR&h)dh3UElF8kTf0oXE1EmK*PQ@%Hks^Q-Mzjd`gF z=c-?(3I|p$C~g-O|Lr_kXk1^6XMVh1*A=jSJ!zufgAcWt)rD>w#Y}CNRfMCw~2e>Nx^0n1@}n?#=R@8O>E&>)a(uG zv}UTmD31O8OXd`MO3R+W-p5_n94rH63>G+tx}4iQ{i#D~26LO_LYWnHdsX0AWrK&? zjON_7EYqNupIp=#*YDO9J>@jv-SY6p;r{k$l;4^1-oRDUzS={MbDeSedpoe&Uy)b9 zwf06nXU~T6gqbeEujj^?@V?z)^xWXp8u5AZa(P{Vi zTI;rJ>gc50{krh$<-nTQ;?9+&<`yfrKB~G@vhwZ4=}%l*)SFfmrmRn=o`_vHE^A7( zH~H49qq@o@k+p`B8L~aW?@U9deC6NgyZlCrDoXO^X*td}SoYX)!Fmngu`0`6v9 ze-ZFdYJXGIMA<1BC(YFlO1_PHaOgnhoPDAt7GfZJ^j>jN^jHs%D^w#cq1Z*KMx%c_ zcYVX+<162;w=q~hWjc$-G3C|L11TZt=BlHbZJC}|oCHbHmZeHtRp8ld=YzCz#q5;I z&W4)n;d>Tt`I230U!s@e{LXbtta$jBX7vlM@s{_`c$#FKq@Fk)1$Mq zdEV1~zDqlpcNT2g^vqQ2zW%bdOKv&qc{EH44s>wrp}hN|@W9P=eru=&X~&HKoh-w7 zN8f~6oVSJZhbrim1-a+elg95!wpvoGy1!=A!;qrl`_9)}Zv>W6N1$*9`Z`iqS_cJ^45!clhKP!}v>X6EL_ipXz%#YWPHY9CxGTh0- zOTB%6(mbg!*=hTuQ#-03ojQHz>+j0Tj&F>I%PL6$8L~Qb{ey~k`;-||>dRG&lI*I} zXRE;cr2!h3_-pZl(Z`k>m5z<#@k`roh-=DUNTd{V&Pokjf<7-M`;k_~*d%uH=GMo~ zaWeekA_j^N9;&OfzDO5q)+$Kp<$PJcuy*E&)en_<0aiOOeA_x?4>ulE#cS2;Gd>0< z?%O?0jYO@eahOWHkg&q#e1c9*pQH~T+#R9-Y4^WgvRHCCpeDrd(|&&JK+ zC{9z;jAq=ZXlTA0l5#wkvpsvfWr&MmyAM1~eoMP??0r$`>-gV~>04_R)ajcpGHjm* zPglR6+ut(l-fmi*@o}g2tCF*EbI8Rm!CrEP^Tz9>oZh&;Wqe2B3dPucyF*04u+iy$ z(9(9_T>LU#JLBWd?K?Zp#@*m3Zt!>T4Q;JH-ErsgyodIw?pDqU2X>pv5llB09epvu zZ`vxZ-IiJf%4u~cR@aw6)g+48rcjp&f%|JJ3mvA`FZ43LUAAm&EGM<%&_|&j-M* zWzyZ}y<5vOOqC0bJq&ktK-EJv)sDO~=ekOK3oGOD9onTi!k zs^WMejD;X6{!s3Vu-=1&Y3Z}<4wjA2e-poK?8$c$Cf$yV4YEo6+H&ocCE1^QCD+P< z;q$!C#>)Gg`KGJM7nj+kx^Hq%U+uES_u;g8ChsCQuhM>>)%7xlRcI&UOFD99f7$J; zYE99p9gi-K<{+Xbb(9>QQ=^Yh$=&I@D9ZO4Zo57gp1P!+=y-Y}$zy%5`@@?jJ#*`& zL(h!z;K>)5)W(`E`Ze;k3as8!zrL=GUanE>D3;g5eN$B`qPZp{BA%cWOmm z;jXWxU+?4#$C6y{d305H%7LNp{VA=t_hQNPiPP>j?b0Erh+YUPQq>iJBw>?{zCKMM zea4vyUnm(L`MkD&$*&cY=A>qP%$7CY8Qsxv?hHB-v9awp^J~QpQm73fi^cBlI&@Qb z+E>9_?IySL3R`0mD!z_eYXMJ_Z{4{ke5Y^keEns*jrUL7*A5w*))6{WK?ssk7JgmZ zn9unx_0^MmOXr>KidHn%Z@F~sC{#VQKhys1{m0Uvjz^E_9H~SY>P%3Pst|=b+jX5> z?410#&3>0%Q_3sj1Gl`A-c$K?+>W*IRG~tbxy@+HZid>OG&N0EsiIc?8;!jOuIa&~ zq|L$&dxH2ku`*Xh#+t^LjW@k(&=ERwu?YNeixQY~U%R8Q)zrP>>$n~3;A!&g+x4&N zl7jpj#wAzovp?M`_=Nb&VtD%DZp-yfd%woqdk@lQ+U_eG-&4B3BXs655lFkAm+h~@ zKT|rV&_BT?INIxSaE+f`6odZ?cNMEIz}oce(X|twa_{(ZbYtbY zaM$8X)C<%-m&$}izqreFRR!OVm*?2r^t3>K@+nG!peOfwiVma5PIT-QQYFgCJ$}^| z_W5#h=K`_ngwP)I4z%aw3!hi4;4MRY^U+BA*d0ZZ$R)z=z?9{s=A`Ok|5+k;C|{P4 zEjR7%|=aTGu32%TBCL^QftdOd7i9N{gcCt@4$<;{*GT|#j8 z?$>cUVu45cidU7WOe}BYZ{~qYH=7PNu4K~iOS{o#h-E5uUVY&xaZk*Q z#Jo-XfuG<{P8fI1Et<-} z&94>1-a0Q2i$cBtS3P-Wi%S15Z^{fhxu|!(9%L5vGpBKT#^h=x?8&vK@wM+?=L_Ze zVX}QfRR5!V>)h|m*zfDpEH9xXS^s#g7nJ9trV7j_sNMLWbcbZ)y-}*(ccW%AFC6Mz zU>AC5y!!egCH@YNbJYpjk(MVSdhD8c;85pjD#d(NG=1em(F7`QWCPz>(?>inL_ojA zYYZ>-B9AL=vq+{=?A55qu&}gBg4`Nrt=D7Q%Q+FA*P(%3Av1bdE=hr%j!99^orNHZ^6)OxInru?q)^Se0NK)zurPzYig7k-`9{pxR|B(4#v^ z`NZPU8=vK;8t>Ac>hYpJyu(D4=!*luM&}Ei9V|3pXkz}u^vW`ukL>$2ZJ8K84Y)kKm{|BkhkaPe5 diff --git a/interface/icon/interface.icns b/interface/icon/interface.icns index 8dadfd50376cb3f1fda6114dc2c4b4f8b218758e..1fe162f88eb5f4b4bfbdbbabfc3910ec9a3adb40 100644 GIT binary patch literal 72980 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

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx literal 212135 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̓CD3`2WI*m)}f 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 z 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�N#U({jvxfB z9?Oa}^`$s9%C1gnbe|FEI3tK(`%$SM64`L108|JTuJ;+68%Im({E|2?NWKz zLWU6Wej>xq=0Yyh5gZ~2?zcZCP1Ir8F0V0K$tcGC;rWCN6>FVK+2Q0oX_sBc;NT~= zT;K7`Rjk<~z-hbvM*9X6NL@FQP7BRwPuyG|74qXBH&9R)vgkRe+=PBt zj_SX^>Y!r>p5EPSI;_oq!EFa3M%!49Y7jci7(n>vY?05A8})V#PWAVA)<2{)Ry2U+ zogtNcIhC;Cm3hM0T6m_A`zS+N9!RmRXw=;7Mgb~^IuLqr;!8WqLcLhkJukO$LLpvH zVU6e|YDa`l;xywL3N z#qsgBXt4zR)@gGnj1BJ|8`S?kcS={B1|D{eXzn>~K0$1VM)tX3a7j#(i<(o4m6&kr z^EXo9pz;Fn51Rg;{8st}d|g<|i>A*v^u8`Wzx11DW1E+SSz|w`&-B;|*QHH+6p+q> zXRX9(Wjy&ZeeEKi`FdSwtuDD46|3vaSdl<2nc*_P1${JTw;u03Bdx zA1X3%ETd{|BXz#GU6vhUDzSOT`FC?E`{4zJVl`D<0ILfgfWMC-7B@mr6osGE;e*D) zzKY*Z6k(71w@8@JnCOjh0Z#_)liS*Ex_Mx4D~)iL1kJ`#sIUV^0kZjL0?5h7NX+%^ z;Q_VaDffyQlk;L+7b=f8r9C-xdtUV|+|U+shN9h70VoM6e{W0WzQ4#;7lyLGefct} zou7hMq_U^UHjY)YECzZzBt73YO($7aLy#slI!7FDfR2OCbVm*)FA9K&&wC~>k;i0+ zMsblUm!G~U8ndv~ZtzSw|2S(~+GoOZKuhKwZySlZ=NT6?qvJ3m3O8Z02 zRtwx!fFeZiCBw-+-M@V~H3XTGrXfG&{XA=V- z`9`DjS}9F-VBF=Ude+E(^TW>#LQea8w-BIhP%kC>Q7kAh5eiD(q-JI7kq9%i3q33t zP1L|)uxcJX7<>@j$!u?CCaP*qr#_~3>JB}W0~`Jr_n#c~L_87=gfQ|XlJP+xHR!6W z^KI~x!EizHWtx`rQkzM0pBil?mJ@bM?B>oK=7%T0Md66l_ZcGqdLGk+FI9@$yO6%{p){`F<7>Co}{*r1s--Sg8Y zytRTXq*U_t2UByaIo{D*rCMSRL!Xz2C#f?bvTeNeOU{w&8JHlleM<6woQc8_HJRrW z?H$#6iz^fYFcK5vUuL#GEMoJ&mI*+ppV&u1z88?`()j*7Fi!Xh$$gsDTUC2=VQaSV zg)2YoZpUxljF(vJFz}%GL8$OIhl_b29}}3ZTXnx#xsQzMi6RgZD08Ty29cNvH~6Fj z_Pn8`)m!i9)=MRb&KvPQm2(e5>Y#%iApBgB<2%Zd zev8UT+&O)5t4G2R)j(N2n30N{t=$@U-~BERO!`2bYklP@-I0zV)Bup+kP{w`0iY-Y zH2r4QvS-b=J?wSk$&%f^u`2XHsZZUNefHZ6#!ATaV|c^dW&D*yc{*mvb+wedEX>NS znO8PV!Ho94|#Ki@MMm+&Tf^U4O3q?sOMdw|-sRfy2>N1@Hz-j7eJ)wzBslpG^o$s&?an!8%1CBXRjA zwcxSN6_UCd>@mw(f-F5}y_03lR=x9Cvx(m7@aDgfdO8Y(lK*BL(b*yBZQTVEYDu~5TyDz)OX*ORi|9$)5+wTfN}#B_z#)J ziSmbtz;2vHEc~tidc*UbWoDVGWScZHWesY$LZlsqdHfumP;;FEUP^Xx+fOYR=mJ)VWAPVK)Nx8MXUm)221F(BPvtEzV`0MGxZ}P) z$*L@Y$mFBK+zBRPN-fGZN=gNQY&FrchvT~%Lll%btfQo1HqCaK#&OZx-$qM4IY{$6 zuBT|Bv6^c~g=CjIyB`y;xjY|IoYi!!p)V5FhsLtEQ~-7sA!0i+yZ=>pvD55$?=Gw; zUiaYZ<3TXT8Dj^=zqdY0b`UUB6QB`+PVE^Qz<)Z@GJ1N!#jj4!ox?{t_jXg;w)4}! zV=t*4csTESg`KE}k!SRczyua}QFXa04c)SL%ESGE~hPTeORC*c+_NLPM zd@b}H%ewA8O?{Fiy-0{-%4BGS?;^?w3US`BzRN z#7;si-oqv`NDQHzoFq5*HMK@!h|I~W`7dmzGBT+G-1_EKHf&D4Z%$iiKC6dZX}tU= zqFHf*n#P+I34{%hh)M z$-&wh0HDK%6kjzY#^F3weO=i7XJenIW>fdXys?kj`_!myZ)rw`fkVQq5V_?s9DHG~?}hMuirUp@Mo**4y%ZgIzXn}mP7GhD{rds*r*v{Jc^qzV17 zLE$hvOje7m6TgQ!-%kg8eNt;Vef5^=LZ!!e&BuL8sr|FZh~jQo(o5slv77vz z6EWye?&~|XGLenovWX`)nOigIN%MoawRC}*Gsy$q_=Zh=k3ft?82DWG!72(b2EwoU z?2~ao)d@0igY&VI1A+wHt0ZXQMn!e2R)uW-ZsN~l>|SeQy@mnm4vM)9!}%I4})}DT)7Ng*Gm3^>yZD4 zi!1Smvi;uAjKSElWQ&Tj@3OVnMx{dbvah8OqLiJPAymk|lr^%GeJL~}Nwz3!*2!A- zeK5=O`;2N??gYQtf(?j5Sx0^a{bK*M%%)dFB z96GiY)}~3tXUGhtt)k2@N<*`e4{-(4d2DvOBN>?_pew>Hu7_|4T+c}Ogg(~FIP4hz zoJ&@Mjz9kyO|pWwj*ShZ>ooth124`Rw)D~s;SvbuA8vbXu@S8G32;#+$E z8^7!0n6+=B*KK>dum0o*&<{_q)tjR5qa99W*!!o}j2Tv9S!8qI(CK|CzP=BOBPV-h z_B0zD1y(A@ncfT0{4Gx8SrLGbuvHo(1kNr_Ns*`xXLzrkhLduaz(+=#P|$WCg+2Ptom%FlN! zpQm3Xa?AE|;_CuR<=K&foz8%~4(e>;&jQ|hA%0Uc9ZiXSr+!+)?($K_pn^u*IPBGq zw)85)XTWtKv(L7CMMog;fHM?j%Up{g9Fc{k`xHwaEtV*qtJ6&?QN1O-q%?117!96m zlHHHZ{Sz?^8ev2kUyH(Rdk!M|+X-yuO`h+5iM4)rh&?WW*Mborqa^NQvju~FeW@O` zw!qRZqucI;PR(kxQ(9{QVieDy=i>_lV72jx<4ZDUY}|8NkR>)`0lxvlE9$q#P2j63 zccG$wucR3NgN_n5jKyax0I$9lWYK(LgQj=&Lwc+)7~YXzU1s|kq?%1Gu?T|PHBG#m zFqe2hXCzQa%1V$P0HCc``B%1A2fM!M4Dm=NuawKK2j6?pVMRW_O+33GWY9V79?@#5 zqs@4L>-70?$l3V)Qv7Pgz`A=-K~2EesCq#YzB;4#c9vlXY)&B;moi1YD@IebA!PR5 z!sfMol@GNFTDsxXVaC$H4|Z!BbZyED>!=>JTCir=Y@68tv+otzAfxbYYcfq&@~=?L zm2uflb8&mGlE3%#rcF<<&leP*@S5sN;?X!NKMpNB#7QbHA*c^CI`uhMIieAWrNG0E z=KvI8u6Q;v6!GBbQ)_Z~*^S{x55uiUc$YW%e2d77N}yiTuCKSjpHLxc3!Pxj(!LUu zxRH00J5LA*C|PcJ&J~j!jz|xqlXP;kScf*+BJ>`jGmUzCPRCeopEo%W=NyN?P;o9s z;xP1gL7W~ac*pbXj(K7*VRp$nYF)j^2@Dqk6be4S{9dA1bI@Q!I|`Riag=W~W5peI z`TFPd=st&6s}d>?0fQs z+ut6QzUxfc|~s^nL%7ef>(nL z;x3QNEZ%O!jFCYz8D}<#YuPymNjL|5q0d_N&ef;%e>~6vUJ_*Wga?ibfn89RGDK83 zEOE5M`sDV*6T<`PxJfrRJQgSjHJ$7IENPy?oBohQyybdHE-O5>(p_%(tBg_%3$qQj4^3M3Asr*0~$6|^hqqR!RGX61OOeSB<0am6cjsRX>3&K}4uI9BU>DlDH~cKZF!+luH%4;XzLi`?ozYb~ zCtU^R4H7ucD?$JxdUT|t zeW}ctzgg(4DB8}%GKi(w>9~sR$bnl$C z?ITdrZX4Y!`{aJ(Jo0?Oftcvx>9u-CM3!ShUVhEA_^sqYeeul1%d**l0@P0KQ#RBKQps&c zJ8#XHDm>XhS&>O;-9a-#e`%|%HMpeuYa>4+#bS>MOSd{kqzr4<;%ZFX)Sy|}#`!&{ zO7BFk?k7*ULrr=e(s&IkvEjL>!7kePIrlP)s2jA=F4>Dlgv?vn(UJ)lT<-0^ zw|Q}7k>eMy9I;`Gr(bLuqb*}(ufdsi(M<*t=vLzVX=yq0<%tD(WjQ;OR1uX=JGJ!Q z;Q-78?z5>L^I+9sjF#sl?l$$gSvqQZ1>S!7`=S||{4zbLUg^c*N4T`AD<^ex~J}p!} zR+<#EZo4NdMX1zV?*fcu?(AOO@MchSL66`UTfAayd-6{)A!wT-7$Zfl%||^8j)(Rt8rM=cTLiX8!XMdUK*FE;XGymZhFs783i%fjSGz>V<{mBj(&U`o0-A>p9L&a-0^Z^| zpU#l^hNWh`@9bV>qgmiMW2cb;7*jyidH(!UR61S;`kg3qSjNW`3eUtt#}AaSvgd06 z&_w~<*N)xH@jm;#SnDJmq-hhmZEJ8kNBC?zQzdj78EExaPs)A_%~1x}x?)xoZt(XX zhkPBGA!2NAVM}%*f483#=0h#gOZiL|EqN=euH{6Q@&a&Q>bCD$ArRn`$r4j@Y@aZ;OJ8k!KsD%%RHKH#6NDf( z*v`ryg$l4*6k^EM(RFKuA*pc8Jz~#YVt7(Rb9d6w@J6vp1+@^4lM+)X<)29Th&%|Pn?F~jBB7LasZEZLN?kYeL zzCP(GJ!SA5rZAyiy|bWQ+^Kl4f6AWW==egNkLHIL)8K;_88H`MIsjCn}4ROd3(tq&h)&bmL>OAu29I+$mK#_~CI4 ztRLMu<;?Qra2`p^^{Yu=_-?MY4sA_UTCSd6=6v#AGM#<#PUrlef;bYcLayIp?iD{q zR8GW*JwRl?4>WexHbP*olQl|htM9ckrqsGnx)AY#2mNQ9CxyN|!tSL3KzpuWx9fW+ z2=?E_A3jbhTPc^77;42OFa`;Qo_X$1;zOqT)+&1_{dImiWOPacU)Mt z?Vr@3g9d8b+%6l+@YR(*_j8})Lit5jD&ZPOy@$jHol_kAS0q_b2;yxh4W(vU6lQ54 zfoIw4Tb1*mvY+*a3i z6+9)XbB%Avs|*$#bYc%NdT9h%-1g&^KL3GgRMZ9P10+1&H1>rDoQJL~g}z||tM<9$ zl)EYklE)fLl3y76(f!EHLMGM|k>@`I{ONk~uTjHH!f1AXLc0CPZ&kcRYJ#i_O|1iU z%(ZAvNFDQjg-w4$Rn+*WyC<4pOFDx(GNl^4Z)OS`OXrt5RoAZf-k2WQe zqK}BxPiB4@o-9j_Q1yHL#mRc*Y3A~C(cA^&18E-%3Sr3NLwu0-efpi|Y>;`OWzX{2 zt+9;QtJs*_W%Pzl9PNr0e|-tbc>hS=qFCBa0q7Kzyym|8 zhUq}kyHc*FTMxD+(|Uh3%df_n&7sU_Qqp#`uqvP#Y zIvd=zXwTg>+0d0fLrSs?L!o-nC3&n>b;!G31qag)ZW(GtQivWY3dJdi zbJ%jcvm_%LRT$=}Jw0-^uwTRzi69{J75Mou(L&5!Vm2sd{x47noc#<$1$bV+E_wl` zl!{^mp9C7jS6c?^a?V|l(*7Wt1DSiaQjFTPwcwhrK$ zROHrzd$0k}1_^!0s)zv}0U9~_CbhpDokn&sx(-P%?DM?9jK}D@oR(%pM~R?-^7ZTQ zPQ$c=56~C>YHI0yhwyh@4M_~|2Nsb=KZ7l1H*Brh5-B|BL6m$bQa%!3Yh!wykD7T4 z4Xb)3!QaadRMC}2w~t|7ZwF~nadGIap^K}O*&qQp1ScGkbq&rBuxnj1ybgEefT$9v zl)csN@G+X0)#R~g3*jYjnb|~_E{vztg@q83+sy~{%>O8sEOii7duF94w`=I>hdJ@9 zghHqQ6SJ(#5ZR`izg+Z8*5^*>eS?!!&TcZ!`u>tMmwCjq*3BuAXSlZU4)$BV9|b&<@M zd5sNlr`(WlWP|Y>Qn*XcXr{mZD8CE@(atjz znJOzJ1>a@^Y|g~5^TC|QWAB4eZC^S52CY^EmH|*RK~&L?mIT!8?>1eQEmIIR##mU^ z2|~LThpF~pPu}X=K#uvsBp14n#z9|?XCuxiDBh8L421)^6CeATp)UNmw2#Gn1MJ9w zy|T`3@ae4QWX!k8T-x`a$*oOfZqNnyMeMK1;wZ%%Zgci*NF*aty#{BRm^tX*!q-7% zrwyfOn>Cgj3J}5gYdYwr|cwW)})MR(QLO>2ET#XWV- zNs~v#`^26BG97E~b+Y|)9eqI!I-R7yf5#%q54C|_y9O`tOG(m1H~JB%c)!J}ZIi+~ zcm)}|eq-ob8MvdHpm%4udXKfyJ>bF1n2frJBWsS=CIs79xgeM3X# zyOT0~Mk{|l=>D}C=jHwD8dVs0^xFeUuj{}g2Vf>$-kG!un|OKnx#AlWY`h>k(3TbU zxn{MtiyWjygE5`~R!?~tqp7$aoz$SBMpHvAH2{d6gs3MooShru$Q3tuKCP0ds)^TK zQA&>ax!S+Ucl<^flIb%Nt;pT_x5>uN3|UqC6$NTpmzKk9{_JJPAy;INA+7TI|4 zj=&e4zso>H4Y7({XJ|N?KxxSz{2ElaeE;#svId_5tXk=E%unRCy^;Xx&oye3 z(>|<=1oy+6$r-<2QRuF}g73l0{00hudag%SLJYiIl4Yh^wS*M(1yOdFb*+kKw;39{ z`5NX@GaF9ZC<6ka+?UzSjymfF|EEzy(6O$420cK}Bu3@}JlMltHy?8uC9UeAxNNIp zQ}#q$=jLDVLm^>{RjHs%G*3&kW>rePV{_y-Z3i-(nSeDL2y=pMoM3O+*~I9jj9~Z$ zUJ*MxjauV*JK!SwMy+V?s7u}HaM4$Sdvq z=}LU4CFjYcHx^J-FuTNkRMk*5$xUbU4GbOBeXLie3iPf(^xidn?5fw!%t5KN2PxDr zQ_MMPXzKyM3L+m5Wbu{$R_S_V8);{S+iYV0*llcp-tl+zK32!EDDoDh} zO>V>?Z1Rwz)9SsFPYmb6>#sFz7;3U zXCYu0pD`*&^nA`^;K;NAOQ|tGD_w>z*{RVM-c3Bs-&FXR6P|D$0z=7xPy-U%Xf(lW(KJWW zSR&0+;~Y^xV!{}$zL5zVboCB0qXmsnnpqB(L@wET4CppGen91Gh!mXt1bTQDvzRZp zmV8e#^>?M{1)izp{Fef8!S))fxV z!jL4}ePa#+>ZF&y92|Kv;-v!m$5p%Z*3Wvdfxki`CA+i!zn zrJ0G%>ZPwCA8iRz?i3@*44Dx9F#`T&|lbV(r3Yl_o+$uv5R0t~cE zwX8eBvA-t;r3i~xbc832)5HIH3!s0R?|7YP{`rR?da8x&?BR|#_X1c8#QynVeZle# z?HNxleJQgtMW$4R#~ELCnU}1Y;3-cv(LAm6Uxrr|4D1kl+h)h%aGu@EwZ}y*D3N6J z5qslty84q`Ba=kUj=2f<$~U8hxFDGY$adOkqPI&EWEyiE!_j~2pJ1HN1`i1TaGk)f zx4oVO#&AKqRzxuZ&-lOl-%Jmn=A4m`&Gms)nG{R$8Dj}7DYGdS2JB|fUja~r;aR>= z84>8)e35G8e#Bjuf(=jHhvFE;an5(fazx8*mg3L5GWqUQk3%U@pAt>1VJ806y9_=W z*b?JalWsQ1j&q=ivsDP>$^eM8&I1EqlDQra#te*FpV$lr7+}wn04U;{(g|uAE~uX# zwbx2O2l;OK$5%z(uR53IlYPv?K(S+_Qf-dekHLQbjI#k~CSlw(b^kqXMCpbS9YpOe z!e*~v0&9_g7q^XLF>tAqTFnz;VRUY=*g!Nq^riVC!C#g}4b`N~l#9N4b}>m2O_?%j z%Ly+Pt{U3d^WI8XhkyZZkWsf8zTfE%>p0+74>DO4fBDogT-mH3Ydl6#+o9xGkQ^B?&^LCm;mgkk#f#I(MR#&?{5FWM zPYMtup9j1F6TW`hwGEB9`A^W|FaJsDeI{)pE+Vd+Mue|yDsB@qW8rJMO^LeB{swtS z%*0n|@fcj7oAozewImd?>=!6HnBw&Y-5T~C>4>pKq)Bu#*Mdul@X)>U`3U4sPtNyT z4x8R)PseRnCRrDl|0Zc{EeqVC-+#1SgxWT!KFQP_DJp})?mrsy?(3Jhj!XN5raS8t zAIF%akb?Dx?Vf{}htd0ZNRCp*os@rjy2DFO^FKIWZaTZ6{`Q@7ys>-nJZ98tD{jZ@ z7yA2~Q$X?8yBvSLo#KR+@RG*3y|GlH^bt<8oJMQ^IYHLzqEYQLm>e_&U$djk#KGOa zqua`0X6J;ht>!r!cnyG{%AhcM6sn3rYjm&2*^MYqht5BGppTpw_v&0-DR(9NbKZ?!G#=OPez;fmX%~6n($@nQJUGKqZCqcV zA{t6ft$F`g|NCBNay?<9GLAJ z?61bc&v~N%!Bd6(_mAz@%}=NNSUN&;KgvDPLT>0oA)i1y#S}nMU-` zQ%^;h?8Q7>73(dk7R8_}+M#na3M~kWQQZw1AKUr#!Q%!`p%*_@exo#TUx^NdU@hn# zVUjDqRm5`&<1J@C+}3z>`7<(E%_g6g22>jAh~4}LO;O67-D*=*;Ux0B4fYtvkbl63 z*9xV90vF^8@E9G71`!N8T0zCms7*M*j3OtJl~ZCD;R?a_Q5u5!H%%>Wy|ANf;X8TQye5uQ>JYhv|hX8Q4bPBtj)$W$fmU~XU#5yJ&pah5vaPdlSv z#b0T7)`4S#&a6_8v|R-!8Z4?#gx+whLfEClQjA^Gal72G!Atx~tmhtbR6E{Jzp;$?;e9w!5=we?8~5sKYF{rZ_xojy(prjK-BRPF ze}d}Y$yT;O1H*g+8Rf27JuOV2-hHsAea>CX9|8R5C9_&sZ}OWdc5#Xjq!H>%2YDSy zMi|r02{8yNUVdbDTBB6=y_hfK47-S(Q3k~N!5TL0GGu0r`y?{s3IM@5KRI^z>50ER0VLmy` zf6A_|5kf3SX{CO@9Gv%?nj{H5)*$)}hhDB8eWhhb$C|Z^fm#|;!BC}HU8)^%sGt@q zWslD%XJBN(SF%-gVvg zi=zJB^lECgT(?T}xCExJk zh@Zx9UOzCc($AOroF*N2!c~MQrIq30Z_(zMVAhcUKoOL#&4d|rpES@@HYcjQVLD*4 ztrZ^$3e2&I%q$=+2u%@#Eq7+Q{O_dx=Ozc_C~g`Q*?McfCo5(9MT`gK?1ZrMe%#-7 zv>^GKtV}fe%-I~$d0(ooc6mD!|08S&kMXUDwGcRo$mKQJIs5 z1ba|;#R%-n;Rqa_?@q1)MGJLB*(kz|ALr+Hkc?%U70y=gM9sAz~7*V&k5myhsC& zOnAm$;rVWh=|SN@>yP^he#&&a>*TYJM=Y%UqWy@Iid-j#qJITd1%$klEq(k)1@Jd) zu}f1Vwt8%+h>-deSZJK}eviR_%qGM!m=$YO|CR`}MD)MtGU zn+MuC@Ebj17@6rw|2n0GNNPH0%l$zkC24cJWEHBF-;Kz=eU2tkyb}VV(|k0mtdcU) z%L#+z(~&X=1aX}S-%D38j36%cyEgN$tA>{Vt0*XW4#j4YoGl?^2Ep9{BNu_r?s$*Oy9g_E_(+ z2wL-221Fj$n~N4K0DYmNsE!6}Z`n;dN93!D-&9eY-I&r0@aP7WK{@7H6PZ3PIN4aE zhAZ@t+YG~?6Hky1pYylr$MRHbv>OuUZk3^gx=*l-xM@)b`h|QDeP(B%LFInIQHKq} z&BJdHTFDQvYwH-i2tJMbx+B^X5Xs&w8C}%{$4Z3CT(9|NdIR~+RI9d!c#9{4+l@L0(&giSiX?R zo+Yl7id*XHS0;w^gNgP!PRmly#umgh#sxLRfk0IsT@D`r`g3_#Jd z^Wr6>%quKEgAi)Gzt&q&WV>ZRG`H{SzD)0TW6A$a27$Zsq7zoEWLhvbzE_vFWbjBg z=FbFyZICbw`1;aB7FxO?9#DBX`6DI(^`R#rJRZCO>MwZ9-8e*(c?Ez39UbGI{G-3r z%EWXz8>C)NIvTFHMXjrgw_tRjh^D0=Fz5e05~uPEd#?u&iJug+LD-^eLGnfy|NAfW#Z%?Po#P$9$_!!yEP`^p7M7zGEK$za5Q3ZPC1%TMK7(9G^OOS;Z%$K+)<+>X-D{zeb z&HOz7K8 zOJ8gRW0jav`lj9@;rqXZCto zxmv74^Q3aNue36nWoTmkY0FFE0VwuD^LoXU5Uz`QXW#bbsOzw6Jj3c2(idJ(#tDC9 zph)937*Y2y;eRq{E5fc-89R@@PP`@$zr5ZbOe+ZKa$bGX2nkC>W|IQxxqaG;+zhJV zV}s?uWz^%^Gk-rLcrbN794(hrJZ}H{)BVmc$No{UQS*M;Wz@anlAsg#5bCr%jxK+9Yh`{Jl>A7>%``w)u;4d!@zV2Jf&u~;7sedfaFX|k-y_b> ze@2WYsi75}$RT}sC2kYTR;%RM&F3rbGVQyogJs%L3tuoHMovx(|D{lVgA1^;{I>G)<$7FiuWI`kf7pQ z`yX^xw-o6)eXjg2EnJ@o`B7r+?s`3FEr+iLq^+W@5;EA-Erdd`d3Lkep$PsLTgW$+ zBP$b5)g2uza{IGt>>mm$m;0DMxBMoV1R2u5{*-X25CxztyHF_k#6%lI!G>5zApv=& z`e((~r;wjTb1(P0E)Ia(>BW4uze8_yS?;JQ1S1ikM2n(VR$5_AkP9x7eGWB;^0_#2a>mTH|OIwfM zIV%5(SvEfw0*MDymKRaLn!?57GCt6SKIWydy#(w1;z(VoCQ`a1{`Ax53bkZS^s{4X)8MqtB=RTRQC|LTzynH ztltm1g6n+IPrM1d%kdvLQ*8?j3S`n*m^X9VRz3Fu?}Q{$H3+nLv9*jNN#ckBN(#JFa{eCTmFc7=e?9rsk?N+^Hbg_)oYF@f5tq8?>)d6^< zFqFBC5bkxQGE=HHMdx_@PcSW*q*^us>Itm1$*<2i{FhB2aCRQF>!54UnQHQD`i6ii ztv+JS=v6-Nq9M%pjR$G!e&nIiyKrDpsBOMB4dF_}Y)4dE`}R7$TvL9&JfB0vxPJ92 z9KvYcCf7Ayr%ZJoa>n6v(1~Smg+x!t2gjUE-4#bMWG|$wlHnashL_=#2BmG75)_;K zy3MgJ@&H6&GIW2CDmZmSzhf9|db*6X7@m{g|c)zFCqIkJ{Y3n@0(S^Ob z>Gy?xq*D56r184vgTv?HDh^rQP_K)5Dm__nGXcExv-HE=cjVRbm&e`_=Q)OWr;#nY z0)Q*GwsiG3SdujvS@KNHMMCPtX*87Hrd+}q@pJ9-hUc}yt_RzT#EpP%`&Xq1n3^&-?*N8Joa%+t#i~{ zvVSW`dg;5=!uBPsx3_?~r_}#!S_r~4o0-nEJYk^u$k31s_NgDIBhc_Je{H&JX?9&k zf4$8EWO8SXEMU6YL5-1wII6x*FM3 zca7A{2YY)HRdTcW4+6n~=>26^|5rAVrzAp>?|;GygazJxB`kgi4D6qho^-81?j~RQ z8S>47H??5E0|omG3ZG^D1D0F_{yry*xzYcFcsL{oDg6X2QL-R($UTrOnA14FUhAG=j(aeS$# zftac|`iZE_`9@EB-`_9{8NP9aA^TP#{VZiF_P-mps0g$c7ufHhlU40c-oYIc>F`Ya8oqWqm$v%cxKn6K- z!=q;w$H_zRxV}THQy%$k{F!NLJMr>Zr@^Qr^&>!L+Is{d&DRs z#4ZBu*>LsGW4*q<$)Vxi?Ktpl&U?~(AIG5LS?j;LTYd!E0mb2(Y< zZ5_DG7yYD;<0t6np4#1I@@qi-)9z##jV3Tm^J_LpC;v;(;C6B3_&X~%jqQ_BG#4DC z{j{1$A~T?|z_e`;;{OHkGi*=UXVp_p%fK5K`}S}C;CM&GfIsj1%UU?zp04RMCUV?v z)z0dI146w|HBCcT@J30me7;p4(_OFIb<;v#eM9$18;DtV4-koXt05+P_`FZD86<%1 zzkB@%ML7|Cb;HR0{2Y5Q#IIp!(lz48n=}1Le~cKn1&L9lLXGrs~es%w=^yT8q<_6s=2-0T=Uj zB~Ub10a4Ty(eTstp3?SINJ~d~dH2E(<8fr0MP8lx=_*b%w3M+GQ#T7uJgicD|?ALlijubcE@L<-LFtA~Ad z(w8;s&bvvzt66MrK}FR6`Z2%36fEsCL1q@3n!&KVgQyAIeUNIs_h$U<hmzLm9&VQU#VZyY#mk~)e7RMO%3QuG7Siy+G3kio9e#+x`npj$b zWf#qgg?kNY$&@yPw=Q*gD$!c$jJ5L*A@$bDqIh#DIAvt&8)NQG_{(kd<4k??737x` zm$5rK54V|vxup7iKv9fwAMxfbVzNo9G4G*c-Z+KZ`j{ENu70*`ot)#`5S0Hdi11CX zp>L9%me4tOv=aVnN#c_`42n2at6h=&+g1PLT-f`rft3oYE$errOoLC+ByA=+vit^2 zbce?%=)a{Q@B|Ua_JWKgOi3>3x%7lnHMoYq+R{LZ@>;xK+%0v(%tk)wHj!(^lnRpN zF`D;Fo3nwqO0>_Fsu?nquIRBMKc#-ww+~sHCP{4Rut-Pm$-FNzwELeAsG`HAL8S{B z)v1AsUVB%n0zKaKUHRa z&nkw+0t}&V*wL!8-mka*Mpkz7tNp$aySkk}4_5Wldon{2_O&|e2@9os`EDhZ%@!Zs zU9de`5o~2&ey#SqBQ^!5F+N3?wEpFc56F>w_~wjf9pT z@_l4PjcJ|b{q;0Wv=uqzwj9~=Ciz|@c*{w%1ODF)0?<7oG2On&;N?f#cS}jDpbtNB z=6+S+qucpbWC_V+9XldYtu}i&0$2m9yyx{Frp>40FfYyV-v+D)Xn6oSln7k=ji6u4 z$*4977nLfLu9YxvHOTVh3;pemAlyNv8n^gOt#`EkW3zZJ(f{?B80es-( zW5*SI_rg7>AUumV@W#y`iDBBJ#V^Fh_9DN`fQfnMXZH7AL^(wE1Z(Z_J^O4>XdTLA zvR`LA{Up;7Y?1`KIFawKA)stAD3~BWgzg#wS}KZLr$V--ZBJHJ)SqnWb>IqW69+eS z(#U#z+7@(w9+WJz_j1i-3t?{Bk0%SgI#oe5osrbUls4DJ?-y~PE!58$Y zY1@&q^VoN3MqZOi$^%!zl-Jswl)s>zpLv(H{dP9Qo-sgJi#`Zurx zKCVT$iQd~m>Ney>!6PwOj`vjd@=1_9o7A}(3-pQGMl543m;9v{&Z5C%(SpGP-E(E}<~*Kqzf@>mk#*xNl&p*YAY>`qZo z(S~FB3;N~Kf6kpP2GIcDT_l+=xtHO}yKU1n$?qRH)<-*n1m8jRw^ih2xn8~>%+!Dy zG#k0!=f_YcI4v4l_0$gu3BO5}irGgTONc!zrEEyd>*>6u1}NG?;5Gz;wQ)G1$ws0t4uZ*gYtOeJ)1=3XD2u014kXg zYk2vN8UVQ4g3V1I{Yj5`-POjU$)TNTyC8>we<+X4+7oq4Vg)hNh#cbY;nXAa#|sa( zZiB7f9i6BeZ(e8ou=6!yXU2+CAU?Ugf$LI~6j@=A>FLvzAOE&h@HzGmZ4^Uas zqe1?qW4R*`|a{+xN6bNgvuXTMWX5e(fk}!-88KS;ibPJ-+)Bqvl>#l7DVbKP$T( z>GI;Ym}?Cb$VUxpGylxoM(%NT`rr3%rrUnltT zyZQ(y6U6xUBs*dBN8OpGluzlgCmAF0_6}2Q^sS=qc|H3~#r)(O06!vUG-)0tJSi0WGd4xo!3S$KYly##F=43O@_A1W$T~|A%a0@)Y(&o7LIMkM|6z|?@ zIH06+$iY#4ei?1W4>yq5TgXmc)<|9NpLi-#N=8rRux*kUn6~rVA@c|ay(qwfYQYjd zE}ohxQ;RCVD;N-T&h6yyiLW!_yyRvlXCS{%{}-hAA#~N*faw~i4(FiKrIqvw>44?s z)SazcTpN8&=R_}?Pmd1HU^v>gBWukeDEVNwu<+7+BB;0-xNju6<4tvQk$QN?C6XNY zstkH}YE_}d>mKjl$oM8Du+y|X^l@JkH#z%#_=oPtS$aEbL60&N z6u{rB9$g&*ZS^)X_b;*ElX*BqPID&rY|e8eL2=uhm(UiQllL#ZCB^<1OW;p|`5jCD zBQ%@N_^(dPAGUM2mU9ys=S)*JZ0|;3P_j;EqeZd+?0VxX@*t5fU547WcD*YzH>T*W z;ik>hF{H_Uoz0#1;5M@e$xq8^zqz00a5TX|po#QDgk)E}ogD60Uw(cyV_tb-)w&Xt zCI)hv5*E5Zs^Lc*)a-y$T??+${mB{3#Ixt5Ozs{3PzXwWMp~_vAMtkF>n1_q&{?Ci z=u-N8JSA9(zqm}#D7(IJT30&Q- z#JP!H2l~lf^5)>D>zv+KWNv#$JCcfD2!m)xQ4@ z&Pv~Kab39cy9=C-SV*D=syEK8jZ8i%Ur>qG!(SL8fHFi3c*m?}QDrmp=juzf|%W-B*BKGz;7*#uAbkuo)zNNL2>D)K90 z-AL9w|3m3Tu$QGA-OWUcInm`yrLqYQ_SjS>n<|&rzSPM5xLJ2^eJJL8&r!H26%OXa z^?(a30lCN{>U9kxygy6E39@2`(h{?jk-@g=NfB!*8DdGv2`DB;OSWeRoY0rBGCTMY@2TO&Z`AWB7gD-u{a|J*xujF&=VZIA z9m7(nlHuV9%I1>=sDCxJw!0<$ybkGgq9uNOcYs#kQg{|)7P;Q{AufRLSDr+)R2G1( zX#a{oGQl;$WdBG8>c7L5w#MP})zPl%yZRDu8nJ3PQy83AKJBM;7@noYp7F^h-I=DH8LqXl>eoQ^vu!l0VoniwwZbZiW34I z>Q^S6KkE)E9Y%TxX!I%UEYV+b>#QQ5w|n%=+V<*X<$RLz8BA}eks7~|d z{zEnhHK3R6bp^k^_CAVhTIJ|5>;?c%@^SR~Fxd}uye0PLAs9=i zks0O)p6MgGubuKcx9WJ-;Qt*-5(jQ9=#IdXOpG_(rRi~>d9I!xE{o2t72lD$9nLR> zK`G_x((0e|fYq9lZ`$waStR4Bs)=V!9x?{<@nFw7HIB27M5tc@gX;|b=MF;X(r#d< z+x8x|eq1>@M38wSD?1Vb$=KsdU%L95WwvEuldR?T81vVX#tq@NORF`YYIhBJT=WWP znn%LW5BY^U5@pu4`lnX=-)tieBad@PNKf@{vH8UCBk1J*H~GQg8%Ho00(-63v}khI zjqCB?CSRhRdJYueQXo$x+eYKso?>-uuXG3U)Z)$G?t#Z~Ha{)Egd~D(FZP%7;geo_ zLJ50`@gOvURO%XfMk%q`KZKN$)_KcIEL>Z2wkadV%v=363JQok@sDfpwGC=%o|?F6 zRacg6vM+a>&==6?$PMX|TUOr@j4mY{zT^lfmngP|oLd>XT^i%>UCjXQ?&$jaRWR%o z+L(aRMXi(6N1`%#3;^8mXsG%uxUu*kQbve%p&os2mKrpgEOujL9m*e_GFGopZT0ifivnw}TVE3AGPm0nIWvCi3)GB-(%U!~t7ojY6{~Ez ze<$xr*h)P*1Q002hEbLUWG6z2(=?kq?aS1P8S_e{mHjLTD{|e>FDeiNA)D&z#F> z(MOWfnm$mnc$ygaikKij|+}Q1V+0$CbzYZKsjRK5?1Lq_H8hWl-}i zp=Y3ns6Ke<_m#uG7lVkWq;mJw^C@ZiKX*K2!bJSesEvo;I`fhGgK(cI7o9>f3JN&N zp3G=p-}{JM{z#rD;7rJIU;u~W>YY3?UT!*5ioA8pgJ#L^+W%NF0&5?k?(QJ|%sl|~ zl~9jwS&r?zz878f)%#jJ=y{A7A~M!yy9(xlY|WoR*4Cg`Qsn1neda*V z#yv;hIZU_8fzUn!m|jrsc1heNeLKW;oy8 z+`b*Z#?vCJXDjhkM&nOPHB!Hqif$KD{h?&!%BzGY3`$Q2V?*t9TSyvrBmTk}P(3_a>~eVqk7u)Ic}Ol{`6ay9x}m z&m1zan2JDa$Vo7MuxfIwGs`_63h4X6e9{)cW^c18`Ardzj=FQdLHzYiz*0Vq|Iz~qxr7UD_ue_LDn`=0`oLi&te_VWtKUDqu{yE2BELmeH zTN1L2kwPJp8Yz-eLWZ#`L=i$}hNPM-CE1xaOHp<*F(V-%q^x10NOrO_^LrgV&-3Z~ z`v>OCd7pc^?(4elw^f(ksgYpfN!bMr7wg|omEghDNhR#$ zNaVok*wwq{KW3ViUY_6HcT8&QCC1b; zTOn?FxF*%X)=F8I6+NSq`1h|CBQe*y&a7xWRP&m=5tlj1v}GT>+Zy0}zm9eM2gYz! zwYJ>mrfJ{hP>>UdajbVDYO6Sm)mesYDAR~_jR%$3L10c{o$OFUkaGW-|I^n!_K=T@ zb?^86`e;^QeR#>fKxy=f#7Bp>Q}$ndX0scK@mrF#N4p_jK%Yy}IaK^5eLHTI9rHw_ z>gMx?<8190>mix0Tv(-A(#6>&iI~dUf5%_SDTdZrmZx|?fVY{3f~M}hx{!!-1tq<= z6H57?@3VqF-)Fl?9q{hZIaB_&0E%CUZVFThVynrS=Mk+0%Yo z&$+5XD_Ao1{BCnr?epJ*%@Nt&dT?Y2I@8vJrM`V8V!MMQb=Csaz!`r1^6Y~v=LTb= z+Q)qU{>L5{!Hf^*`*^>hrk5Oj)uPIYtnjMJjQUl#Z3!yzp$nJkxlt##2krqm0hy79 z)`E^c!~3njwaO1{KxrO^Y7IjuLj1=eTe<%qDhSUcjhugJtv1oHz?whCe>Y%wDoEB? zNu#jN;qKZa6}GxoQg53xpE59mDVp`U@lCg!)aH51KT&8h&1ltF$qBFdF2otROOglk z0%%UOSC%o(rT={x%*UMTjl?f=bH$qL^RXGF^;uVzH`22UUvEE}yLDt_Olt!ddoP3S z1%Jbw>9XjQFO585f_JznIhUjuWu7@=%O4ntu@>A(VoYf_gte?2XU<;6VVi}c|EI=2 zAtf)TF0i=mrs-vpZ-4qL4aokAx-hR(oaAhbz4an=--=wqZ!FEP+kj8M zMtyMGaz3!Oz(`=Cf=|!Z_;CZSr0MWn@B>5dBcJSKgsMhQEf`%9ycw48S1vJDcxS%a zy>@YQR{B05J^pU{VAX|_>i&+Q&rxe;E3XRcHZiqAa2W+IEA5L>`&nm;<&eHj3n8D? z60_L`K{&yL>u%tYXV>UXX6LW*4V?ffvt~uj z2d#6>Y%!~iX~v@YeRbAv$&FBBqt;JqaLWr(i21a3p+N%c+H&|RW#h28cekC6OM_{F z=)R|~ZU|47-Fx#(uD9j~D9i;)AZIi_@ak&Qrv68=DaetBku%O~Q{?DJjRH#_t;N~v zA59mBjw_9vtF%BzEgxh3^xL>BbGAGIYYOA^xo^X&TuO8HJwqs2*GzYI%iBkB4ZDD5 zBvbaqE|&SwHnz;2YrYbQg4$p5zE}MEE&qP6*sYlHjU_(qk;Eqw&4J&hJT&NNXLp_3 zcbbY>7iX7D4);?HIJW}2rI#0W-dZ0q{#Il{xctfZfk=gA9FiFza;HGuw zp}a05-9~qvB`t>!yt<{2+Bp6SKEyeaY(A>%ZP3!WjkNW^;eO)v0sBESM|TZ!iXywl z09`U#O@e^zFuA02V)kD-!seA0*6Uw9Kc6QS=k^Wjh78)pR?I0PP-}ZZ@u(Vs%gKO` zd)T=Hr~8i%{vULi1hInI&+8tB2`G+QR@4@=4vSX3Z~gtq;#Pq|qIrdZ;0punr4+eScxG9X zHuP#Ku%KdF-Fp|Mf$i0IZOT^8+kKq#8SyJI&nf+Q>!N9^Efypdi?h0i*KEKM+v;tv z1)h)ZI8$z;MaXT(QTe0rh|}i|-x^U15N4k2z{%MPB9>#bQH8OEzj*(88i8lV`D&qu z;|2AJ0m;d?+kFO$+{I~_eSHx|ns=TzZTFay&2u&iSu=sF+cAGP9j2;?(p(k==-x#Q z=*BUetVnfeXe3t5jV~z$2t$!|^?0QMgfXSidNV2bHCe0A$e`f=v=$4-({+@JcBi(~ zT{Bk6Pv2zQdooHkt9zWCiw;hZv0QP5sAZwAkSFu@mylmd_8?von`jO&}y}HskqzW zZRWC8LYYCpnUEc1EfEWVd6$s6?ig$TrddOr!dXNC_z+WHT~TC=C-klxN2(!N2a25v z5H=~KU=_yYdK;<0IHweTD`fDvP2;bwq^?T%#Bxu3ygb$V($Pgeig<1MW+_apg?(;~ z{PLad8fCRTECvqzos01X2~B7y%ZlNM0;>Ti4`rc8$S2{e2MP~jqjy>Kr$qUN@8C#1 z1X(UTz$4Z(pQC16Se51f`)UjvER2|nYnLB>-|Ekd_;&E_$-sXgjGEXg?UrM^Us(ZDvk!}#_ZWIH&l`G!<{+F;>76K>dE4+UQwPj3JC&6--c$K zywZ(hl!*LJ5@TNSb89{Kew!Ac!h;eJ<+>P+hTcRE;z(URYHA+g;4gXKjEHBWe<@ED zN2wnku#Fn)=WLTAS$iZTrfbsgsdjgpKe6Vm-4_p2Ib>0|oj6rmRXkxs7pjxd&}B4g zroiAm8gjPd63U-#TA(419O%X|jrrU2@YC`_H22X5lD_}9E$ga+8I)eaBf7(zuJJ7+ zetC=R@T#It@@8BA{pwI?a`jT1Z!Jw{~Pg%Na?pTJua86+~;abb$d7j=VJmUUFGZz6x zemW)}=O}!rdignp5pnG5Um76eHp03r#eGTrySwvpXKY5z`!fP`+Vz&+ueYCAyQF%; z=VmEp0Wi<(KmV&nf`_U4vcXq1XoOxL46uF_P)Lo4oVf$>lFUM0O8gwbmZ$fZeB0?K zdC~tvGAEP?imd1b){FBy?w)X;Va@C^`}hM>oP>KVVnv}VO6ho?9_LdA+E$%|j)%0p z=hvN(w@Bgm(B$*+<4VhXm|Uzl(ct9va;j4i!#uV`xNA-^7|4Rf5It`X{JxH3PmktxIXmeUlOm94DvbJp^_~}J% zYqEmnmb7$uW_R!7iv9YYm(X~&{JlINCa8B5uQ-BK_sZjCxH1j-)UX%F{8{bI zq~iZ7r$J6&nEqFT0?h*n0n;(AvkQTjdiYc&)zktXoe{{b8x-Xj2Nh;K;GX3D^!zfU zDAn|sJarw9=-y9=O$L)gDv@Vi+sW0K0pi|;*HEg>4-QTmj@(#SW{f ze|sEpcm@4cdc1~VZKws_&)M_CL7fGKcz86l+Q1E+%V#6oGp$Ew9Fo|Y<6TSv&hxzV z@hyCKL0aMk5S z=w{RkvKOv}T-S=6>_=SO7x3JzC>Jdf$5=t`b#ob=_X>U(Ai`8#sKO%z1eRK6EB2Do zIg-?wfx<{FQ>x3OlxjMKRL2j-i&4AQ0uCsa{I4xAO&EDg8mSAc5W8u^#JB19F7coI z?dVh~$Q_9^Wx&_GZIZn=I{6Li<~gUUiTkUEUKLOn2pSTDWGe6> zv+d{<>|XbsmwVjKfdjXjIAR_H!J;1Q;Ugi+|KucA2w|7Cj`~ohqn*ys8Ms!nEwgbb z;+txBPxKQzx1k(G_90#VlGqcE*m%>Ew)OJ?u|>1SHbcCG1I+un9^c`iCF zxa92ih%(NmS>(?6Wj>2PNH(-U_&P$ofSts3p^S=qVhqc5`~5N7_z+Wt6h_#MXoo>( zjGWcsr!OV~H=C^5_)HUm^HxX2s{y%i-=`k3|Mnvf4lpcK_41F=Pqy9C64P(b4OF_O z-e!Nc(-F9HidaQgWP4*i_C`Jww*aWmqFyCvSGVH`<<;%`L|0v_NWEw+j&9?&m`*+Z zAbyb>_nVQJeNcry!-Xq{f>qs8@}D$I26&SeSdn+4qfbP+Z)jCCIS~Vm(au+^IB08^ zOPBeWnvd|8%t1~d#m}xc=*2eoMZrxZY2k(BpuRxhG3 zw)tXOngN+C^XJyn@-zN7lEDf2HexqU&g^OZb_yFUs<3zR#eZO=0t3cgVDqU8hfce9 zVf2%0PZHPeZX%yUTfLAiro&pjk=~CptRa!*TO7a29X{%}`!UC(@P6?mU< z4Sq^SZ}3Y?A>Cm2Z?wDaPs+S&T~Xu(^_yuYP-K$?Ji@LMIU_V#6j%Kb4M_$Fo6Mfb zy-=U7oaUGRy4-bF5 z@c`?|yVvbV{_BO_UnIVy+xoRF166p0SF0c*s2PznQLK%9U<2lfS*Y(ZC7E(e2x&oP z*`T=KUK{Y?Kt2>EbYbb=bPc+NO^_|--L+kHyW?Fmeqj)vUo){T>EZY18vBku20$h@-(&rgP*a9A5q zaOsP~zmGwt0j&vMQ@YDP)~W^w2cxE0-#J6B<#TwRmu3YMEz50CJSNmqIF<5eKXo2F zO=^M|jc*2VB%Of3m1rMxctT<`VxTMvsrE3vvyo`rjU)8{0(^WaDd0%(%#OdhI4Fk6 z#;LfzTpBFbtcqhWf^?>0776}Ef;8^iq~{*xyV_*n;A_ymsB!QV6Qf0K#}SBM>ua{w z_5|wA##Y|)e<;*aVKQ)Q$HS}L#~4P+ACGz-DM^r=xm~gv@oz$TD=}xE#2#DAOp6`r zn?4wEFIOsTqh_C{pI*%aV#kGJ@cSgdnfs%?qfGWN(;1IgUaZ&JD3$Ky{Yk)(I1&9K zTHJPmkDfLn3H&5UP+N;*Jq29HqyC#R+p-|myUYX@1(&*;<#@N%Wv0eNcCNTT3E%wa zj6kvfee=5|V>6!RkOCFJlDN*(E+V$MFSbl%`Z$$V=~58E-Q6SnnWfN#M?xLcgJa&0 zx-};6yYsF`b|vyB^IrvodYyB5Hs^Fu&hootj}@27Zl^rY>jrIH$vIL1-L zR$v)Xu-9rTvXe8 zehhs)eNP*AT);nlwv89cY8woz8A)a#TUP_WeYDo$YCt>t>D}hFWEqq$dqz5b);`XJ zsb#5Dvp{4FEY zB1VJSGyb7gY>$v+FI(vxhG`;+=D=ZYdgy@tpvg)+`?-yDZX=Px|5V!&YCu^4%w@OA zqjH>PDA0cWF2L6LIB_juOy1&>zc9g=v|CN$cyce8QHfkOUse1Upu{7k@|OmOgW0dQ zwyrJ_bO$4DC)-aHcW3f$>}$kc&{FWd3D3tnUdmKTbH)@wzd*7vihQC2$Jokq*J{0y z_&Bx)#1l|tq}Pi-qfa)>F39TpM4uR)VKL5n zP1m1Nd0ywB6`Njm0?OXqmUJ&|#Q9gDf{+lXbwuKEK7m^$vewf?mxNG^A;N zZs^?W0UW~#1*R54SA}yz#{P47xT`Q{hmS{&Z}4$)^LYy2H47~KKs3x6EwZ*Ab6PVr z=l(o2ZPtJlM3db_EC6b<@!`HtZ=s`b8)XFceAvSQj)#_~7u(3SMM$gec!!3@JRNWN zX@5FdNWp#xuge3AA28_3T1+7$!+#Nj?iMgie|LhK+N-GkN3-VZwdczx#v;*WYvYF= zN#MTt%x1UBW*^FLh{L`>Dg$jQJD*K@iGkH$=Au6j)AGj@fB@l~SryfHBy65NO3rrf z7ap-EPb^M%LSD!TLrMl?c#u+@qPDJ?rRo0y^1aE}FHhI!hu@C`AfH%X;5T!*9Qb`t z1Ss9zPkA!3&m6nA=ccEhf*e^3p1#bkEih}ubyMDJNidC1sRG=h4+n9CHFPob7X20< zg-2X^Cp7MaBFh8_o5bbMX65CC7R2tDtooD1Oa!zpQAitRE_!6^U>?>PvYA;`6)81y zwn{2LFm~x)y5RFEdGex=1wb{ZKNZsc8;V9lYhO>B|H98lPk$^m5KPz`0qW0ByYp8x zLj)ALtqPA=rsp;awBi1vTlI|?c}s(Rftd2Gb#1z>tHqz#7S*zPv}2#`{H_fBMAYq+ zIYxX)LiC=(f}{Ycvy+zbe9Jy>7A)7J(a?GR4xdO#(OYLF_-EoK^8aAf5(*yiX+70O zrmaF*i@M`c=D&ycnbR&z-`e^%GsKX{TN}TB{dZTZ?e_D>xDZ1#`X^Xd(@e0CeycKq z$AtM9(X7A%@d(CavJ8#uh=3WEqyy(GTl&r(kHMevzDZ()eGhr zh>_zP7Jp+B9B5_Uw9AB@SjIewvVX@>*BeuB$~p7w8oE;7J-W~J~O z^?SvW_+z09`KXE8JyKJ5@gp{DiSz6GQ`Wg>lG@OwOc>$on;j*_GgkO8B8=N_#^ed; zeU@4zy6w6{X|Od)?!y#Rc3X7DUHQ@-o}x>D7RP5CL#adOpPDL!(6?IADDG&R%7}iQ zpnKE$2b%*HZztaVvgJxp8RwQxcR+^UT08}b1WCbT=Fwy2_ZX2p%hO*c%PD1?#lF(0eJh69HEkV#0S7KC#@=yPH&Rn2uyj?pJ3mm^*IKU4mBg?! zLxE8}koHb?!23C(ZL`RK0Y`p_!t91^sb8XnZf5IgVg@3}g<*M@0;m?Z7z>n*()CLh zx#9fzLqaYTi0JB(Yx4lnzE{%kz7=7aoigrgY2W+WRcM?Qx0X7E#-LAKPr^`Slbb|K z6uEf2s6o*`=_7>*I>6W~u=*qYl8=XeRC!ovhmF0d-(2eh;>)F1=T;4)Cfh7cu#mbc z6~HzLq-)zjSw9CODv>ip&+@m;q^e*=Y<_d<>>%8H3mBg_NArJ70pu(cW_npHYkk_c zirsuV&3&D=@`cjgXg?vNuy@vHRroX4aq2Y~U}Y4xJv3qRAY#NK)5kZ+MNF`Kg7~@-8dGK_VWf;ql9#P+}vZ`v@@P!~o2M@l39ZS#AJvqksZv zaU9Rm1`JOW)MAzEY(cwigklQGL5tzSwYQfy!X(6U2n_hH)XPo87NP-omkvo{w*kPBt5!9(?0^vc*;N zz?Z20jikY$)}jTOel_Q3lW|y89%Z2I_>*Ve35?sE0yJb$GZK@DvYStLU&RLq=j`EQ z@P_y%OA^otd$l;^oB1&~&K?}&GcSfd{_l9fNam|BThchEuC>ze-Ag1wZ80$9`yTOg zd#ne4=9Dk%&F8m?!ftOBDuAWM8p_B8$<*MhD(SU<9~N$;Y{5>)7T^nCo1?-X+@LE)Ru`$spk+g*+dFeItJcI;}ahQf?VJqE0|oVPFS5J9ypsgINaD+m}iSSQ@gz%lh48vLcdz4nvXSxThJ1E8?$m zi2RbbNNf+>Y(2;dY{G8#Gm);f;>oF>{@h&idA|*>NUC~DcRThHTNL^>z3R-nun6l+ zFnEIq-{Jc}k^n*4&r=1S)7GCBe?UW7BhmvVOJlVi4QGM|4|AG2pV^IVs;S=;SvzJd|}a}TKWmL7R=Jgk#b zkx7At&q^`XOY_;fW3Au%9Sl8vyq+b^wTc`_S?B(NX@glNxHUZg)>dyq#d9w2ZrHlz zw}8OtZ@p#&GdYY-!QLm6VgrN;WhB=kF8OAD0tSmm^e!;k!eI5XX9}OG78NgAS)OIj8wk>sWXD{woEK!0pv)7cdbxlwCz`##`$mh+~ zjt{L#CG4w#l~ z!BYVmQsLDX8uEt70*OT5zH0GB?Mdz=%-Rd-g4NMt6md7ylf1dX$XC@@n=)*gugqoQ z9&N>ac}Lr~BKXzuk@Q2X7OyhUcK69+@B3I^&Sl{{qSs=xEi8T{v)?{Kw631dq5v9a z?cERXe(l3C9P!FK>+nGGN~wRSRmw(f``p8>y> zP-4bU9r2rx_w6~P&=~E)z~T`fLkfO}!XGJIiSc@4u`I%2@Z+_Jyg7EhY=24OIW6l! zlP9NnHr*yQddejYA|97ucn}g=a#bXbq|x?Mo)HWTI9id$wq*;~Ufzd8IcJlEF&>T@@4`$cA}fucx`6TQ{bww z?)1G+^Z!IO+T=wgomKB!{hi%*G>q@OI2&kovfmDZ-Nu~2$3eSRWsoPW zlF{BH{*sSi!T1s0Ja@1H8IMOapC)-k;t_UF(H!^EB0n!6A4`jW#xXx1H4=p72P&RZ zC2iej`oPprmu*D$i0R^YJAs{wKZu4?<;%rhSD#$yD(nh7MoouHL3aD+Y7;DU7ZI9A z0bUWTNUje7jJsB_MJqoBk1)E>;S@)-LV?l;Haq4F0Zcs0YVtBKu3KQmYwhO$UaUVq z7#o>@&dbk!EydWH@dY06u%7VPyKVSs{sR)iT!HD%l|;oREkLAC`i6Dt93kNFw~&tBbEiOFvN)~uPgN4-)5g1Sbtzp{`q#@ z5A&@}!k^Flpy%H_ueXydhg1fHZk*~ocwBA<8WBxtg#WhL9Ys&BWjw+f(>5*7P$NmO z-R9jA1T0lak{qGe{2%9uF|_ou>`8YHaI%y|;0#p*iwB5w#sX_xnE&z|(fuj+;o-!B z>a#wxqt8DP3j~mp`G{WFai=Y5GI7{otlp5#u1#W+Hq7~y%G6qJmZ1VB+SD_3JUQbD24=amF0-fLKuemMGD}g-v4`DZ3-P7&IuuzRK zMs(%*mRM7ci=4%MZ^En6*U`{=khNw%hqXeR0l^rnL_^L5Mm2G$rP_dshe?`EI zl=fuq<`RV%MwHkw^op^-qS#Fv?&)b%VPD61v&0|LES}$3DS9dALlJnTef}>!1I9z4 z%FL7BTXX`1m5V8i@TfW77e*)g2XS&2_CVb@xvO6e-LL_F$FOX-P|xhralZk3lUZauQ~+q>d3GTTvh3=1`gTL8>%m&yo)f{;FF`77C- z_(qHQP(3^mY|6ER)TE@O&?PN*|G zgE}+EH_FST?wV(7#&!{rYYifp$BO+GR zR5t>hgN8(4rMOTa&;5S&CS%{01yk{3jEm(8a^(4~x~m26B@LW`()1e+3I#yJV31I~UKFF+wf1WIMqK8xZ&MzEFE*A4 z7pu9sxlbv&>_)z*Jpzd!Z;~LOM#6pa8A8E#2NdQ8(63F%GtxRf$R~2;LEKtVc!UV2 z8yIAAP}*2wRPK69#!Ik=-!Z3%4IK*(~FKsSnWpxj(JMkYD zO;1~1at_v{{3taSUmI>9SXSaTX9ZBi0+7Q-?4O!eO}KMR1x`B&44oO?)y%I2b_;ns*Ix z+d)Z=l;VA+{M;`0StC1Q%s(HY&^7=E$kOt~X$3iQmiV#<3bZ^F=f2*5y_5eZrjBDp zkA^Hj?@Lo)Z*}Eo_zUaiNfL@U{-{CZHN^S@_T%VS4L+arcItZl{_VLL`p zYqV*B)hIZlHcd9vnof8gxHN^c=`)7<69{nPqwiTFZonQ46Fd;_*StOGooMrkZ4^F9G(~xI+aD=e}3S+Mp$J?~^1`2YQL4Y7~N1DNee4NWSYzK}+ z2H21DNQaTIL$BAGQL>Wiz%!g`SXr|ewts!DYI|qBl}O0iWy|ohf9N3Htrh?_DjYt; z5fnj)+KywW33rc*&p+Q50eq<#4dlHw(1Bwd^X&m500B?VWjtb=H)ksGXlW!|h+=kH zxO$aXmlc#r*8lY93cML|FLSbfLY}fAw$tp^X`$b`8I^DZu;2(_OLz+Ik|URi%oIb- zGKCbZ`Up3Nz}$p9W{cOLD@JZY{%a!|l62$J_v^+{yTS)?R5;#l_5F%#`)DFZg~ZHR zfdSHiUMkUa;&_&UW@4=gOC;c0C*4lq!klc|un|oiwBA zMQLL~zHL;#w+;=p9uXcZ5k7??TWxdoet}THg4JK8rL2>zO)4UW@yj1lHTsGvc-D8i z^&RRjnJSq(a7iQ~WZ-$8!@@rS{yv>zn6VAnF?j$To?l2IopTmG)Pa)|I3p>S^YE7q zlx0uy)>37-AbpcbV+xzY5LrOxt-5OA=>)V|k=-`!PNDA|2MVm7t8D1>+`0e@ z3vOF20IK9sTptY2m}d~{T8<-qjwrG#7tl$5Yga`fNvjr8NR-c|7%dL3r!Tcs2t%xaHUdD(@93C5*P_cQ%R*o~yC zK0GFJ%J9_X`m{7tBn}(Lx!l<8FU)*w^T2RIo)Bq<0zWRS6xX96w;_i~!cBmNOd8yd zN0{9tJrnFYbdXdsEmENj77x&2Zl{sm>=f?4LDNi{J`|SK2BvMF2EdWB0_&)h?kF^5EuFx3J|dQ8IYi+oaC_xSXvhMh^@ zPx*q^wE&pNZC$A1)q$gC-!u_#<|m-Y{NtPjPe>P(g8bXL=XUaLz`itV>e~nGg~>QQ z{T?!XqfywnPNFD&j84SIIR2FLD1@)DHf6yV>Y$e*VHqQMCmca zi4Gxat|4K$qD`LZYLJA{iL)$2l`JCsZFK)^Ms=ibHp=59*_Q2iM8#k!N7(RL@j)Xq z6i83Sl0on#Z2wdkr|SuK@-n?YWboN!Ugqk@@$^N7}4diU}{#K zZ0l-B%DQagnexr{eH-EhLgk}be@t+K;=0ZJ9{$40ch4)&OuD$=ssTE1)F%V*yeid> z-ac!(q4id4~VO+#u=G$xSRL*S7rqDwkk>6wKnu zkqNv>r~C6HnR}2-2ea0f1>CWC4waC!-^G_mjr=n-ly^T-X3?S7`3{3ipxEm|A8jnE3-4BS4RENl8@=vBWU$7Ci#!54PF+syz! z$Ka8ouAW> zI2klPgyJcA132&;_nIv)*cK3_bYM1caP@&fRb1U~BY{Y#tzT3)h$-vk>lja1d>TPn z0MwNRlk=N%{1?vVPXMcdlb!>w4A9=?0eT-aGB#d4Y@Wv6D22={7@xUkXvi6#k>I9x z!th74Jq2s38ok}!0R%;Mps`=x;$Un-sel{DyY8WrHir4SFMHj1OsM-{$4blP4l6j~ zJsd&eo>reyWji#dZV~}S?h&LRb+ahglw?rH>6U8`j#(5fl(>ad16aDjTLILo2;K6* zfx=lDIZsFTUY!n|*ko@v#`tAbe{v=8%h0Q<^{3CPfIKCU@EsGHcYAr@kC(6P+l^y5 z3o$~!(2zkng%oTw2&9&R7jaV(^WoCyEd@K#$NS6_a(cu?c}fmY#TxATq!h@!Y{UKm zKMY-}7JHCFE|j@@V#(1{kEhF_{|U)HE`}TSzO_lg+G>NYhw5h1S~ERF7!LYTHXsk3 z#9YjXmaaarf=4_?I~m}7#SUG)V0gh*UGH5H6qXBgZvU;Jg7QT^k`<{4f~|9=FN8zq z`^P2HC+b_n0&9D_k2?kGgh|l!R@tl}9jo(j#>!#g?&MKW`U1`^+fCO`MNcU0ifPW& zjW;c?AD=sBRdvx2#VG|yUkGvx5TF=$8<OrIYVH8x-WoR>EyZpIJ%n_RfX_oxvlOzT>;fP)c-f@D*Zic6I|)#_Ew7#Dh*B1Lu$o)-t$8?4r}Q`h!yJ5b^R1r_iMVv_$gAJAP9z4; z?DWyA&;v2*P7^3rgCV-sM-zClwsh^Vs7>f-gU+N_)|$_yXBN4-GkaHvp{D((;qhxf z>{yKH{%3t(_dHlEo?O-7-9da~k!P4#7aylTKYdveC<|Z~TF7OGd}&fQ$^Nc0$$f*nfu`AboUONJR@(l@*O3Bm zU1iD0c&BZisD3VqhxfsU0%FMaS;3nm*>!|A2V|o7ZKPIFBq40g zu^{Q;_C4Nz7PiuE0^^+Bw2%VgvX(*^OO+YzQyWv93iR=I249(B4QD?7{kC|<{<3|=Wu<^a&i3%m+1?9UaqiF%bAsPzhBgG+oWoM zJcv`wfmroJUx|~&n{i^oJP2B9FwzzV``zCfj&tVubat^{y{tKJpBpIH?WjXGlC*y* z`Y?B=(2q}KV>j%Lrbl0nF%O>Jcv6RWZZ}OYo+eyVpU7O0b$Q0V*J$tMm31mNx6XmG zC0qL(oCVh*Uf^rPBjP`I{T)OzsHD;=3MK-wUcFdFAlyv`8xe2ZeW?DEyl)KI@_F04 z2zc5ZWCYZC-Ti2SMG4{{_8F?5$wfWzGoE{j5#QGoSdm zFsgv#Xh9Y857`yF3BO(s5U)4X{0_b2xiRj(kv&pbNN){Cl|8nOJ(iogsa;%z#g*Wo zlFOU;xUCsdR4ypE@pDe)O`#@Tm+E?lBc(HZvu1AjQ!{%7*FK2pwzoyqL_E0!wY-Vw zEyE(0>sZIjbTnlf&JBjPe`s}?WzC$On5aLclCn=dWu1En+h%_J{}RXwa^zwWLKV;y znxAMG$|cVAo5r1|wVg`Ab98Edo8`+zw6%j>pZQHL^Bj8b!Zl-x;<39y$_+gA($;I# z-8pP`{Z$rTe}1rmpQP5scDF#!GfVca&~Fv~xu{5271ltGTgCn{Y>>qWScXjF&Xi29 zuz4A^j)NGP$S=v{B_9^R*|~+087kARnn<|n%Dl0>^yDtkQVxZDO&gE#+f97!<#>7D zguqGvAs_m}?vUUe<0n~sb;{4r9*t-FNedYy!*4P#YymJs(-zb=4^c=C^m8jc9oeF> z_0EEHx$ZY7Ifm8(V6DV(euT}-gZlBqDXF1#Qxs2HBU&8{s>ZhYB z-_(SPvwweVT6}xuW&&F;NmwX+e9!4;f0WLWd>Di2mGo-DMMT6yn`|sZA_MdgQqRFC z_tl==41a-{fIucLc}H8{uscFdhNCFGnV&!<)p2@viWAOIdlrxPb*MmMRx5+wz7xat z-J}iM@ZVh^gjS+b&+q=c4#W$*w30Oa161PSesg+%|H;jYtl-NFW!W=6%FNVe?wFl- z0DVG5wUyT1yIG98dDa-RA7@IE&eSr_vWQ)xW15@x&B|bHa`<4vkme&e+3o@OIhtm!t2htxGVa z5`j^3>C0^?m}TbnEsAY?t-s_w?^dx12DVb)dnlML0}IOQg!%203Kr?>fK-o_?K z?p)*6KEE2NsXGu!p1qW@LBEj@%^v|dRt&W7@KbDk#l5*__7> zQTp`4&7?VYdZ15llc%JYSGL7&y_vl$K4ag$)NfJ>>hLXGrl({7InfF%*vVI5)dWXHu5cc(TWX_Mu?U;v8JbI+)`-Ox?4x$|wx zTIXhc2xfm@#3Vk8STcaVK>5>c_+eYjVLOA8f4ZtXr#0ume`T{6GSeYTeEr+wIMo1DqXqQH*YT zV%1KtQ!g<~4#7`IfiIX*lt6gHL^Mo6zCkp9FSHKdNL>;p5`m!6qXjLeNiNW(lLAvH zHlohmhq1cudF#jjWADAcnrfT2;hhGN8l{PV1QF>)x_}TxMMaAA-kWskJqe0jiV7A$ zKp-ke?;XTMQ0YabcTtKEigXAh@7m~f-_QGe|G~H3Usx-IwP&CEoH^#0W9HoWmFoP) zbig4e*4sY!tdH28?>T@nO}(g~rl~$wRZsj(+wRgEe&&Dfq2BgdA(m-|flXFiG1&P7=}#1VBpy|a%W*N-Ev^Dv)3 zoZ%S&(}O~bj^*E1DJdI6I8l`~!S+~M%T?;#4%ozw>yVWgu2{EkFKmjs%XL#W1(LZd zKW&||H%Z!kD+|*NJg&a`!7b9)&OShFiDjl?mDMM*J;Qe4oYR$Qi8G!?Gfdf z)ITGN;Cm)iP=`+x13k8i7}D+SV<^>W#4V+(T=%@M0DZwtnt@DkmdMq#mDymU*PrbO{>t5-}^i{W@$$c1$|*Xq9Wphx$;q zvxd?n30CF$TpQBSPxrC*mz@2D?*>PGiGLNLgne&UQj{~iB@L3WjEhpj)u1>DIRe+8 znyC2&EWZyj{{t#$eC&}IVGyg6cJ7E5cd?$H{e!fUB3J=k+)R$3f3L+8C=i77 zuyb?<0B7WI7hoMG!uZ&u8mm4ojo3PO`$*NhDZ8haAE#7M$6ur@eqN5UilLs&eJlPa z_Woyg?$ABeA#?}{siVlHWe6i9O(T5!yU=jT#P&hxq-CATT*h)6gyaCL%L?KSN^Y1E z`||aPh_=Opz3{7IyDwVGCHUK_A9Lh6nj2LXe$*UEYPDX5!t74b$&u{*7RIc9Pb^M` zH-z_+9O%x=^?x(&pMi!0Q`Kd>e$x$H%p2W=+o7<-9yfqbEvwhWNuZ2!j?ocYZuvY*G z95vJkKyc%hxAovC%;D!_`jPynFj-44iCY3zpu;m4MH zE${8?hRxUW`BAs-lUf*uSi?+kr&D!u?nkMIuG|rz(9;&QsW6@WlF1V_7Dc(6R12*S zKWW#b&lhVQE+`v-;H)p+R{FcZod`%jqwgyh(wo_q?XEdV9RqEy{>yd&y`I!3+1vc7 zx7skd90}~&dySszIc#I~EBJ=Hn^c~_5(n%P>v}~`uHr|-F$Ld(wm*~>6&v?WON$eI zr>vCiz{}&i8BxIeJ5kF^pk)kz=YzUC&PiLBeWeU`zNcyWUv{Q@p2#gD>;9|fpt4_= zPl+3CZC9V^N)}b)dSYv&Le9Q-4xzsFX^KFb#w-n7iN@ z1EI^^FLWNd6w!Hwn594%;JG+L{KhSz!PsFW@?5J1%&L*stH05H;>*14M(^$uTNq-#C+1_D6B-s_k=CH1!uwy zU9+{%N<~q7wRI)5=ZV6fyO>S-ccuQWa4R<}>C(`_r*{Wwljq%&OCF7`986_}*DBkI zU*GNN-jmy1`SQfM<|qchFLR=S-tiyJ6NkQo?yZ3eAbUMi2a}76d``M#U8C}G9A%1u zCHGw*5cVJp$Xfe;7Lnwx&lg>AP{e}Bl%@%$B=DGtH3;KjlygR61R4`(^@QM2R=SWxi z!5i#mDweian@&_Ia0WO$L89Zv z?fbBbw%gjxfv>)iY8Mb9a%g65$eZS*{361y?LrrvNpEnMQ2%?y5nYahMr)#JmA0u? zz%2H&di{BKRwHsrKSLgqbwvXi3GNz(A9T?lA7*<0#QQuK{>r!4mfI40uC&jmBpFK| zBmvLGle%@y!=t*NYV6+oBpm-DeA8GwCJa)Sp6RT?^I`aOpLlCx1sVOvWstl#@cPo|mz$Y&HONy!;< zQ`Jr5-ONhu!M95p-Ft)Xp&XPBmKmYtqk1tQp7{16kO1$7DbNxRe#Bwo8AL>;DtXa0 z^)5k_r0h^zIVo^Ez>a+r=IR>G=B?%s$=GN2~2hyT9+ z@4Em@PBnyYZ4@5N*zdz)=`GA_57Jw~?#+e-X6z=D!GP zx&)WD>9#mxQRd`*2>~PS*Z0Ts%Tazzmb(QF?C%#|wm7x=TWp`JkPFq)?LFQz>O+e) z4Eoi4n?fCa<87appUrq(d+4`3-+4R5dxuYtBn28f_MqWU{NXSw$Ukf3Oyyr$UwW5) zo%3pP-(|ZSRgl>g%M;}=BmG_@CG-(VL{$W7uJSorLU?FN=;fwQ>~$KmPcT0_`GDun z)^eg~Lzv^3_au+;BJuTCCL5XZ($VzqQGXVsb{Pkd41H^l93mP7zNdw`yt|*hUARG2 zsL$>r2l)}c?VpUF*$+(ifcRWX-2D2$TS+CMq3_c9a?)Vs+Har{k6A$3pzkS%=bgtJFrvGW)5$&koX(k$hO=CU#m5D7{9Oztk0h$SlQ2m|UzKQ=i z-G7rJOxud1&ZggNShxGQ(DkzFS$qe>yD`D(;XgqhQVu|H!lS;7{{|s|N5S0`yB0eJ z29;Qqzn-RLJV3IrdJQnOF0y_5d3QLM%3F_QVp6d*?-;EUe-m`Um@18x@nYq=S2+AQ zcLNL9$nlAX>Q2rp8`8&G zJtDQrz2T_d(8~T)!6z;4H{Q4F9G0qG*NCoyP4|w11Vlvu0}$9Ac!KBwe%{kX-|PVT z8CGA}kk%Gvzb6_=+j)M>j`0)qviuYoqHRp|5UhW45gWM;ox*`BSDhUV^v2$47x?S3 zqzq*3y(EUQa5w5U)kA8oU%WKkko!UsW#xz>&t))A&%Xm8xbC#_%YWA}ZwN93i<5R9 z1rrey=Jr?DvFbXTzuf%IKscct>CJpg`}|z+;@=#9o)ftQJGV}3Y4tn_-ZbF{6b`89 zw$mN1=g$TlQmc7&2oxAsIzvACcN_jV0}g=laiM|U+Xmo28U61sL1WuTP{92Av-a`- z<1&A)RSQ6HkDrxa_@4&AZ|e1M0A~Bqk?_0!`&umsBoOfOIrFJQ+V$Tby^)|Z`rH^2 z{NLA7k-`9kA6cHLzkBiTP2iW=&_HjbW7EmM&-g#4dT&FZ0H3h)o&ReY02CRJ2|#em zJZxLY|9!2;U_Me7<@rmQ{_{0~0!IP?lP^lO{y*2U!U33;Ys3Ghl>e+{To?loD4*}1 z|GPE+z1IKRlK;0Q|M7)#O(|J+2{~X{8+_U3gr*rm1aWoLgOOa z90nD&+2L2&mRLUE4tUuzc>elDm=+GetUTlhe*i#{yuJ{f4eN=8=5N>J<|K%Iqm-?C zLbum(4Zb`7!VPH|js(cv_rnh{ko*jzOq?7@p~db(8gBBI#=Gc_j$iDy=+8HI?DupO zEi)0UG8wo08nkC%0GLB4@>Xh+f3ZHG41nOIPVxpZgLi@vK1iG!++66{4R(ni z#fB{{QmMWFR9P^8%hLGW5v=6-D=O9M;6fYca!A9vjnh(U67u8ff1#L+LIb6+JGO`U zr(O%)-$yKdPP5E@@^hs3ZhE?^bFz!x@Il_20bbrOa9c{Md^*p|0L2i!VPMfE@eAs# zjHRt?L5ZjwrUN#j;FA{(xs607aQB`U?9BKJwWJPCG_YF!DO4TI33%%x^67fT$y!S# z2m6`pE8Ur81?$3|MY5ht4(4pw>|GCYTiAn z9cth#HZ-K^X~b_swh#ow&t{Tg&sG6aF1H`%5m%)~PnyWNj8yXk_HrSseEQ%p(} z)z_}TU<%4oxJd^1jL62)AAk3B)e{N_GP>fzL2{2Ir(p6OuusONm`1b9%qcvRyBxHM zv0LFXD)vhkKRvzbW3HzbUeZUEXwWERbPM;lpqG&~tcD2jd>kF&Cbnoz;dXnhJNhU z;jifMcO`dsp4EO+nrkb(8yq-XpUId4x$IN-)I3x_p6Lt3dT`9Qo!!@j&(H;@g1nm< zs(p9 z)aQI2yPzdj?drYO(a(YiNO@)ST%_O0*nc@eKq3Ia6`x=UqJzLu%4SfVqHSU(|23by zFxv31XF=57+YO50O#@mv3M-QtJ1bjc+Bb6LBY9&neAH|rgrJNwj#c7EWe7U~Zo7DQ zL@x3}eFaA#hgofQCyu#Dq<0Ok>_jKu|3rUVNMu#s&0F(N{NtrS<>1qu=3+1~BBc`4 zI+=%PYl%wxs_wtHV}-F_Pcp|_HmX!Qt`WJQqvjC%(fe|9{w9Sl_$UtU{;n?@_W}`+ z6YWf99z!D+-3KT9s(qV>V|}Ay_K=8P_2?J_xedZ2KzC(!j;E0de392yQsGDNuN?*7$ZkO3(mbnu{p z=)ui&#b5HGF5FZPC92#a{$`w9pEI7J?RDNPNT!pJ5|O55>ryp@4(`vHxL|(94S%F{ z4zj~{u2o1key`-kAQ+Pt8Q@u46RZr?A>W1{`9G;=to2MG0#nf1)+H(AD8s4;iYxa7CQa z_!t`*Aci)RN=cF$N+uRO1SA>V_PG%V_xnX^W2M>QdDgoJPbJ5G2W|UhIYSxXy}GN0 zulJAswYhZ-2awc1tXCq@IMM|aa`Ax6-#OguxPBsyEy#N>*ZSrN4OX?g*cPX9WMNt| z=V8qL&VWE}9Y%Rnqx`3*+w~O4f{6ajF2LGrQTuyOJCi-?R?5i$Y#aGKu z4R5SB`hGomf48}0Xz4z;N0Jz4 zY;-8S`x?#s&U-;QbRT0YSJ&IeiCzKS?Ij-s+L-4*b^tByu0(s=Ly>m!>5B zwUyI|e1!yuWGgExJ|c5!(Mi4E_5(G0R*_{aK%h9iF$Z;i>d zXI43KQ&vI9c{27yIq>soNp3d5JD+7S4GRD6iPhwTJEitByA`Th*7;QDLZcrs2OiCh zO@)Y|hXTwoQzUxhpwcz*zrI7hjsr-=FKQ3d2`Qd2%Op57Jlv^U>c+`x;`$?vx#BL~ zio_>pwf*eZO72S}=O8^@5qBF-cfag0FY^o{Yv*+}PLumf3Q`>et41s|&4E1Y@D67M zn7W!}>7&cZ2!xyP4!f=Qzs0p4BMR85ME>bjgyiGi7Fn#6cn9r5!u5G8Yg}|kLUr~_ zy3;F#s&>CQDXP9Y=zHY*BL`ld3SofGd(|oD?g90om~>dv9xX}DBkrOpp0sea6)q#m zEMpm(;6$u(Z)fQBGIzloPhb6n_#6AE9k7hm@NQB#OwoEr^{I6O6w{~JpxH(0xTY{U z*oJ1_kaH1R1<5XV_2_R7+gv&oqBo3EimWCH8&c9|BECc~rId&wSB)#A8(%$$>-spr zwOG9;QYAhqJ=7%Ws?@DzVtZ2tgMk0nZ8HThz?7W+A4O`a1<@2nyJtZ4;m~?opve|w zB1x6%%BZxwPV-^Pe-K%2o%^_r7Qc9YMWNit26v8wG52mIV14hcQ;`M0>+cp3z?!XLGXHX9Evr~!GFtnWnU;9U>QsBCxKqPex&lHp1N54 zkS%RjV{!6k98r8d$FoSybLr_okw(V8#$4%ZNY~Y;;`q?^XX0IWlRc0eLtrVCqp-U z`7)R09xZ_Zeoq2lufkwtB!}*Eu(BPUDw19}e`YaBK0+i9P zE_*O*_edq=57{~eGinBzd+gIjf}{Fv4dRIOf`$W9NfP%rIGcXbhRszE{%LVcaHb2< z+3PULPi5BI^K6tvkrA7cLaMZMuA$mz7lP}_uE>(`rhRU%jZhs zMgigTNJ7n?nKsa#&n6?2G4grAMF}rb!g*(}@%@whJ0ueq+=6nc(Nv3d9muUf?dvES z=oN;w*@Fht*{*svbA8izq5gd$UB#WY<3V&9bbUOu&|52%YU%e20nyoS9@D6Fs;o|8 z5RsKp`Qhc;MLYJ8_hWq!ko=K1RUhFB=G9fk1&C{AW$j zZWM=`*bFVo{&Zte)eoPpm*wjf!sJwogQ7=WZU(j1Geq0?_x$l5s&;ImM=^Ok=lU5% zSm!Z@#&o@bkBnVEJ*`;Ct*6h8nIhH7(zi3P_Z?>bJ(Q@)O`@B?TVK2*} zYhtIA1K)W%uDh(4s0OlKH9lSHyr`WQ86Z#{lh$2KEp_vVf9EA3f=tNf*yuZ2QSom* z09I!4k~?5wrknuvDw^}zc^7GPvZ_FAb$e@!yFo4d>#`1Sxyg%txnGOTgE6u&180b` zGvueZyJ)UvA(PKZ*HmRm=H45&*PyV4Q@v)v)oUcr-_^1(#fu#moDsP$n6ZFi4?!Wh zELK}I?=cW$F_{b~VE!9^rWAa#P)z6Y-uqoyZ*5~PKyT~*#dEKsT{Jq zlgy6sldh`bXx@8gXtVz2kPnWwx?ao1uC7s68qtZ|`j$Q;dvE&GLpnUa->YEl=Ja&D zRwF8cQT=cd%Unu1Tqr%Lw_o7C^_UIp2MZ*)Pum8cvoy}8ZO7&;jeUHVZkkAA4Vc9` z+O>Y=eMaN6qMsiubipy61;knM)p0E6`w+-Qn&qB_ZC?s)%cUCA3O9>%s$P>ROR8t8 zbWig_{1|X?0WRQS8};Ay56NWMWgLJhdB{$=4{C!qFdgp{c4-*b1L?-&9Jpnh4j)KftoGBW z+Quf-#8^(KtMEI2LTExRNd4W&USm+=bXOkY2C0Y-2(6#2KAp@PnoRp9Oy1u(%J_^% z|E;B5Xfm8a_G}DBRLjAha~mAF1*vD!z4Zy#y`>beh26wgjNGeO`==bJmPIHgC2|ua z@FrcZ=CJ!vXeN`Gr+4hizmD@2js)JxyJvuE=a3J+Z{Ur?9)EnqmqyjdKI$h^>=$pH z?%_Ss(7;a(cK?nuVU)%H#gR3 z?(lH@RQUci_>TnK1{;O)g;BC}xm>G-t7Ct=&2z`lz^av}8o17RJ_yIY_VOJ45_T_7 zV|mgzj#$xRTa*3atcOXy>KR(2zZ&^gG6T7jY4u4(`_gw~zCpf7AOPDLzPi| z7ZOeu<`-IZyl-XmQQ!1ZC*X`IH6q;k@!{cViYs*vXCZFf#G4NQTaghx0dJJy}HJiWXks3 z9kwTZL{v$`;ghB=q)4BRe0~gyU`d~Ja7c9KZ$hBJc@B3M0|L+z)DvyAp@K3rE= zhd;H2HptK(SZAKIUwUe>A46TXLWTT-T5bwiWyw(&BqNXv&ItN}=C62p%Zn(bh=I#E0!f?ye8!=gPr$-=P7i4~wmm`PNO-Q^h_;!f z{Z)YmnX^7vN*cD?I{m!8xTa&$&$!h60%aa9c>P5?R~Ov++rbGMF}Q|FM|kJB%jI_B?x`Rv6;)ZXEF3ULKP+>bY{3uBdVu|orQT9U z(Cjk&C8xRgjK=Osa2Fb_ zMRZc!&L1w&s7T?~xAhqrxdWmo`HAcws_H!cmH;fl!yU4QuN~&z12!~JirrF^1Gn%Z z)V>irK0^+=EnlZ7@9jFLJDNTGEXZ(?y0}*%H2REIv^glf;i+~UpDdct=wkg3#O#*a z`hEJ1RNa0)LQzQ-clxfWi?*=>>|)#pV@XD{$ON+r?}7ZhB7%2Z+Ji?i`!D`WSEB(4 zU_<|>)m@pc?adXtR6-le{Jp}f?zqyGUT$1v?2*{6dWLpB4D_&3Xy%QjV6jtXr2;zp zJrUN=_A_NE?ZJUt#3w_auXiP_q&Cv-ygOh2Yw7cD>j@7AI=2*n>n~Ysg(HF0i(uUv zcJ+|8xs23Hk5qlQ)*!FwIyb8~O1XYudm_EER{zTpz3z~$-h}dkp3|l2-1_>~00#>b zS5=**RqgsBe<&dG`VZs<- zio|@5{viNult76Ct7s*=l}DXJw!5EfH@R4d?yOhN6j~RWJvCHSIHTC8_Kr-cK&nL* ziBHYEtcW(Sz2e#xH68C>Ua~=R(OE($9g}1pD*e>ZJwZ8mEje~OXuI($A04}VuL1OL zy5N-oIff_coE023uYNa`i}t!_=(MrCl>EZjuj3!NxCM}2%g%(@6PY*chIpTL-s?I z|A;vA8W1ROp!AmaC=|Kz1oQ1wgYEHaE4fO0mien#``NqJssUprEi5SXelAZ$={XxPBZ?)^L@3Gp@-eR>Rsnm{?l9A>oq6Mb?oJ+Ukh~r-O z!v%ax5zj|5ows8LUU-!da5Z029xy*vO;bOrg2*y=!RT~Amx+`5To6~&_qNqD6pL{G zSTyNF)NkJn(EV+}ZfU{ypLQq=fge6%(KG2AO39T?wc*LAtf?BHeI<)FD4lif!rSXy zG0Pca{n2@r97`H_%AI2YIaid~mS=+rmB~6Nh{hFr6sA2mA|{8y_9&V>=awnfNao-j zlJO9eLrVy_DH&bDY#YyfI8cUWfSd^f;JJ>Xfz?xCYMfxcD8;y~5BlAF-9|hZk&fsg zs$$Prt`KjYEDyTi)$?LM*z9E&pC>*&1+q|*V#x8~m*Y8}OueO6uJj~mmb>&&c~wlG zdOfPZ8#i3VKkMl=ZrL%nLkTIhJ+Nl+aOqRcyj!Wzd z@Hdeo-1M)0@Ahl$%4oJw@=wPiVYgIm!Q^o*)|u!-bpulalG1@E_CyqB3OJJWy^sj< zU~R{WEv5JC1=O`MQOgqy1*{{B8Jfp!j!lv}MP3=_0(d3vjGyySvBaoRYreXWZ zj2f=h?-R1(r3!_#<0Yu8_5$N>m%i-f24Bus6DyI13uwK zuB(+3SOL>At=;^_bCF}+dVFQ#vARQdemTA>ImZP@4VmH#T}Uo2m}^zg@;Iski&3Ib zDFKeVm+diVT|OWyo+pA)^(i*L(UBm2KTojwLXOb2-|j%lO4g-srvm&Nx2qyi4i zg=c#L=?8iX7Sxi(6QSBaMEVdigKN4FAbG&(T}6>Gq$^_D;lR^FNAH9z>>s*-;oNdn zFcIQWXuubJFXhf9058RM_2eu)c_m`Aftuc2GL+Urbc@scF(BcQ{`*H8HhJl6!yN#c zDM>hvQLf9h_VdcTAz|$4`RVB{y-Qj5e$DH?A}&X)k3(~bkyU_C<#Z}Sl50rp#C$dX zyDH|WKYCngEQkT9WF4^Mp^6w$aW-2Ir4UrSSK>QIRQ+AaAZz1IFAECAJVTy=sy6QM z;WLg7si&-L2G_DL>XqrP#&!aH_ytJTOj7s$Tq1X`-`liwS%j5%vKW#unRo>y3!Bzo zGGv{}#Ak2^{po95hCqQvWp}b16uI#dBeGR(@P7V;9miMhJf7 zA_?7)z`YvUH10!3(sgzt-qSn7{%6tZ!dFDu5!>Uv&)m9 z>piR9l6Cyh^TMTaa)iPP+VGL6%XG&$m~y!!Ma8rUHv>$(mE%U*8Iaa+zq~5{yulTV ziv&toKhw~Je$SE8=EDNR`V2|9=dbL)cMV;2uVXm-6?cR3Sy$|08g|0^T)$7o}slo%bQttMK3QYxgI0l4El0C z&#BEs`+~|5@|6_I;RgQCVXP1veCY%Y&v0;Ff@LU8E`LqKzpvQ6kv9GFs8@NBwAj8z ziDbMcVGdD#9OrVNGVD_~YvO_#HKQ2}-=&VM$|J_VN9NQS^+hEm~Cr?xX;`m7u2dqcQ0^t zRFcXP4Qu%afHoW(>Sp@qShC6DZsky=Q-}@%(paS_jCYax9e;1pyUw$2)bL3`;=4(a z+45}os4?t5g8U#=6)Y?0t-;b4i}2k?qI=KcOD8n4_9rDCpBaq3vQ(s*vo!sREy#bm zv_Do@etR-w-+znfIPZzXM;${x3qe3OvL$c{qLuyZgp_acwt=uU$+$$wl;Q&^$>fV? zKjsttK7Q%>NV?c^Qe_?N*{~BKh8l^f7@&Baj0IkWut7(YKYoDwe_$#F=zGE zr_Kxl85DUD4J@1_JjA(NNP*N#Ing;S(N`;N{Sy8T5`6$l4|Y&4obYGN1A#AWpi{%_kdl2!CVbNVBT^ zIe$J|;8t--7{t5i`K20R5AUjl*Rg^e9H@ZeA|bc{3gbe;NA3Eqf+it=4Gg? zX(BJjrg7Q&Gyfp(g;MKORp;Qh@p<|+XQ=HAQ(#gf-zROgMes)hOJuz~kNoa`qP!O0 zq%Y8)?uz#RlvI4RQ(?Uwsow!{rW4UdS6$L@Bqnl~3Wv8|`O{W6!U33M7N&+606H#_ zVAjP!j%CwQ*wt{y(p;&P4MFp{Ma+-Ab*K%Ylfz1I)Vwyn^fcPauS}2LU0prQ^w!k{ znHN7_Rz)nhf2y{W6#k+mS7uvK>y~Y0P)ah-$2p5AmTsdgga(r`BHn-C^vD z5hX=NIx$1Eq#GZm$mv#H@npdQI>GP?t{(aEoHO!L_r=>EE@|ASi(rvgI-G44#{h)j zmdEF{0DQ7k!rP8IzrA=HS}3jBV*eo7H0t`|K~9kk-$?3yECA%uq$ABjF2Yeeo{&$F z^0s%!fUo6YM>s8RHCS}S-hUsb@WtoKecNKiaX+EWnz!#t60Ist29^Ynq(jM_zzNA_n$rU__Up7Wov(nE8e3s%0Cv|CpxgXXkLfp9CEL4~y>@8`xEgkm9BJCmE39Ht6tq>4#_2qfYN z7+1PGMWBmP#4&&!_8>F}j+*zw_s*6qz5aP6v@_~Q8g_!{zhg|X+j>!Cdar-Fq||Y3 za)!QX83c_BcB(eqU-$cE(0u07`7Su2A072wmX8YNPlZ?=@!J1Y>wQ$k5yhI=3l3+uk_uH=%aIn#qr zyK>d?YTirH3~rZIG(Z0&+R~-{zyNqOYC2`~Y?sxj@H1@=9?LQ(Dn2iA%0(EzX)wK_ zBO*swcpd(R0|9#(4Ouu%z~DxsWL_Qy{BV%*~DI?(U7l7 zi8Z}4u0oi+*Ll{GCw*YJguIa)lpsccJE~>m?YsN}TYmDNIjlu)pgS1!+0ie@r4`=DPp;jr%ZSr-!Mv`Z6^Y#L z$gZ{&7yi{w&qw-bfpISk-Z7?_p|W`_fx$7hBM~mqEDM3zp3h!_~Pc=IIrAGXTnl z^mu(Obe?p5rIi7J@M_UNUx1JVyWJh(FMd2hBo60>*?uS*9t}Vvr7-|uCH4jE5`gbH zc69^qe_kwWknRk55c}P9Usa1}S96BNywRwt786J8k^Q0aC$*V(8m)&40a>uk2n%-$ z+46k5{FM|YZ(;o(CrRu zR(T<_%W9jIwl&>a-h)KW}f|ud7vX@;kS{|F+!JbMz9nW`jXz3YFSh} z|K05}0-o;Sapb~PVYD1Ui#}ug3V=W0L<6Ohf~0jp94X_--A$^%4DHJ8)4OhNeG^|T zXp9WNSf4p0!f;8H3?nC{Bt`2WK+f936RtWs;6+6 zZN@B44@sIs@zeJj^3KHHpKZ5Rcq6+`ij5P^3(cN>(+IsmZNMHM)&$!umQ%OinXHFq z)>jq=0x>2d#oj+PlL0Q*6v%zse8q7;g-71Hp{C;XZbgNony5d8I7t@*1ymJwK)*3T ze@V&c&-K*4+19PsIr=HDIq3Fs*7(gTn(~ePag#8&o|6KqU?N41;i0r=028E2NvUOlS( z0&KR=*82A$H)1e5`-9c3%N%rMZ|9*X`S5nBPTm@i*vBJlJ1^BIy-ask;+kjBhbc~7 z8-3%ae_6$9-au7FUF3;+M3SG>qekt3G>9`JP8FwRdI$$J`-7+IZ|`+WbKDRzK(9@|dMG=1-~t>s#1!#4&JIgIkR=0ip{ zg+bnJ^-ba<_{3D}okjJj@J-OlbkrhfA&%)R@JP81b~v`tH~$CXqU`48|OA5Gnl zz2mqx`9`zz@HkbEG)flQbU6@GnA-^?#_CubYQvhCpJaQqBi&}LpZerU;lf(vjg<(A zdK|p^T=>`dZDMlh#~XC7DXt&xdU_mk<-LnI0AtG}NRKCdIEwV5K5t7I6JZ^-rF@pA zRA{}o0@8>%)X)RSi@~+h@~@C`w*9b4q&DmX zLX!I*>#t@(ChoZz81W9KQWxDSsNZb=EwmHe{QI;NNYC#LHL$xePX`LdG7MxG6dCat zCo7xSjm=T^T)Fj#X1m*MyEYg9&P7|(aX>1mf5Du;-QWx@^G<8mAv;q=l-Dp{hBVdF z4CJn_7l}v>`rrPC`C~hi+pRUCg?C+|--+=T*Y?BOv;u6Q|^Me6+A=-vZKkP_rOyJSBQl_8`;>MljPbSe3#eZXBZhhKu(xE&9Xfg<1W zLZEyj7{H6xm1p#lQPw>s2(s(|=Qks)^Sa*+0)E&U)BP3n|A< z1H(@0*R53advdbh3cV>XKl&l)H34%zc}J@`u*Rx-Y^m*KLGsHY!)cbd!h$Af{Ml4orw?ioeS#MLVoFy;gU1C-RjrFrjp)vRC-pOUr zI^o0C@*hUmiDU{jo=&4vb6zvhOXf}=uGF;@%5R(Cfvb*R{bQR4KZ%2w)ls+#AfLBE5= z{`p6bM-P{|rH$@j>V4)DbZoV)^WvwsoRa5)dh(p@%s3Njs|xm;>;6MYu`dS%3t`M}r!MJfQPX)1&>?hm}YU<#S>Zq1nOX8Xa z!2!F_#j9KLCz)diJP7&t9w`AiLY5(|KCAfF+tc`7Q4&L$_6fw?g9RA^MT8NP0;%h( zYOK3*w(63`5B*`2?YSlIZ%n zi}I*EK1p22&;>WK6M%jI^`z&hCzlTK!BO*(pvb9lj~4tSHJ`Ca+CT5ObUc^gyk6XP+t2A61^G?g#$LIgjhiwX&sqWeU#%V7Q4|w z<*VAJ)Y$G;4^Vo{z3j|*7gl^K3>C@*F!UNz3k*%W0I=qmDau& z66=x59<#@YW?uC(?kC1m*V>Qyez7pGiA5iF8wqmYDY_r6CMb*@7uZexHbZu~b$a*e zEvhSPdKoB>`@2slUU?f-x#PG-WYk?g>{Rr|L5BluxFMlS5f{?oitEseA4sLwNf9>I z@YGO$9wFD6dPZ(ovAMnrX8sIH7WVu?f|%W*3h_S%nx=N)0npP?2_-|5dwCk1>F4)S z(^c2j2lnDW1!7ClHqzbGdr`e{``3_98$SwL=Xd;Ctp^BlVn*LUK*Poo_+T0V5OX z*iXfs8RaqGZ^d;Or?-W?qb9M4d3UwYkbm3zSdZ-+S~`mZe4&V&@+Day``1rAdl>JB}HFodcxhSA&qgrV%b|VVgjXbts;f;pUAYjvY_gLnWI25b|9>62t=GpevU(|q3DM?K zN+>mRdc!O4w*nhf)jc-brv`p%z=4a2g8!L9=#Crn2h4N0N}kr^{VSl^Lv3_LFoNM ziEeSG>}UPRUSoCuEiP7fIQ{;)0@lYX%IiHpiCXubj~|}soL9hm9xG{k*AAE!@7{L7 zi09k@s#sfFlH@t9Eksqs^A5aK`4{L;Tco+Z&!gP6!@QP&zJ@d^u92moJ*P3iR7!2F z926Omgz2dJ8Fagq+K@?+qjm|}mU{TNconHQ+`h1QaE(Hfko`LvZRdkvr*A#8ev|wa zAEqv;Ai-_j^#EDTmVQt&=SXwQ{hr*xIiAtJ8}_B{kwH{NE7}|quBzVA37gJG;74(GvnjDv$o0TwY}A|rICB*zv;R)ea7bMd4p zQ#fj<2v^T2x!fFt;G*-jM~z=OZI}}-@C*$|8W0pYC`vYAhl`S`!VIu zXcUe#!FabeqCRmZ(}NP=S;fv;Vy;GMb@qa>T|T1tpp2+wvaW5M+@NF=u=y@nva!rH zUa*w7ednVby0iw&S_8>Ng1x~|`$n3BQFV62rzrWrJ}Di(vh7*j;m8A~&ATFNgTb2J zkVA7D&oChcEXk;XZFk|^GmzQm2tr-ti8H$~N!rFr=(Z~B!nAZ1#@c(!?6S~QvD1X6 z=mn9|MDEhYvQls$ua^;QU)w()(t_7tL6@aUXVC)pvQ#x9KT_KUquSJ8oOfUBzo{MB zDw)+~JIKVL`X@?B-iY!}VEkObF%hLm+4WopL&hXt;$mUZ)eG7lNE7kf0UqVcCSvMg z@&-Xm@1PKS$qPG~ow#uWe+~GSB@Q4(#REO@n0TaoRmf`4ZIIQK)fj!JHIa`{^e^E0 z%QREBef0Lt1&0Ki+r0lA>sh^qUwXD{^KAENJ>C4%`nNIJkXMGd8Mb73gEvTwi#KYZs{ARu=l`(v7JgA~-TUx8!_XkzDM+^JQEIbPAn=i`HZXF4>B@tGGN%DWQW`s%_to*4(b9riJv zyMGwLL8^J*hIw4C8v6jG#CtsJz9SK&y8K~PxuJm!=qaAWfC_uJJ>DAC^z4rIR*141C3$QhGQSHSnGOzvHD@om#Eza46?y_ruv z5s+d*MZmtpf#n~!BilHz8I(E1EOF&r*wNI=J5%Pgsxa4_&9eiSd;|Ogv}x~sMKq*0 z82qQ97623Y7D1&mwjbi~`U>*qnIf&t;E%*}Xn;_>1uESxpn^tFCVwC~FcH+H%=`*c z^yMiyk0D*|1MN;t?*u5I8{7I&z+-$Xy$$z)L*0*})dGwU|JHHR^l2)>`9#l{fw{C= z=hyj5-o3U3L>qp>I@o?67Ir3SCbM+K8L?@t+3R`vT0i%)3oD9 zP|;!j`7MHj9H_lRV-z|kv$)Q~I$|7g79zEg4F)RKdWU9%Bw@2G zDgV44!Cs;f5XBJn6o19IbTRs8R%m#!;fs^TSRnVUg@yy}kVYv&9Gf19WPKNFYI}p; zp70Gjyo0sAgJ=FZ0ecA(2n^KSpHm<>_=0VFcqvo&i1Dry$-A+n;Fn9VBP+>MbGDSJ zzPZSsu(U>qwBR2bd!%n6S1}#T4!6gxHWUlUR(SG;iNo!R4jt&;S+uW)!Af+<8eX-& zmILLWO1jy@tJp8>$A7=E)G%pK8G!_0+a3VCgj=^~?t;Aqv{;t}juc^sb?8FQ;?X)a z^RlcALI;`-Ic|)$x5V)OZfExJMx_i)hZ0HSLii6&CeGt=A)Fa+;g?+8!|3rNK$D6%&@l(95}zDId)!wAK$=y z70DXLy@9V(0L5xvBU$!r7($soer9?=h{oYg`baJDHP8Icr!l&O-d$j^q`5!ff0c)(8TsQ!85`KeN!IqO$N`Iqg&T5M$w_J>vS?svAs9xMH?RT7%sf!kaYdS@Lp zaI;svv@t8g2L7mUbwEtV6f)Kh`BC%P%$W$B+iLMyk#4T{fzI%GL7_$E!}N~G=*e3a zSnzC!i6*I8DB_m$c1wPGus5EAc?C)#X1v5?d^I z3zcrkcm%6lLi{Ng1PuwM`h9dG>is-Dk?4J8iY@;%E3{`aiMQIjsZK{i)W;-Nzn2rg z<2gs~BW!u%(8__}Wgzs^UB6p=7;M_^u*pSE4mKvdvVqy$mB}a5-mu+mTR;flz59J- z8JqsFp&Bu3pjT-3tf1;#&v6L;1`LW1@kJ?joEkEK@;J$Z7r}?hxismWK-!tL(hZ!C z482p`BqLKJWt-q*)l2=sz7cTsg=-$6uaA-x&vPy!BmA0*SY;pQ$J`GKGulpzI>N~K zPQ3eFqyWGTyirf_Y}?ATz(Q%A@&zLws}{c9tf1^23y2*eFZejWGW2j#$iS~$^npHw z(z0^a!UpU*jZ(g<}Gf(M}ORu?j3I`ZEJ@nYeaerpj?mr)n*qD|%sukkD zK$r@yH)w7@(L|?p#Nhv>chE>IFX*Z8lched9{3UH9w1y!?5O%BpT_uk%?DK}>oNaA zW|jPyPZfjiq5_P$yhwMQj5dZ5zkdS0gKDVZHiACp8J~G+nXcN#+`?lYr=!m|dwU$` zwBI9G*&e(9Y3K(*%nX00>)2NFKaC=UGa})uoroACVbW0`TqRCl(!{7BKN+5VH{5sb zk_y+^-h`PNy^uWW~#DHh2;*ewPV;LD!tLyv#*v zZ3~l!y}^5+%F~n4Xe@<%F*0HY=}a^laj%n(ohl?5kF?fXgdM#xO_Q;7cp^@HHjn#1 zwb)Q)*Id@a?Ik+<(j8#z1v*QQ={GTV!2g;EO1%DzIz>;t+epTZiuc>2{HE+$f;XM; z0V?W|@EgagL|7UpMzR3`_XtK6@NQz*5NJ}&(yYP8d5-@t)(EXfnexa5OahifUZ|s3AkI6^)dWXExwLRnbF}npL)1x)w?p{kDC)tuJmu7OgF_Erg?h5a)rRd+C zryxkG3Y6!lWe*+&iV`{>Rx5CfFz2n7I1;|^1>`h#*kzJ~0edm}>o|L*_V_E_Px0Q! z*^qh0@+>wIY+&DhY>--FAYXZlZCTx^S+Mr{hF+^ezrytOiHsDkdX4jvJ^C=rL>7&S zkS?S6V+M_S z?GoS|5F$wRCO*tE9|a2VqhJS0L^kC4z;$#4R2b5fL-RwGI(b=#xVEK@<_ul;Crj1O zNJxwl1=j9`NX1Tuz4+&8O6Uv&Zl&&dgMur~jeLVi_(PfmP74 zL$cfn z-B2VrYT8}^( z;pygIzO8Ze?&Qbt8Zisz7p8Y?QAui9BXvV+T%53hUATa;%1j{kzEPmbAS+G&(Z#5) zyWL)isa_T)FyyqW!d3)D;`q-=l0#<#A(fT@?H7IMqg7xuO;_WV2QY|t=S6MNms(I( ztwsz>`Wdi9P49eFJpBt-a_JVGkKg!IFYzWRnd*!ymT(ADct9-_ArJCTeb40fi)*TE zBF7P^HKwD!0kM2N{HiIo1MW-!^iR44+t5Jinaq&>6r5%K`7VswKx%*sY6`IwqOs-Y zC^33o)B1vOGW9OXdsHny>jMX_5hM94U<@dQ3p4hj$7%jFliw#JeshSvx4da>C)gk+ zYOk0m*HAMB+k0D>-<9_J2Dv6$isj^gI{z{Qsm~4nLIRg1v`PTA6BB>{8?Op79gl#| z73oI3R*#`^%Z{Fz(P)(J;xjLw@09|fC}ACa_1w1PDdNMPp3sh z-{hso^}UJ@uIl)c1$0n-WCu$D+Fue3T-Nv=Fr%ic^mHP{Fp zI#*;&`0B1=hoL@O4|#9J^N%_PE3Q65qAuTS=5j6Qa`Tg%g8&1fal-*Pr1(oa#+awk z)}zh3@DXE)bPnQ^CR*-Vm-X)i`JclhU<0?*V#uj^%l)obKKMF&Bg}@bj0?!Hh8qiT zZ=pwm%=1)he5h~@dVGfU`;Z$hk8w=MJteWXH?IgtQ?NZ8_1TExK({jQfD*JZxjG z_nm2Sav9-+2Y(pCzmE&2JxsM#7|cx z!|f}gkk8~}UKsL|N1(U9Hu44rcC;lSU9=%jb>Oqr#S+2-DRr673+4af__NYV<14RM zbj8RPVQC9%P0It#U=C{z`(|`M#T7M@v*5a0{DE{|gz|Yu^K8S7Uc@+#K8ai`71SGj z?!dQo4S018`sy0Nb3y%Zme1&MKgZKmkJPnvd+~ zm{=yc@U0Fx+{EL96%3h^;l(o*KXrn)PuyP6^++Y>Hz6QiN^SKsoKRWzpd*qN4$ zP8KXv-wCS$WVjBFYLe`(`SdZuyUjyBd^OuW;;ijaT&v%YynTdAVWvUs|MtAWucOdf zKN&|BQ=k6yYN!=nR<~U$Y|r0-U6e}bG+M|+g?;su>KTQTn7y23Kl+8l4UOKiWbSor3X~zs?EBH^n@TV;U{~3z;2Rl*7MB?gx zEiE!<20*km>l<*i`|Pvrt53U{@l<+V9>`jdS%k)YI(cin+mFQI37}T;IA&+ECB3*r z3LPNbI`IMi0|qdtAKh|vr%hjcq=p7_vB}o#m3^_y$mryO7I-33LH7@8?m)qA+%wm4 zVySd8y%blHwbGx^W)9a2Qa=N76Jnusj+f-MRQOBppV;D0L5-0IJwGyAPzh zk3CTP+649z{^c$7%et5+(dCUEI=I%|qQHUa*E3W8gQ})ynQ_=@et-Wf9l2-G*mei{ z@z#0KbAU+R;3-?0E{-GbOgqTcjGT|&`iiqkfG7^m)s9ZUvxc6Su(}hFiW_{2cc+{Y zs}|q&`xOk*;T6RG1OA&|JUrW~or?EGBjyv~jL7O)}7PWrspcVlba}U+0(7${%-|?_Y6(F&flXvQs%J^L3IbyP@-QZ~U35_E)AJ zkS!}b=R~OBc3J;++=m36pEMA`z>!m%j}{8|Mf(ZY%_o^X6RMYc+AIl18eT@;*GICn ztDh@@;OY((o7%0!)e*36;wMvKmemzZHpV_;y=C}ub(Ngaj;iF=xOzgn2D_WNEdQ!I zr6(M@sR=l90|u1UDGVh9Nz2qg5j)Zm1POdwn((f)R9chon;xVYB&~w%2$s1AXCjcN zqwqu$ulB5Sr2|OsyX$WDw~@_R7v>?7Pd--=r^)WDPkq@u7fW+g;$wX6mY}_c8opz^ zF8U8@qTmoSo|0q+a(;%S&cJ7ak?DT1%LsY=rI(=SaL80ww#v5t>)m3H6G7&c1Wm#6 z@{jCk1=7fMX{k9nTtHIUwD?gBxM&_GFaS?_4~cN!{+4jhSgd(`HA2BJUhip`ea`Rq z>Holn^)AwF!L$%C5NBVioZ-MRxy$~+<0pojfTpHA-RYGH#4MJK*EvMVKpcL&8%t)T z4^QGx@2Dl_1xmISyqngjON2M4(HcDpuAv?07lX#r!KGU)Ke(}KH%ZC=&Ufw4Oo2ZL z4e+LP_QUMe!=_Y2&3Yy2Zta8BZ%TCt;L;0=*wTLD5*duW(NF4c`;~KU(NL#^e(#}( z#lh5V7Se{-EFlLGNVcPKk-Wzl?}Y zG;X_ef+eZoMQYg5zfRuBNH{7JgR4*5sTyi6Yj+`#6gH(ialFj*>3JyBD+@%2Yj}mf zU|C_f*MSevxfTB9mX|zecsK2sBmVdaz3q0(=#g3S>eTD}q{#?4A1$;aeUY^9G%#eeoZls_?veM1i6Y+tRiQu`UcJiD6#^1slD*PU zyn<21Y!uI<~kH82y^v;|FmK5&uw8pVGXQnoj_~fg>Ls?(HwzcyPR! zvwoC;omR-peKR)}H?&|Tjfh8##-TZ%d6#Xfo|LY(@=0Z3TyTTQA|e*|rQ@G%{`kFI z03@}v6pE+n$+XxGs^US98%`Nk)xz1>d0*r~V{vQx8HzZ_zY2@Pbs^v>S_aV{H^%By zis84u44CQw=?{!m&nvXRv?A-nhdez-JZ9xPAe0_ESPWp4zT z{h6cqSF9S~#ZLJ6qw0(gZSUZ`A0Byf?p4Q`> zrDVFrmkuCr+8qQN(K_#6&?W4__@-D*>>XSB8XKhh%kZgK8h%K6?A&@PLw7d?W8}}a zGV;FzghTS6$dnItBye*4WfM(gN?sibxN?S%E3$*K7|Nzv-mp9&3iZMTw)#I40TcLY zusl7G@XdA_)tqM1lL>9q2M??BB_ ztu+KG4VM$j+VF&Kx|*wfmkUerlQ}S0EiG($E&!BV`QaVXPVStE#+`QwK@fCHxy_px z(`g-VHQ5ed>2w}IP&>>7|J=*D`*fr1=#rX2f3sVhh`l70A>w%J2KfDvxw{8l5qpi) zNB-IjfZ{i|<69JP%~t2>gBp6?g16AXm9>H{oc1ODu7Qn!`K=lla_^ z<$wL4%I+O0QB!32Ba@B%yJcf9W$ z5>{i*h?!3jw07SQZxdfBYscseYnhDIvk(_1F-W}ZIR87d@t@@%7Qp4ch!|W*F{C23 zUA|#Bh~3$O=~&@i=6DLV@LLzMrRGXF{6Gm<@MgI;gdQj-_8(|GSQu}3;-@_`eRLuH z;MwGlw&*H3%$BRN21-vm%wGGFqg#7`d_s+!BjN)@b-$cQoCjo$U%P^uTHHO3*;}CC)Wa2G5^n zan^KV<#MG-Wq_#XJmy#y8}wuej-Xv*Sayjp1;N|;`dtOok$&pb;cO<6lJjK#X9f)| za#Qa#OpT+KsNw9)jrsfL_v;E%E(KIr8X!WxGoa9M9|K}P;JPvw&i+;O?H3cg;GocA zSgyZu2pkLu^!<7w@BrzCay6qTHiOt0`8Y=m2c+KIK)E);o`}m~#Ii}haNkjpOm$cP zpQ!IZ!Nr8mgoJF$km#rtLjh5XDiO3u=wT>=z}h`2Ni?Z6ZKEF)39~3`{G$ z3FG+nhJyC^d?CR6Sj%|qsH>|Zh*8TS7)sLx5xbY)3P>;4nm7C~l zOpa+fwar@}nwzCyeDVrc$cTV~w;E(c*8<=y7^V!!^FSu&avz><$F-I_$HJN(2f}*9 zg`ZOf8~^&%zt+S_(BfX|-G+VUnz{(2To*eaaN&~~Un#X~!jBXEKz5s{qwvHG7tq(t z=6M(dMOwlr&YdQGI_6ow7SI&T`A*@1HW5(pP&0Dc0`$6m*M)1$l84dArP@QJ+xY;a zzD#RnB>QN^$%{cp?{s=5=vN1J%-3I9erF~e*CcMr4ORGaCylTB5b+}|viS`@`OiPd zHk#WG-(}r4!v$D-w0q280Tx5rGacHP0uRq~f9B~@HYsDtO!DyQ!BcZg$}a)zkotcX zhJppicj$3Ts+;d1r+3_e(>Z~7fv!1m&VA7f#zS+^qB?6HfK)F(7$K$Nb#6rDA1Hp< z_-3m?r**K|bXt_M*bQsU2w`JAdpA<@y^r`m-#iPM0Gnx!R_yb7&C9p4y)u_2rII0I z(wZ%M?d5wkEBRUNW+EI6L@s696lTKDKmIs-?8Da=q}_1NIW=qQ^u6LpSnzw2&fY1l z{xXck_?F0jEVdf0^S)ad^C6oB{R}R3{l2Xs{cR7i@W^l)RIlp$x~6)zR;V#s_t#pCPS10b$@1_NjC29ptgzhztYKWG_|L4rzh_B9^l@a>d;vKr zG!?N&jlQP7MAF;|miBkULlC1);||Gn0E?R+4;drbE$&;DBKj7%lb>xj*-RZ$h?iXO zeWtocz;R!g)ToGYk6?UI_mV5S#vb5CQ?h~bv3?bUjzp3*63m-6H6Q3XZgymvr(g~p ziE)7;UE|_I9k7ZPo_b((HHE`BGH=60*uK8W##BU2B`Y3D81sQaASU?L!0XE^m%IlL zEhG%cwNaf=gIyD=+9*6T;V_(@tm~qDS^Gtq+f|EjrHPE^6r0q1Dc8p=YQ1!q_&=clUwvEZwQ?zl^v#FQElrY8%%>A2_ zmjXcc03vc{)3ZHI)9BeBlh-uu-i_9&$;>GNAB8zD`f!=oJOTl?QFah6AW2{*a_$WZ z0$wv^;4z==rX8D2?sAhHZ?-!2b5m#b)yZOtVG;h(|Ax*{a0tI9)?z0Lyn~=f+fMMK zL>ga#t#^LD$Bp+7KXY<+E|EgNx3#!t>pYM4Tvq4(L<8wH!3p79iTJkYbb-~{dPT=Gx(|#Jwf>V$qb3Vfd)#?h?pPHu@ic*fBxjY z=+$KV&DMknp_4gnOen+D8RP}&J>I}()I_cqz>@xt9mNXQ{uc7<{&oT(Yv=tp8+6i9 z9=KK6#g^LUtQTu214~W;KqsW|LFV~GcyP!a@dqK+%v+Pe8AY4b-?-4f3X>AHiY?P` zjBUsY{`;u`MpPx-JppwxtV3?us5I*=3>B}THE<%e^V>XMEhc*AiVN_UKel(O61?s& zaq@jCZ71USWEiGqo5!Uv6W^=**nACD2f$-b@*CWTDK0zNk5I1!Mg2o5>E>>X*hsVa z&Iz|z-}Ug+Op}SQ8hhMP+G{=*X^~rjzid<| zHd2QlCo>IeEDeuAKUqT==)Sf$zf5QJkSSyM%+*P1KbdS^Y?B9{XmK*nUWai9PP28+ z>mI7>rnD6TP`65B-0h0R&unCT5oeJS9&^$7{w;Ei`(5!4j!I&bHh$zwSL_xLug10O z{?6e069vhEg$ors?qifv7cerfEFkZD*=xn^d>sp%m+zlt*h8p++{ElW6btFdE`mXQ zM!y==W;hG;)MZnx^_bK5AuHJCCbdh2EmnOx`ZJ3Aua-O~R21H|*_4pOaBiT|7L2A^ zm`~Z-cAFSbMX@LOL&tByz~I;mnyP6~*hS#xah-djZc^2JYt;pZs<+40I9to*>E)?B z?mMkF65Q|nD`zO!>6*pp>2W6n^OCyp0<1hmBdBTKI@BnCHh2o-{AypL4T9U-eIc6a zk@qzTaT^H<(r4as(L;O8zQDR}$+Bt0#P0A43|A_{{odtulk*(*lJ^yZk=fFFuu#P` zXcLpl_o;8LUr037ThVzazfS-(M#=(r!(WsxbXMSedX;5#mpWq8Q#{*9>W|khhBpid zUqaj+DEOF`S7g5}5B;54m7tA+8V!C-d&cCDs?^g*`5Lr_nl>)BM}GpKgA#gAH*MeV zpSp6td;eYQout$E5FsCzA|HdA{WK?A{R~9Az3^uEKf=YHo&Q6m+iC|3EPB=#bJw$p z9=uI24+BPX3?>fS z!ac_#fhVyKVld%O*ERz#Z@{Yh+bX-Lg3*ajP&g(_+fM~8X#YWUuvo#THeNtSCA^}q zjRu-1&(&2!Cs7 z^mO@-Vt2_rEKv{L!|BAm`=v=<;Sesg(xbx{0t_m@^^`&#|py+A}jXC^+Jy;MY`gagt5iIwa0uydW(~x(0ReeDn%RCH+ z8al^Iu37gqnm0lG5~htyZDVdKf#CcOC5O|dVaaq?8XMdY9-nNa(9>1*OmUJ3?8>8wXmg4!9ex|?Vx2O6wxZwC z7~3vSqW&nQ@O^HxY0*j`;z%K&Db+N7WkspTtKU=u^<^J%RG4A#FL9)dLOvldj9y;7 zV8-8hkX+|O^gVTEllS@&cdEuyiwElKek4=&-g#hPaKLE2y10{+=y@RJQBSH@@$qXG z?IdyIwMT`&&%_^#%SzXAh#!&VMeEzc7W zGK$YdxW{+Rr}wuTTI$l8?nRs}KSGJ@__?8nBg~Bdv-%p5=R2^WYs@ghdb9{c9V(KE z)P#QvlsFqaH8;1!33uL_N+y&1%MLCA{vCA0oAqjz}JY$ zL;dZQp@x%X9vIQEu!VN`520fR5mkRQE6GDNJ)UA+hD;Y9iC~w!Z$EcJ97; z*|TDtOY}CE0W_TD!2)x*j^e?kGO=vOh;g4@VfS-o-o?1G2A6*`?$N!u{-k4TB)wpw=!PhGa|seZc zRSzd6qq2u2mOQUT-cm#5f{6h6JQG~SVt~!SlI6($7O~mpWLU;lO7%buZbGaUyW!S} z!vW$|lFom)42VZ(?uTgvA4WX6&L{Qhh1ON8p!+*Tmd6PU%mb7#@1z1vCi8HX%`IE|UPIy&HBtV)IZIb=!=*x26d;c7ASkQ9*_js6LX8L& z<*xZWOyV8!LLJ}%uW$sYQR@IR6tn!Zc12jXZPBiXXXNA3*g*H%&quV;j+mC|0|Dv| z*GBe{(q%zVR;R(&f7L}GZZJ<)@u7V~a4`|ri7m+ATQJvP3AEANw*Q;6@fJc}V8>aD z=7hH+l#Nxm&DgoJf(eF7eLWSD;-o6u_vXR1@0uA|y^nFXs@?DYcLQT&O0Ca3u%Sh&NghSb?z3G zg~8{a-=&i}&^MI)Yw6$+eeRhL-jml&U3n8+JWZB*1X5nnv9@+uP^LAMR)6hU?W3$l zU}b&$1&J`SYACr_Zsh3HEsb(LABqPSc zIbjPHl(P$q_yD_7n4yF<%?+g}GDSm##*7OtHQ;H|6%BIMqhhfg^3KRBQxA_a9CIoQEme6lh zn+HG6P*i+LAm;NwRAZ(b&pPI@ntc-FP>UZ z?LO=6Ll!Dl^^HvqQ+rtzq2L&yneY3iZPSbqTjSI)#(7GZn%6WtN0!S1%;5^wL_d|X ze72ba255#;X;n_7`$q!Blg@TfJ*Y&6kzMWuN>biH4ixZ+h(&+mxkK<}pUoaHOkAz& zQOt~6-Oi4blJ@fe7|ySY-VFQp8`H3x@&3jRAY5R`$P;&5$}+v2j7Byi{^&Z&*xkvLtrAHpkfE7lC4B{oBzW6jw6w7K9tIbJNPnI5=uX^Blu zaVDjTrq@aygNXn~`io!0bm4^A&7>#&X(*NLy1LY+z^%=A?Me;;we2;O(~j2K;(w8c zPi$C5&|@->6Y2U5L(Xw@{rNrfK+M7?Sq#}yKj)AcmUKz^zcvv4;WD7Osp6bnLAN|s z>yns>j*~3gpB@N$@Ga{?Boc*a>UWF#uc&3fLkluJuvoc|mN6Jz&8eG&BJ!aLtxP8` zLj{1(FJG9;6zUE8d;*ZQQi!KF$jNkPubH%Cc*sz-9-cjsPb5d*DN8h#e@m0atWWWK zD_s_d{0HPO4%0HtQ^n3@wqPND(yP(UhMssgb4=P1vY1FnK2KpF91J*Qct<{~jldM@ zFjvLz!IEjvJ?;myCOujcj@#BjZoUZ zOp7GfVN^p`Eji!OKvh%Mo~(2xgFDWp%jxV1OI=he!h{$v*XShP}3<0f9%QCeY)(6aTE9cix zRHs4Kc%*v7R^clZkN&f6?Wd;S8VnH{CG2S8ivdK3T2ZhNmqs(o{XXt$~Uf(vJYEC7> zF$)}5^7awdTVp$U*p`gY&sg8xY`9}d@3`Jnb7V$xxYhJ6TWGNxMjl!)mv5(gdCe$f zB9URV%~Q-Hca$#kuHw)B3ta+rx+ubXv;BNUK-2@H?LzDi@adwKG%bkQgbuf^tldX zq4M_;?q_3rjD);E2~i114*kWMQi_9AdZLV}g?X24b1Y(X=s6y-!7Oe$;br;WvDn1c zQc@6D{AQz=Osu;woSk6$xv@!ufa&;_t3ta~N2D1Bh5}fNZ#=}Y9=L%x+PJ}ExUlWy zzX1pzY$+@Jj!$Aw_gT;N$}a~egm)~$aZQ$|pHL$$Un#+z*h_GrXL5HIZF*&5ln}BQ zhY9c)iV^Ds-y(&j4Mi1%zsqgJSP5W@o8)R39$D}A4jVJULF*@VVX_#FD`y6mi42Xv zjMg@e{%M+;g>akzDp;K-V23wUDEed~J@zDjB)dPN@HUo-+BR&Ja>pOepX?<~E&9Qh zlf+6k?@rjS-WFr5%iqV;@~r%y1o3rTaQ3;4jHgFX3P$9`YSF&tGRrqZ+1GU6iDGIx z#smlpu#JE;2@DJ2!O4WPj=EB+Ms>~~I5C-~a$=M9gn_p?v6eaa|Kmyomuz0h2d7yB zGt6=r9D;<$Z#MKcCKbc{g?0^apXHjG1Yj$W$QP#P<#eS6bA=}daSxR>z#Yqa7vmWIeKI;!!pwt=>m+`wckjF?)_9@ez**48CR1lS;I1Y>My|z ziis)vR9U(#4W;{=4QS^cRuiZ7TVkxslrT$QUe%lbNdU&MTii>Hxv&}C)pi-cTvNkn zw+NU*xg`Ssa16VKm|m^1U_CmWp2L98L-RQ}c!@sTkw+VyzN;*3TTH9t{qY*tWNz>_ z+bJ6@ZwI{b{%U1@>i~qobP3q!5)Ru;8ruLv{-icK0IAPCegKG$- zNHkA&buJPIAr^egXs-Cvn5JAAH<$>R2tF)RJnplsjB1o;3yVa}_v5>NmUOF%RlX0i z3sJ1$wSmb>mj1Ujh7=XM|QakJs)!vit%KzHm4K0wFQBLO| zlnx;M-bDIjSsFXEC5$>>mz^AVQAV%fC>f|+9B1xGq?|!;jtK=O+O%Q+p|^O%)uk}0 z7gE7U6Kh~bP&q3a>Pg)id)N25D5B{+CoT?IOH}f*LHL-Gp5>xy&e$C_7%1?5i%oOG zvtR7VYu&Cgsqy(!M^^>r&`}+Uhgw|M^KhI+ZcU2(`GZ^`&~ZxI6A#M|oFP@f5QzZB zOyO#7A?IMdZSemT#)0b6gB?-DxR~=RJN>R4B8x}6{^~(G#?njWbxxf>| z-aS>~^G&d1Zz4_)b~#=` zjuDl_r~Paiv%>?rcjf)ynV6QhV=jLcpsErz=AA{v3+#vr^*e#w)@$X9u5LW`iYpU|O&4Q=3vnSLPv% zeEx;`_vS*v6K&zSbXiQkePOs>3>*xQjhopZG_@gtNF9lQwsqF7UL2$KaT^AcWu!Sm{lFef?)wU&=%6<&*b<+Fv zPU8LVYAuwvgM}JGlBRpk$Kr-qYA!6>Njx9A-PFEp|C|J8)L$BQ?wO!O)lk~(Km2Jz zPTZ0muu3EqpVN(D>R6qUrPKjt-ZPCG)OcBVax3^<3%j$W=Fvh4Dy|A?#q!h zt^X4&d7mb_eb~!Lrvq42FnO*A+G)b9Xo)c&m3gUEePIMy2@pAy_Vtx&megbaDTOAo zyytij%3@rO)77l_1^cR?%1dI@=>Qk)Z^!gx7K>5t#A%+h-F`g#RFf{d?~l`{m_W%^ z#$dhki?VaY`I)8{g@D4_MeuX;vu6Y>bjl@WjIGK{K4-egk>w#QXw{MQm?rqOGVp{1 zDDEm!a(6;4LHNIJm5I1IqYOSQ6LDg`l#D4Oh>@OFln+e`x$FDf>dW(CCPjl|_4Mbs z1AQjN*|4dgzOx4MpvrF)sf3)gk?B__-o9M5IeB~t@tF5R&5Si!0AU1-TBL^E1Ug1Y z?;G#U)czdWjs+-H)E0{fkgwHvPZBy6gsMfxx_68@`18v_aay@cKYXvZLUlGow+Qk z159mG7iBBMl(56I@4YUH$?)buvgLBg$ge}9$_%Ym*Wbk|Q#V;r*W9L(N2IXXB7S_% zzCbyj6XJorrAu~2vU|5IzP z{)9TG&kRndIor>dDw6YY&s<}(@W~@_EF*n)L?M-oR;4XQo6Bslo#EducBKi3B?$E= z@xR3ucYU@UR6{1dc1qo!;x10!+qnTBHoKDmDt@%W^Dm1E7$Y~7olJSEy7Bnr2$Iv~ zPZI!Rc@|z)?LI&=qrZ%hG%`{vy#n?)WF4LzJfMu^o>{|vIX&|37m9n~^|3Q&o%9|e zkj<@-1g|;O6g+_GARNy$g>jpb*M z*EWMSXhT`YS5fiW@lN|0sK|C^6Po)KELlE!F!%cibsWG%z<^QMnkT;@ayg{n23>XM zw7D38D4hL*MRVyliBoI=VWWHj+FoinP4u%~sw>RSD)%N1D{kB~XMSf<%NL={*D?ll z3DSGU^h1nlETJDF9hMJ|gdFhcttm!cFvobTU+RZt4+y26;fEezB zQXtKl@uAwYt_J3EbVWZVhqdmef5rU>(iz>{Pj3)E={zNHmpGC3q_X#dA%b&zKd`8$lr zk1iArIfgF&giJaNe$#)xNQeZG5EXzczL1#T8iep~#+NJpRl-mT=bzCgO;Yhzm<3v! zNmIi!)3Ocz?7(tPJ$?(Bu0io(&j;Srv%PG4%!kH?@d}YAM|LPSSaCNjMl#>MZVxh1 z6)$|qz7tGmtYhN1h|iw`F{}zjD)=MacX}BhqApq#Bb}N+RU-720dCOR?9GfPzg>QS z8hI}@Tn*Zh_PpXv-*~fWzZcW=5ko!3XydY(%XDb4jA%~MsWb4ywl|n3 z-5g_OlV4G|Jz3#wgTv<4*QTx5bsMge*s3qb;F2=OS^HSyUI9aI`yL=Hm;Smb0AfS> zCgE!OyZ3UQXP0ue7Ohx??B*@}>0E?yi$I&t$t*v<0!<0%a#hKnPHf>hGkwo*dW}8c z2Dwh~b5fmr`{*Lund33P4W`J<#~uW(UkE;wUQ^FVdquagh{`vg;gQH88R7O96}MPW zsPNL0ugpt)Bq#8j$K`V&b$Nz(Z|zF7tZ_oo#wfoareVH8dqM{}H})Cv)`3J~&2x+Z z9>}m-_WvrW19v(J{6=Qs2U6JFGht4o>7%}tqs7+k?_yI^ozw+_$^~SAs`X?ZNNMIe zNH(4(YM~;AZ9**dq9in3pTaP^zwi=*nTVWEemI9H%Jr1#au!wz_f+} z7VniNgjHWq5vX^Ph?=Ot6F@+55LQcLuj4SM{L2i|BXA90w=ay$E>AG{#7?4=%z`OS z=1)qcx@KlHid18;Ix35ewzYcoFxR_am2bD@W7@PE&&PRH&s9hh7zP3XTP6Y4JdwTQxoTk+b1^nVz2UAbqi!?2uD0xjWC5Zpb|KpqprKLc{1~U(BN`lvyVqc<3S0;UyQcbTNs|FxmD0 zN5z*%L;1e{KhGG9ec$(eEo=4|S)(M`*O6?Iosi5-gzU-^Su2u#jY0;Y>}yn(v1FGK zLYDcRQN2Ik-#PQooHJ+c=eqA}dA(lObw9FKE@;=;-zk_#!Pr51fJO=}jS5T5^U`(Z zs3@0V=C|Zq%Q6HS zaci*+l6JYSj+o=Ou%B`6!6^#i2iK$}5DcD}-#}qd5$b}p=ulhIsZuLr7zt_WqZ-dw zHvd~S0a9V;@Z;ba<>1lNpMz#EAuIrH5GU`;c{rQhQ9vNu33p2GSBQau&9_UGCB7pX zV=;7*K6Cf@rdARhL(e~WS;~^^sg1rttk#s|0NYxa@mk0rdPUm!8vJ3SWd){uoN{C$n1IE zYRmU7Q97WQzW56044Aq!nI78vGNBs^FcCfzo`(qgu;K1bMG@Nl=!3#!$8L?jfGYcR zVmE{f{DCIgXeMtlLq~!LLYHf{eZ@eCsN^^yfBN4rUj8p)r3VYLmxwCpox6h7?@||x zT;^4aEjnQQt;g(<2iFrtuhAJdz6F}Ei39hZHMKNpI6%W`AoA^OzVC7;}I3y|)>}3NnVTTX%n$+VKH#lq5OFKgSt2&iQ z0EOzEK^3r%vdX8EC{qaY8WPWlQ&+#539e7Lg$n(5s<*pidn_plfb4r)0?}&!n z-&jW`bDfGPeeqKy0=?WdpUWiXmjNvy|M5qRF1b&pM%84VV;b@(L|eG${5^S~e*Rr=KbKC`bvI-=N7w(U_}+@WM1y`k60Xo*co$1;ePEsBGuAifx!f zLlCbLQvz1#i#-XR8FVzZHN&NZHR+z(tM94KtG+&2Ey&+VY2bFt6)$`3gZ1I}h1<}^ zcc85f#tDwm&b)w?kjW39Raf!*cWmaDF$v2}iLExBWWU%g{NDBLRCREolp}0^h~u8s zDvebp;>CSEiuoQ)ypKg zvz^|r)x(u#V2JdY*&cGsPKBW&!s(4Q0j<`y{k8nHxrTpBqo_(@$^Kp4t30iPPhMke zZ_#3<4x@OqRSp!GUH)j0x+fm*HUoVwh~!hEvOGqt)p;xUaT_`DfNnv^DpKY_(R-`l z=~tO#$u9Td=XDqYwhhHUeN%D*a{8zd+i>}9*UuC~;t*%WlmCtJ{*b~{BRh7)Rg<2- z{g5}vXR1OLsW;4WW$w%Ci5mH>R<08>2z@ax_^?!>Sf)-Qi62vj3Rm3llPB4L6>OR? z&PBoeQm#rGjCS&6(Z~wo7?I&w4z^sC9QoH>FfUN+$^@*lW{YxA?g5H-_Tkf<>Z*9* z-nKNpioSrD7x-nY|LfK_j{P5+GF^gDz^*qZc`vwok~{~c8v59 ziW{1T{48{`J%=g3wk|&YrdAhDQ?{69OSv}R}GJ#C6;gyCGMrR`TIWfx6(OmUgCh0#ZRF~??}2?wo6`FTzH&) z_@g^oAH!pGAp5>wG0X?y*$#e&95(M;28;IoN2!cEAR*L`ZI^k;N{<(=(NQJLEhTsy zV4lP&;bK+r7p8D3b-!tifqeC^Z%-3{@-CO92~655`5extGpkjPYANZzU~CkFOdJw7 zWP;#l80;(ST+kQr*@1Hg;=?oio!~6~+W%8AZrfnkbLG5s5~S`t$kJM&%7viCbP^#Bx$3t|f@aTaz+eG9G6O?Sy48Qif+~0xqOa z9S}JfF3I3g*n;nEpmn{+;qLE&CJqw~!d-x32XGuHo_$j}Cvf-T1I$#UD-yGl`$Y2P zF;nEF2^j^oXsz$gnSuPK9sQMBrBa|XFlKRY;%L}9>!M8q(SulCeba*q$ zJKEygUgRE-7089Ii%RPsIDFS>)sUy{T-08)ca(=fbDk9 zU2pCg(eL=UC`@~_B1yg1^!*9p3i)k)%!zAd9CXbF<0ph>v41pg;tET7C^{bwwJ%-Y zt#w13W=zf@A3G#&@tP>M@@kdEG%Xf}f_o?LhldT}kU(+F7Elf`es#woB6@S@mN14j zP7s*`qCiRLtfsU^!Y%Q*)1O~IT?igh5hNRHK*<7YO(%i7Mi?I<^!IoGQ4s%gK26C* z!2fA~&Lz>OuG<*N!Got%i0K~iyc|LLh+bYk$TqACUTE1A8 zc56e;z$JcJW_d1yFi5jYd?Q$)Q0P?r?OvTXeef0V9P-ywRA^`ddGi=2?=SGYkdiN1 z$^n@+$NPwfZ;^2R)BBMEBE~gz;US?LJBmBPT~gOr^s)827XvKMScZ=c=KhdBvlT|g z{TFj@zrE#eI|m>%+B6A{@n=52<2vws5y>sIMNm=Qz67xizR#-6?HI~6fJ2h_^MCZb zC|*_G6T=pfhk3clHM^1e{c;Vd=)Q@b>=J_7khN!leUv_>wL<9FvZ{{W zIgo6u4!D*hPn=(5(-=jQC?WVZQDYXv9cA^|4JOnagW=E%-Z9(tc+|@7b&o3x`UB=h zj^QFd;YE|e8ec=CzKT&&O<%HElx6mMn4%wvctIulwV}%T2X!t}I0}uL-Z=J;MX`L} zGUPC8L6KtD2LBPNvTArP5tA3$;uGAqa->#-Z2m4BS z%QcYH5G|nR_RXez}<)K?R~+tUL_Suc6JGa z5tzgY4^f-8z%??MHU{&$Z`86#f4#?A;Ko|`Oy*#l`MlTx_ra<9d9efg@D?xUiM&0C zT82hX$I@QV1Nb<{3h-~yVl_~45g|h}$T_!pnK7agvv1PKI!BMhFX^5H3Y&zK7hQae z$s+%If%!hn=QbRl6Ax4{V|wF0cR!@4#gRuGkJw@PL9fNuxJ>Z!B)2>#)lIel!Q%qtV`=><9M{&Ki=x0i)*m2a#7brgIi zQQPO$DvlkZqHmDn{yixO^tDs#2wK;M(FFAcIxl~2CEJe-~1#B-WSAQCtY*yR^A*g(r$`x=w|%n?KdDq>0&sVrJEQtVHJo+E%gBCgy(5|F zdz367-kMMsJuZ%oC4m^SfxX>BNcDuzogutI@tNSLD3h|tV4a-opb9ADLc+>SBTrRT z5svD1R++wACrgxm81RRs(kEjs5(m$;S?hES_}e!`8ExJErKVObD|ym_(*RJ4T(T>0X$RG;<*prR!4$pW78(P|$Q zhO3JExKjK__tC$ZM7PIyqv@B6SXKJ~46Q+%w1p6R^sI8UYwK&F)3yDU0)Y%n5=<1p z2?)N^f~-p-o>uJFfT3!#a+?rS!!&vQMN^6j5_J1iWmNupE1ig-X#Mlv(Vn50PVtnth6J%u`^dISzR`|D=y3nB~Sv=;UFNENxZY zy&iJQ373($zxPl++hOj1x9OAH!^234jr`tWEojN@x;sbxl}x#f8*{`Pf7~l#Nku`$ z3C&h=Z{AJ&ixfUgXxCmg@Vo@CUHU=ap(r`k4s6+|dQ@Xj3J=l4zx6}iK`d$v%r*t< zVvDHdx7qE*74!R0q2Vm6lV_DMU-w@lBk|Z_;V#}ee5;jwokrmCGt9i6t8cM`;qkb> z|GKnbl{rLQ_>FnZ*9z$8OQ=GKFHV5_7v7g~yNU*H!bma4%Kl7Q2vN=9m{$tJlI5~C zX9f~kE8ju2o~L5K32Of7C;K}t6=c}l18K-S9{zBU4!U+K(<3I&z zyiu;6V8|WUdBB1}`Z%Ya2-98tcqXUZ%g`|f0J*-t$oR?eiy^ZnHMU6m8$_ne7=#w$;$cjlY@2;;utT|51#opbyoc{FSMr8YckqCb~ z(i%x9CS{gzHb6pnltIu~2a*^3tQY1pQFw?xIpJnL-M6Y6Xz*2W%yOc*9=zhB0C*5j zLYqfix&U@IN}oNV=Y5RW%nEb5;^)j06=ye6;q?@j9d+RrRwFN!ej^`{g%ZJZ&SN~X z+A~Py4r<~)pULLfVQ4CdbMp#Khn84iYTU3CPS>Ymj$#~Q+XOqRs)bowi3;aQgArvM zs0KMv3<8ez-*sHI+!~`Qp3$1fCAdd$80ZYBy)SsKBqA4YiudC}2y#w3^y(N!73Ym_>kqkGvv_`5K-69#{`JR5{ApvQhm zuGtP@hoVkYkx#XttLmedMr;CiFC0(#?8T(A8NV6*Cr)?M`ONkha^WdePZ%U8?>%&= zt^8>}urFoXIgh-x+&X)I`|NEe*lJ=gn$3&9f(WxE`6a|<(Mh;nr*E%WRUY$2&O1JR z=Bv$dWGuPsYk;Z5y}ZSvdV2I!Y{;^L$ynV!x86h_}6gopF;k6%mbosJ(OVV5pyL+FE*2)mN~gj)#B&LR!ki}TEz=%S9Q z^EA^lR)XKgg#T?Qt6Esw&=NX&lJdIf zMmOD7gun8$T#tV^#7ZWh+U*WhH((fpWO#9WBw&!=hnoyX_!K`CxUvA;9o)Y;e)6|! ze1mx1LZ;LQ=}sOZxrOkYu1i$U6GnIJS)KUcXK1VJJ>d;0-X-S@@`Iq%?@}K54Hrxp zX}=HfO=kmr8MWLeJDESj8b3bCP%xr#!^)$tQbHP4z~;T1Vd5FgrZ?f6&3plZXRF~R zA?ac#UAGQ%l>5KQ^%bjjcv}zbH!O($$nB`DWaK%z@Mk7ypVpWPbq}-RMW&Bchnz&v zsa;ris#A;_y24s`P9{>W97nO`tgyh4eclI^3AU)ceYCUavg)s!3GRdAd4jwI<%$Zm z=3W{*Ju2DCA#z|BLSBHqW(;#^UrF$oOtW4LLk6Boy!le+L|;rr;7+=#YodZx?;$5g z8FG-C?=0b8qHy=UxwmbI%1ALx(6B`B$$s2ZDntq*2+ndX;IZ1A`_h7y6ucBx<{hy* zeg+T`3&dA)(c5f4NIljj7s_7CL8U_JGLISGXZPU3`}4jX=#Fsf=Pwc3Q9D=5h*B{s zWR@N{)rCH&esoo!0^}Q~j_7dLD#Q*x7tsd`ez2_I{XG>$ecG4f$D`3azB-_CA(`+t z5lb$D0FvmGbEotEcj89k*|5AE{0&hkUNQE|dW`*ddgS-lLBAEsY8xV{Eg&31`IM-H z#}n%Y`JbUz-deP#(p3d`k_;vly^V#l7mmmzp3dGH#ynFay6rlQA({Dko0U_#`C(Iy zJ?dXWk)5uQVO@bO=(h;#{`>ZgMvIVu4*f-usso-chg%c$$O|J=DwJfVaVS}!q_D6q zkG@zJ>@9@iYfB+YOj`a*kxRC$4Mhy1U#4Rs8>Bg~7Hq7OL=2wM+l|@SO)&ZUx7%ti zo3&6u;{}3XxJ_a|-Lcc-;O2Dv{zyd?A3+(3NiKo2dJk%9H~7s&Lne1vpHs~;Kz z6~x6rq72F2z0^Ymf?f{4t)%kjQlohv>q2M0i$fMR4)&{p;0(2(^`SqJ-erXh4^mc+ zrOQtsX}v-3(g>qQ=-adi`ETXVotEi>Sq@ti9vH6*9^*uHf1VXRD$;`csVL~}8*mWy z)zgA24JvMtKg+mX)AC?cfI;8?@Wo<3?G;%{4v+bjkKaN@>Y{V-`*N_Vgf=wuFMNjj ztDa9_gB(jt2>4ELd|Y(Np>xVtLr9Pj_WtRhb|P*0-63E@3gY z>Mw3df%j7slfe5Gw_ore(gpAg8@qWohkpB0nkG5UbzK`J3;hA6x>t3)ndf>I@1UpzTq!9LV`J)LH!`8Llh zm|A}#QZ53h+$@zPvacPwc6M-8L6FbqF^YQ1YslEP)k@xHO;Ic3R$;MBz}TUK>fJk5 z5c*(2bkjgO&+1|5V}fJtF|BOv5B-`8I=I6nx;Wdj^!nmbeTcKyAPduKqak-xPJ$a(kNO$Ao5P zY`(h_nNSbG?KDrfPXvrY(~C$_pAdPu!phbL+??o>;djVIiSiY`?G+@Je3+EUIP8$- zISFChR6fYmtm_;J4vKsTWQ_K6-?j-&CLA0U0lGw0t?LN!qA$=LeE4Roi)uQb&~CXt zr;*h6;vDO|TR%jE>L8nWsPl>9XY#5FUBH44Hzf|ab7di3`UcANmpEIM@SPV41cX*> z4)%IebtJYr7veFwjv7dqjyLOdBxmQefAFugoAumTgq!Qd8iY#Z@N7Ls$k+k$nY~%M z>pN7AZ});ul@iOGB+8}Y}BW*nibTqRu z2}bM2cn{IJh#u|=*%Q2cL?^O65wDY-`!3P$wa&o4#d53pSF3J5vj`{{9 zPy!L(yM;Vy?mPWNygN{oqRxsU$T_*b8hr;}lrX9j8%cx>-{v+f5CNA*l z_t61Z`eb+xxsRB&&lu0sMaCMZD>$C{yInd{qF3g7#VUaORJ_W4r&WFcY3 z6|KS$Tv!k@*}9O5+NRKtPI@7?eeEL)UL*LCfLad6qOu*meayx1Z+(dxawJOg4cTnQ zuBIxsWct`>V%v0Dr`R?@4Sp}*rJ;v~v%Tx>Cpf3Qdu9}ta=ps@k5?)Scg*kUF_=hdayuHYA`#ltn*@eh+ zPWir^D!$)#{?jf;_nS!u6SMce4_vsw;mwqGtS_ za=;{AaN(1fhkCxkNFu4KoyxPrV<-4bg8WNrEeK&MK7xf*`RnYWQ-EYt)HGk;RS{a6 zhPHiVqDbtK659a~0ZdDGD&5e@2zsfeT6a8{wfR&*5+w7CM9BgQm+mJx)P8t-N@xoD zf0`WZsC89d(};Xy$v&9ah^kWWn`i{(2_Li9qOOLv|G>?!JnPBt^(LX>JLfC=!OaT6G1vtgx0;4sb!;&S;a&m8U%gwZn8 z_vl*3?%7lPW{!uC?Q+O0ez~TpkqFwxp&eVKe_dfz>2gQi^;>2x?Sg?D+9uX>9;&06 z??wlLh2>6WP9{g>uIr|A#^sF|IFNtHRmfC&lA`=l%~x=u*%Cqq5ri9mNJIHdcS7zd zFK^!2rzgZ7UH``VQ6sV?6~Zhh$t$=%1R(a4>!$Q?&d3}dPJce}1Dy@~g> zn>2nnehw0N1***(3VjL0%sega=I4cc=S{xyPHCHmp4HBA8&jxsv)p&lx+z#71aSP- z`B)ZnNTougA|~;jZL_REIHd<|-%X3o5#lAr4E&T@_(IjI+=!^rc$HUR=gr$jkL=jF zv69;-Gvm;OWV^m@%+CuM*Md`{*4QZOwV~Si>13=6*w)!qIDadL{ec?!lC-yE(&!J@ z_dv8WagMO?leMCo`I+BbW;_k(je8f$-{?I>aRT)k2h?VEomR-tejl7qb!jkh_jz6) zQw~rT9%eV!*K2%SL&IV)S};*4mJhL82a7?$JY!KE?x!!UF8#VhKB-D2f2fpjQkYqC*T_hoW`hQ0@HNWFJA}daV~xk5I5NPPCvumy~tHE(vM13M3gx`1%8t}quPwOQ~EDAQJhTiGY!&gPe ze?z4w-M?jhGv?l=&&}43FCtN7jSes7kTC^d*bfG0sNkjY!vYJ^wG`AP;I^0PruS=` zUC2~X?OtVO#&>b^c7L~?J|f9&k%iW!C{rqCkS;h3VgjhCtKK&uJe@iZ`bOeaVdsgB z-=v&j_p%Bg6cO18)|#AT;t)$^VAGUTS_Amy=gb5KY*$>MhW4@Kr-JJnb#x#dEqc%p zW!|b~g?#FAnnqW06ir7_iP`sdl;4**jqPe>rlSSvVpu^jfL{T-RsoBF*V7_KFcVP= zjZe0#n*D%vZ&j7x5)HCV=XP7 z)ShFs3G!IzN$m_O<89PH6jPYTWcuB-fs!ba8&{b?I#C)>4Cv{&u6OomSLqQW7;h#f z(448ts1lTVdchizoLQyRrLu!0s|J=Fzz80Q8og=; zXUGAlj#C9ej*U8|vx5=op8Z4|6dJ{j>Ybv-yx7j`8N~K2iZh&kGGninxHQcK(j7QM zOn_rqhKmA(&>7dsp9nq}7Glw}VW%DV?WVpY@a&Fe*k-Tv%#G&Z`zbDXx|xF?(H>7o zDx`W?sx&Xz(1{8VP6bxm94-4adbz4OZ-=kF{TqxS;HkZhOFB{*l4?}aToou!M~k)= z;w6TcCuV;=2jQpXf?QOH3*07AKvs@cPTT4_mOna#JeA}9tjUDA8U@{$>(PEt6lVlJ zlR%L{b4Z?IS~Ik9Ghp4>b6zmQ3@o#}$YX zCM`M;Vgjs~&=OqPTF7VnCgn-fMM;z2Jc7lP`a-BKJImgj`F@jk!#jEC_BUYvOC3?51UK_ckLb~IV%-(RH0e|Na~nNVM+s_IMh0% zyE$&ug^~&8_DR$kvy{I+&Cd%lgQLt_&2%5Sn;Wn>-iw+eEz70nXmfL+zOOLj5JyOj zF_;LLK8WKL4>clq$?Y`MRrcV6+0Jd>7o=O}kcYpN<`XtQjvnlHXe?daVR7HZGfx<) z0BTWWsiES|@bbjQuPvL9ih?(iaGA60OshthDa?%;)W#`+rI z9Kjx52n{bUDTXM2MT`(O#S#$jzPkM6HEmXPnhA|aX(i3q8|P>E<*or)Z@CdIo>62< zeLNWch|XjyF`~6Kc4OBbeK<8rwtZ@dl=4OE*q3(5$g?f12))PX~vYa@O&v1K24mmaMAz-v~`J5AiAtWMOuH6`$oG&)4! zgx=7Z%ee;QlsY=X$7=>pJx{Y|2E84H(oF2a+nws}$qmnPq#h^ntEwhUX4J@@dblu- z8`IIExrBL%G1N3DBPoJ?s+X|M+uNfy(=jZ+I`(s4L9o0`AZgqogwvSI*c8f%O$ZWT zBD!*ZWewk%NSSJ6eV?#R?PS}k*^PN(3fm|; zLE`Zbe-e9=wWv!%_^YfS!u_-Py#XfSup7Y~j-K>{il)=y(1myLT|43Dg`^1k;G@ou zu#SbCrpVnj7f)|`~BQB7s&E%)OjN&eSXc-i64j@oc2zb^do zKnzvmI|;(>RA_BZv+#C=FbzkBMog&eY2BjRa%aH-$te3IJ0DTFpF97_}Ck5v{e1=AHM`I1G6mLJ z{bmGZ25z9Y)HQ`Lag=mQMosvMkR7iM z;$WDn;q4^T;~k9F+GV=ptAv!`IrSs$u!B|zKdXf)&v+Zfu<5>Q+q={JTk|z*7?&kf zn^&9wqSR$?D)~JJF!tn)k_U&Pl8RM zjniR?&V++d9o=>17{cD0tk*q6YB87?Iy~SBLmQwp3a62gj*x4zDZGYc z6;dVqRhpN+WeM^U!@oqId+DEIrMCia?wO69V7o0Ji^!$!Tu>HtKF-K#pcaMj)4D@U z0PWC&@iTv%grFabW5kI@_7nYvKj0P)m24Fwq#L4B0DkphhYo*@_Lr8fsDXlhH5+^{*K>KVH~+zKv&c*;O}Ub$H=~dP_8= z5JfX}7tm*;%~{vJ$OIZl2>bL@Z@&xbXI5rSXI7J|dk{4l$bKpYb<9>gy%#b%YY+&R+u!%^Z3azYm`69* zFkzqp8||uxeoo~z$oiq?;q+itMC$P~neg#h*DgHA$BL_bGSxA+h7T$SPfINb?qEy| zT?C3BXc{vR?8>hoQ<9`WTw$MOJ7rsXCMA%9Cyl(}Tld3-P1BVp2jZ~2J~%{%V#@GmVy|_V@?hA$+!ypDA1G#%*pggHz{YJ=_E13>`T1%`+4y z@a?MYG6SJdiqcmZp{R5Kgex93Q|_{4-*bEtLeK_35`CHh+qt4;>8-mA;aiWi^GcHU7 zT(Bh6E$#dwvdJNo`T#NY6`>*49okz9Fbnn}I*pi1bC-=6-hVi~c=Z(~<0)HqBCxK7 zXG@bsj}ej>0bgCte@PBIc>S0k6W%-#Y}v@oKU@_XaG;*Y z_R21hqG-q{8m^iKo};8uf=9y{xWF<&IOzjsI$HE?AzIu~Q%@jT_!OAXTrA(-O5h9f zWVbFXm!KsWQ73UzI*h1@j zQim1>kgnLA;FIegi|q*Z(V9U%-FWi=W#^fI8~M4VH+s-t@3PoIY1>LwP(aQ*byWy1 z*Pi?c%2i5eT~HgF-S|28W`p=sk_i&>047Ktfm$e=HFTgW^T|t z5#Mf@c6z?^h)}>(z-ivqGeiZ_6%#|K&)e?~w?5l>v`JQXD=fH=1(6jbka5&ByWPxuz!a7@+et%rYeu;0vhI%Li`4H9 zUHBI(tAS@b#tVu8;xLP7W{~hzlmm=-BC=Wb+)g>-qfp3<-nVMA$SYH+t%&KEdk&7{C@r<@a{`k_&Tx)|Coa}^Oi560iHaG0Yz-h~{8l}vbB;-4(IM+E zX;BGu4dxnhC(jr!xkk>G(jCmrVx+&!lD?)HQhfhzTlWru1;e2w5vWT*i4*4-IboA& z(KWO_luK9HMXDYosUL$6n0d~T@qDQl{&4c5ZjVNQ(thc6;>Z#*wg*-8TpW{YV+QS! zg{bI9!dP7WDe~aD9j@L*B#pt(>b=QN2 zqfrGC{W?){rxa67T^7;FueNEtDV4fzA;q`%DL(8PpIH@!^71Kh5gnubV^u7@K6_pd z!197eWT;0RA`vI^!G@Kc_Ef>S?^=iddm}wSi{yck(##2`vI&W4faUEiEIF7z+}bq~ z&Tu?q`@IjpjuSiN$$8ebx?HoeN^#r!%J@yfU&l~`V!(5`&ugyX8`pCz7*(crh>=(GoSTSqhWcL~v)VrLVFN=BvNtM8It8Qv1p&U)FA`)fr zwYF0HJ|u@ZjS0bC%&sC6K5x9W?lW9eSgSruo-j}hxP2>s?8+aT3{e z4F@MrZ;fjhoW3R#bsjBCkujAcI0f%J0wnn{S-Siu0J6KZX%ra2!uanR&6${l`U^c- z8t|1tmhS^mX2fa@nLU6xolh=rBXh;()T{L?Pei}Ys^KFJP}R_?x2I`HJ|rsuBtqLl8+F;wRv zb==OU03N;|(W)(FslI827X}?= z<&wM%P7USo_0n#)U;K$`6;KQa5F?N$LKb^P#=5&VsqM1w@l+&%V&8v55XCxkz&Mfc3%~BO}m$b_#zfG$|hD7QcMDgwe`qfu% z(k&mvA$p=jN*@=|l0uE|MIA6CWOqCsq6#>Aor{o8x>jGeuBIP2)wGU-zneya1E+)` zWBg~y$@m2U9}J^!)cy(PH<>6c5x5vuhv zDtdcF!2$zTP}y$cZ6D6iJxCW9LIjV$`#5y$u$X&pThUbZv_%HX`sBoJviRloLN4Rl zKgE(;2d>DU#Q$>Q&tlrxIVfjy$gtjZc-V#X5Ys)NPYOh*j`AcjA;c#k{3afUY=2^PU z?}4!{U{yPO`xNi#FEXs?f1oY;M%zeQ3_TzrpOXuKs2P$1X^?{M6BE*xl*KjZFk}C< zArO$nv4`cgZ0cDC$4zWNYwnupw-5Yg=>^ncB6A6t3ZyH(2QAQ6I=uZGgSp& zSqdT2(*c0q^|H36DTj2^%oQ80>9z(9OZ2zwhb*>HTm2(-*7@uR7P<0oYG8k=9nVX; z&wVH66~FOUVAkT=n5^B;%eOoWDO}@?#43W5*zn%Km&>=hGu)0nKDS;v2(%=uJb4*n z0&EE0&#^f(kyiy;CZ3;UjYq$RvS(cUkmcmoC*Lm5b17M)Z*O*pRn_3dMqB_?o{37{ zP_G0f-lV$*2N7I=m+wtH_1#dqsEOc$6PTfgzZ=hB&p~C4p;7;t94AXZM5)E*xJD3+ z2_Kv>M92)4W@@7YcVE50{e!xCB`c$_4bK2wQgC(h{@JOJ?%?5i3Y3xrKhU)n$WBg! z+A9B;7*s1W}n%@lYb5Me%*(cuDMh^xptUSg!|KwV7+GL`9h;g9)*;kP6 zUScFf6~KyMZqG;>IB2e$`sm@Hqk7(OS^bEQ=((9VKxML9}AoZ)Ac+XC74xXzeqs9zc^rChDEg(Z z??DhJk7B6ktpztj5!!$t*~BAWs_QPd5OvKe%BJ*Hi1Es+ z*ziBtU(L&G#^l@(+paptL{b%wnf{RM*4E2p$*Am=cF~UUd@Vw{hnEv7&1c;!n@nfH z7;_%|(#h4+Fc!cpk^10R8YYGqZ>7j+I2EGAc(aT8o-sk6iU6i0nEMZO5psDAM~|Un zJL67QL)W9F5ei7xc+~~Y{eA3*DB8P4$y`>?w=1piq3=n?6bV)ZLqTPL8`PKjb9^!I zar&x4;wLU_hAbocNOyL-6ZLoRSK98}?rPulWyQn7_MN-JH9AMU^;Tf|Q|oc5;J)$L zIJFd+Zg`&w@KbThUZ*X)WBw=SX;@go0NDR~VjNK_M+mX15Qrb(nVYH3_ZO;;YvsQr zud02wFZZ_flgic)ZA!13X;E0Obo!U(T%^S?w{z+w5)>$9BJ409?FV-m^TP0!P+p7s zhHjJJZqqwvrSW<3%M18)NT84uhMCIg2R5ChX0xOOU78@iaKJu-RaD7=f1n~rH)#%; zz4f!<<=Y4bq6OCJ-h-|9q$MMsQ%@1{fm%wYd=+38LEq*@-hOxZ)Zs2LlsLw@{f64i z%E(3O_IWKW&UpTSLH-fiQoAr!Us-gMcMJVE?j%HbN0I`Un*0Jrg8Q&S449O@P3+2ESPxox4I#k$fVs7 zTX0IZ9cg3ze1EhfL@z7Z;rVvnk$?(NOzCsVl<>(&NqC^!6sk{;TfJU$rQ{_!YObs` zj%+EI6*1qv#rq=(5#YuCDzEqXt0X?q`cE0v#*RW?0tfOme_;3ea~7%F{3 zErTZu+C{GX($4~`dWG9U-+!q!!U!ke|OU5*XwyrZ<< zavvp^LdGO@iOSS<$we36AU`VCqtsR8GKrq+Sw<-#Bug`zBzBR%j>062(=(#3+#SGT zYmrI6B1tK`tD9=U0wgL5@5r7mC1ZuXZgdZs8Pys{?vo;$|H1LqX_ma2ZP7N8$#L$S z;7^8+GneNmH_BQCIaDu5s+{RbV*scO+(smiY5xuGVqP%fJ-3HaIwSZ?yQQmRDmtEL zHcdzUh}$)5%jYD<5xgTW^%`2W2JAo^u1@)xF@bUAH{&j>-We*Yc3Pa8Q;PRjQ##-H zDA<$yONx+S+(>-v1x?aFe6W~?;33^gB`kkE#8@42QBrI_HnRiSr8dLWm=HxmMw#s!L$?MJUPJqPJ1~K%PZ=zpLq`jwA( zZ?J%8dx~`!b(=PPQBR!Mpsr|ljbZGYC2_vx(%`4$?^l;@9e7oLaFCP(>RzQZr!S+% z872pPPgef|Asa$J*qm%_=kIRPvO&fQ@*b3*^Pcdm{?^jMt$vzewfNJ*N)wU!1N2A_ z8X+6%;WDR#-KhY6G&Nb7Czqg5%yp@tP7uw}4f*4gf;uFcJgzkCoAK~Lv|3bt-3&s?1>ebP!iM7!gr~iur(MY^?oamq*2uQg49skm!eI=6A7n# z&EGXTkLA#)Bjc$5hyI=Ds_>lz+4S!R&PFC}icR?9vbgjP+nMK_h|;>kejpJ5sq64( zWyi`3VEw7H-p=+cd$?VC&|u_(W{(MH$9KSgaH-o1Hu+7ND2LQM6{uuWF*xswq$R_X zT8d6}W)?8z3Q8{UuKqZs-cmITiG$D*J8h_J#sL7RyD8prFa-Q!qrX@zqpRNo^?O%& z_Sjdbyd&779fRTo=-532&Hnn$nSc6sA-hN4ta)l-?6x5|wVkuR^R_GSHw zkPm(h@d?`Ym0$v|4UOGdymj}%TS$*g`Fr1AYu~J&%={Wcq^aI*)EEfIGaTI~+MZ;r z5ir!h{kiowiP1R%b3=a>;w6P|Cgxb5|C?Uwb+FGwcJy=ey0-4`ogbj08veLPD;QQ+ z_TxEO*yHUV*J?jt<4_Y~Qg#Dsuv7k!=ZFW{x1k6)3?dv4zBolHyjzE;_OjjF8x%I(EqNcN*(yETpp zYRyX1ns*6!CW7GMR2;zETcRjF6eo~4pyD!LfERuHxkf$);ol9hUHH-kQ>fdY;zNu6 z$x!U=Zg&{68uNE8UWl^@<|Ud%>TqRtbMAa0{+uasS($>YDTW=7gm+_nRehupkNDI>D9gM`y%?1LgJe)D7lAS095S}?-4x%O#Q0U@4Ovf zj{OjERaJ-8Pdn#C0m>ZK^9&~se_T*GXRkNK)Ak>k>)-v~N(O|L=EvLqTZ#J#svyO) z{O~b9U|Hb1H7}J>^Ra)KO#^@9y@COx+%MIk$1W;=)9C)y zU)91Amqs%`^FMrP{yzUdqm1Cxs91r|WPeL79NKdU<9kW4pWeRlarx!wXqaFcShh%LrKQ&j__4&np2ObQ$vB3xX$p%IUD_3BFQaJ z+B0uve#r6s67j9n^^YZM=_pPhP_=ID>EA>$#z$zoW$P}7YS^FFKP%&gvjEK(RESjO zLL*FJ8?G17=267bzPvjmz_hdx(FIUOg-DzO;(j&s9!bZ1l+O>JS#hS*Mf10f95?m#I%JhI0j)lS7xA2>lc4RZuT(@J>+H0Pe1S=u(_lk z4@+_huoYv(kl$eYr`P<48_0tZHwL2kc^hUJNGtoDQ}SA<2QLqkVZNdrEo2-}3^lO; zb=3!i#PZz!h)I$Rhei&>rh*?)e)>l)QCt;kBvx#O%(j}zpE_{8;)nnH^9@c=3+u-Z8DKd?!I6avD)YmC|9TH< z&=_FsJyvE@VRt(|nk{5N&|0zsUq>Z9+zdIb@BHP9Al;-4fd;dN=KN_r5V{Y~p$2A9 zg0l5xf2LYKT{fhwF#{VZ2cs}7W5-kh=CslU{cJwTK`Ih3oU$-ezRY01Kq?p<2mw z&?r*peM=rsBRWhvMmGxB_>$4CC}p+qUwzw90+oTFFxVLI7Yxy&?+D;}+Ai$wU3J8M z;d!pQ^gKD?g>yaKVUbtkLjn0yeCp2bwd-B@!O5bc$J^enCmJ3HRNP1!@y`fbOBL+9~M&+I7pcW&hbUT8x+X=Ji0=LjEWD;|=He#)D}td8vMF+m<+3_-JOWAn0((EPEm*&3jRr|c+J`&3 zPQkpC1h)Yepc`Yo30z}ue|EeBEY@?ff>;5Hx^7pm8FgnlKXY2^1G@|2F7}t=wrafY zx@Wdp5fffr_dCJA6~tDDE(Zof!=?70>i%b;_Iv$&iABV_x*QyFtm$9lJpW(94^mtd z`&Jpq?0MN10{{TvvKQx6iw!(U4>C0c04Zpe7jB=tjJgZ}0P-%*PTl|jY+akuQUCxj z6BFkE005cZ`>;T5zs3XrY~ZbtRwU@HB6^q)QMpSz)tq3ScFnd>LWSmpvhZ=0tvsC0 zk_9ig(mI?3X{Nf}6cR;ZKRz!IN|Qz?HXx-QWr4?(d&{OYA&D);Hy9EECCT*#rHZ4fN+Ic!?RYc3F!r(%EUD^9Q!;Iv4nXTEDm3s!3 z@*WlOuZ#Cw_;4}uv?*FBEq+0&)a=t<)cAZD9&UwwT9=nOoUP~t!=3hpP}&x-jZ7GJ z@IqTdW8+7X?&De?ZkHb6+I#4Ay0zP1we#fxJi!x}4?6o30rm{9H1$@Bf^aynH?J2d zR>=Qsw0XjDg^LMaIM*}lzfaFz?GDl-wYuh5#m6v}zB93K)ti1Mt8k|#A-Is@%c6!J z5xkz?6>pbpPO+0=wVPLI^J2`Sb8evX$iuDE1Yf-c@YD-=PTd&kq{o{oJ_gfhXQpAA z1xl{=cRW`uo8KtN?_!NcIlQ3p|Lin^J2m(WwLY2kym_W`%Cj}ULN}7@PHU=1_U zlIg+3Mya&nRsA<=0#}PXyri4~xV*{Cu%2^UPYLSL&766*L#_DXXWf!!FNeB=S<$=B zSONb!OdV?biyk#OUK?cl*jWy|+a)of#P$fKm*{Qxvr$3Z_#_pVjAx(M8gTISRUZwo zzHuxIA}BFxKA(GS^i|s&1~QV|aV*IQLj~&G!3>z}z|kMCS7bONXS*7j3$~_9jD_3e zc77Fs@WK2U*>*Op#OiHoYz`{~yUUF|as)i3V>h>KtzjFW>_;Lx7p9}2g8IrHf0e=p z9zV6t(b!nDjZ}N5@BUkB?m$c5p==7@M@QQ9InX{e^fxTQUFVsbw#2Nnd1Pd~bwhvh z#>NEb;{0a8XjH%-qOxxDv;H$ z(U8ocR-u6eRu?T6>AC>OMov`)hq3|YS^6ZrtDrAW#2}e{Pkl_h?HVc&ZOKSn!V7a9 z%lvy&Dbtwq=vnr}UPZup8CTMynZ^D7qMVEoiBBYq#C>XG9KgZqvPa!v6B`^9FTXSmF)Zr$&rP|vwEEzRQ|y}>I)W2wDm3Z) zVTyxBxk?VGSxfTkic?66xq7H=^6#`HL4cD=svqq2KY)f6jE}1w^7}-zx7W&uZ*25R{)1n7rt?W=V|;yHIk(&BX5^0I z@A#gX$%`GUP&T*T%$Iau%WolYkt2?W0wulaW zk%4>5uZ#_zOT*1z!g%K(1gIJNL}EL$EGeW3;#{}k_;I|kQ*66-)vIqS<6w#TZn`?? z@iFP`rOqvweDnnRV9Bi4IeN52yqbK@l11MVX>9uPu=|7LXaMh_x$x#vHkqb!e0xjZ zJIZ*oIz!)H%EHVh=0)7p2l74S_JOyjIl971X~FIKcOp!@xjvR?sJ&|#@v;OWE}if0 zo!t2r_BC^KERk#w(lD)Zx#`D782>XL0>y*>0|XIA7ytmuQX<3X%osHK87Kjf+#sc< zPC~^|qnUI@1PR5UgiwQGm>D^obycQ+?<`jEEs+71d3L*6nMD zq;-|b^urOH=s_`bMg%!Jp3%TM^|tE;3Kq;ps0XiK@`E>8`!B*w&s>(m)@nRh}cj>K#H{8 zP42zP7J8Moo9#8pe9zo$C@PAI{(V1po@cn5kbBCUnK^T2=9~iv2toDgfPiLr#sUln zP``fQ^Na}KdkfI4S>W@E>cDMPfsP%^Keq<5n!o^lzg;s65(WV608|Ii41wQW4!CAP zNQr@Ye*!G~=ll#4U{T{>K0F`7ua%`r5Of8#bQy2zGOU-tvBqx_ep!ZYLzpJvDb*H2 zKYn^W{TN-zdm-+KiSX(&NR#oTrXVcX1|n)fM2mc7MLY72yK;_a?xQ1glJ;e!m2TPm zeUTzY=iND=v*-Og@5wp%);oS(#$HWAOXsXW8;Jbh6r4TWS(g#*u$ukDU0;^e^zER# z@4Yu$vDxyrZrfIT?AWog-0!#eO2#brJ47>=5#^9k`N!n|`F)!-3EgxV*-PGNTyU-P z#}dJJn7Z}o>0uoHa?hMI$J_hL4t?xDb^Mrj)BJJ8x(tsdp=+`gCcn>{c<}Q{NjqaA zyu%0G;AyedQ3789b$;%toX#(g%o&qA!MDDwpFcjTQ{J=BJ(qLz$lUrr}o#!6K} zjiVbA9(5&NNAhzm^7{1d?rFBnQG(M%)v`|ds^+?UP0POb-zE;t3$|z2up!w$9Y5mT z_tDFxx{TX38Mo^)O4rz5FErkdc9dY7pDd@!{P5?~H6Pjwg75N^f3sx9Q~8Cb50b8g z+@{N@q03mYZ{-WLX7$Q~7B4zVgoQrpFxj4GIa}th<~iZ({M-{c{BHN2Jv|TJ+0nBr zHr$)(-h8U8DDRJSgrG@iq07iv_WDW^y7*}RoP<2hnOt(@@S(Dlv-$px z`F>iqeLfxd>^+~iq#&7yBq9n8@*(r2F5?MR3Z+d`-(mhO3*wI0dfx3zp7(2tnbPL< zc~-aK+M~x}WyI(*VtlY%&MX_@7^u?f^^#3^aZp2IF1UGxY&<`~!OCp8%F`cLG9H$)M>~E(MK$ z6J=bb$*9TixMu$r6@abN0CxgHG}+)8MVIlNF5~;(LH>{}vEI8(^l37lWgVMlgX!05$UJ+dN@;#(r|kVdjybk5A>+umv9#gPd|G=Z$}hcs zd*0MBEpw(m(JJ>sobgnP+>hRD$#Tc-aBDI;ITeI&oOZqjB8nuU4~eMM?<>nL&Ce_- z$~;C{`Df`Q6;VEwkl*j4yu4iB-i-9p&)0rd_`>r~=k)K}%`@btUY@D?k^KIRxyRjCYm#t_F5|2w2{iV*#A1+(niPHQAAI*c+0&*^&-?Pr zuL}1cI8f&Gdg;J{17(MneON|M&ZXkvACoRsUrwma`km`o z&SUMc!SY;vaQRzG3p}rB5+2fJ6sK6t{#PDs@9Ff}CxxJFvJ~yRsQf+ydwIUye_fe3 zuO^Xp7ai8Nm6ev3_&2ZnxRBrFGBgPfs1mAelp*+i-gmu4dAoHPTe<$FW>()-5 zYnH7kgx5>vlGFZf{rekj?>g|N><15wEt^NfD4klv2sxvF+ph5Rfnr@2Xh%%AchtStdiwO~?rCpdQ;1VUTt_3DJzCerwAcNk>{Y4-BVFXm)tdwf}GKXCc1i(geGgV)=+XLUZp<!Q9pz)rW%uaW!!!8S8$HY4Y+%UpzLn3Wkl$Zcl5?WT zW(flGk|treE~6-Q?#)zIlt-(-KI6s9M3xVV{M~x=@O10d$J6vHM+vgIj$&%$+EE&; zzp_$)TwwZ{YWKFbP z22>f9GzmB9GEQj{=*ZBFZPC=0Q!DtQhu615L(s?!&qXQwVK|s@zoUU$k(3KI^v9 z(o%m;PL3}ZumFQBSqZjeoIA?iUND6{c)lU2;I%UKXRK`J%Kf%{teqa&3JCz@KUg~zYeK$40|b5lTbsK(9oseDwpjNsNgDHMnnFs%Z8BMb1&WY zzYB;6*{EjVA%tO*v4k-L2L6W8RSs->Z8A{6A()Lag5`19Y=`k$um8Wy4!c}PP6X2C zKuEU2tXdJ0DkC&~CPLF^{SMAVXqtjhO+<)8g!#aH2<};zTWbK4V}Z1puxJXZX);=s zuSa_868iogYWy1+z4gEvhTpB`N`z(4C2aJc1CQB0J4`McB6S(p=`xn+G7jl7j{HI7 zcNS?}hJq?C1*Z1D&sK(=tl1H!OK7G^ctMv@#(LyWVwoo4SzSU?S0Y09Ucy%pgcS_{ zhXS*%pr$6FpDsh?dXwiiqt$!vrS;po_&*_e&2IGZ%MqjICphP&QH$#pVFw{WICPl>?57_ky^UTzv0_2 z3Kz_l^T)mPSkCZ4*L!}B58c(l^UVG2JiA_hwj@Y1USH}m+BzkK@3CGi+(cv|q8K77 zBO;&QSDNW9&O2Us=73Rm=9z>3{ZvRlQ32)pi->Jl2EX4=Y&Rt*CzZ^dJ12k8pxZpX zdv`bNg^hPjF7o%@N_%JA8yvUenuI~Bh`M|1Fz*_FzVAfzc%WXdE$47j8%;8I&}4iV zY`Zx7nLm)v`NME zl1wyoHRV0JG*~~=V6i5lgHu7}ZQ^+v5Yc)fpKHI^i`Qn2GzpLDG77o=P17PvABuW4 z7j%q3X;e9H>qRy(+b}(Q_wmHU#N;KXq?Gu)B}6_SQED2|)nI)lqL!OsZX@bzU_mzazRymPMey_>srb(!}Lkz5Ch-kUr?>p{FY~50m zF*Z2=GLMfKe4VG~r1x_{#fA+UnwS2I{&W4&8+sKTqlVh6LLXr%7n% z6cM3Hs8et~Lnfuy%ZoR3CVIOyVc498vL>IMT_0qyt8&(wYIs=Qz1%b>ez>y?Li9qc-bVT{f|fCtWtt z+}B&@vQFvKyPNTT$I%mWv6Tp^z-g5U+W384Fl1YZ993GUf;C->~TIBBTC3<@G;2F&Cc^VH*+B%GX3*AA#}- zbc$-8O7eCddEX`L<~Hye=7Bq}_atxqs+f80==TcOKSvYMl-Eg`j6rOla~t-qe2P{q zwB?_p|FDUG96tp6d*PGmf7?x6JkJkr@7WdK z&|8#wgvtuD%hHz&zlZB~NQls7w9^8%rojWJ^$q?xGo?IkcgMjKauG+wYqrpj^8B41 zdnqTor zXBwo=yM;;$vgyO6iwZj3F(DW45+R-_batL0f1O6XloRR9_8IFspEuBk)r)`8hMv88 zcm@vWY%Zxc@{l>IX zJVV572#pHV&-Cr|_)9sFTDC8+?&CJ(P`ghSoofU8c5mv})$_>R*Ll94RP((4k?~Sd z*6~Tq2c;!>Em;e16=8D7sLDR@a^D&0N^RPkyt(wq2|r;t5uPOqee-<%=h~oW`;fzH z&oY8P`&=7(_3G}q`?ecB(N8ze;dNhtzwr&*as_Ah4dwcYs2kV6c9P-q4N*m0rAc^L zmyyrE|6zKS(hnvq%*OyCUX!+cwZtDC9evJseo-5E-B{j+_Nx~a-qOE|XUx!RJX>Z| zVZS=ppQ}lDP?ONmS61|{!30EX?isMf3PF_(zctUli^|_2<@s@ixPb__67_f?(CAaA zPI6Dx;1jVW2MK7{9wcYKXsan=(QtqB;Zf{VSF)D>!`kP#NnI z242^?+^*8^b|sfQ$YWK&Yui$4R(6_p%<68~U>VCEEzJKZW0|kCXh(U!Q;3MMi zcnB;L>_5?Dd=PBA_{4XFW<*uHpIT^cXsf+@%)JFH6MRipgH!GoIP{W%f7J8 zGNKVDiBL$SXkV3&xrGW&?d57q{XXv=^7~#SqVS6jacM}_G z2{66#t2Lho_BHE?2rbvmydDqoPmqWI$g@O~@T4xIiEAc8Q_af*0sl3^dIKsxfYY;gI0C>g78n%Hh0k0>YsHn#;>=%5`vETqoDf zehQ8ijrt$;Q&hlt&}IWE2@o=7!<;N3BqbJMnuv&01rZr`RLYq3C(({dX$m5A5fNOb zQ%1C|F6IoPXPJ?m@?)gR14T54fKHThjm~_UB(T65j(mRqpViCj0U=b zs`@O1y63_4+3)x^e-9D>q%VMwKGTQ^u+NHp>gr3L&$RoQ=eBS?=|u_AbC23y*%&QQCU~e#PFX zH1ra%GZuozzD^lcbs4RBU8>9Y@o#K#jP z6mK@xM&-0&U&=&XLU&a{eKi5$E;~%C>RnFDjrebPetzyXrFo}@mKEo{RFd;keBtSR zA7$_V@kCboCdx|ROj&6gNzdF(8z_m^(YN$f-eP~;2jg;IdwOX0V?#T69vOVC=aIXA z8y~&rTF(B4qpTi~$i{MMN?YohY~E z|1gx5m6FGk<=dN)R=VN4Z;E6wHgEW_JF^G$?`-&8cU5`J;zi?P+}6>1Drhun(0pH~YH(O8dDFLA-t7 z!0cJGXXhV1ytj<~MCah-Nuv3m5RINkDMO-*SG{fIy`8I5m$6HgFj$k(+99E8vK5w% z~M2@G}Pb5Rtj# zciYeXc;WdjIa%)JKH4{yC{rc!2YdzO_fuA~=6i0`J=w31Xzke<8+M^SMh|L9BIa*kxx^-)0;q9aX+936?0Clh(fMUOadAk#NX`XF!iD_7-S zSU1P%Gzs@}UWU_(>TVlCHk8M_d_JGyz480JKcz3|$-cImH2Gp1=liLVCC?9Un|1H) zHyF7SwT>S3a=ruS1F^3)B2)j(_TTkl-<*#=uG9Sa1(i0FX2tyH%)yig9ZH3?%h8P{tP zYB}u)RqYVc*NnCJeWgF}J0-cNc4)G&{=%{Q?EPAWPu4m%i>UFAdM>?~#0u(Ik4Go~5}ogubO7lupfP^N%fy`}938-z*;k z2Mx?lO4?JxZDGhcw1->?tuE}ty7D~S7OIRYNeaxVGZ9vtbK*(Fc-_?C?~LctvGomoIcPv9BUaJ9XF$i-Tz|}qedV#2!VCIvG}YVr zf%~#=eDR5#NY5T0NTo`&o!Zi;G=LIm42`Gfc0O3r;}UJ>K5!lE-(UCjm*@JBmHIvD zvN_nc6ivcinuJzP8Ih`J#~{y18Fh!{;8PQO(bed5v7P z{pGQnBJP9N$o=7Qh|Eg&aqb$&S3ypyLffbvt)~7v-!AUnx7WFHg5~}E$^QLY`gQee z-nhQV7zFauiR}x6?dM!N&PlqF^XZ&cG|&TiP=;UE;C;nHi{HK`_u2c~8NPC+N09bh zSIuR|yhiMa^X(20;S7<{2jV^yP#`XPqC5_jX7r)uj=3e>`jqEwT`;fx+TUCk$47<^ z>h4K%I}O9iS5`v%KYk(Dhr>GCb|UI?{--7zF_MGl<dBcl=q?Oj!#Ou_387gZT+qGbDZJLr*F^B&N^-ArJ~HkSaSqqi3+LN?tDd1XAKHv~CyynMX|S%E(lIYSA~O2G@i)#%JXjusE4jE2 zP4;|S(zRdTbMFSr_^l_~r(7q;``#Sc%ABrPCMo`Vs{@C;Txi`_1XRg>(Wbch{%ZHl?Gx3 z9LKAD%;J2~or+nZB;K49u?o&E7H` zCNg4x7xv+(%g{>~w)0Ydb9`#RO-r2!3;qexp@*G}Do!gJRMI4^tdFtdmO+?)! z1z}D*%({dsI_FDD#y*XU?ERCwmQg`LzCR{va$di_T?6yitH->UMilHr#Ntd}_wL<2 zU2eN8yZ*NsWjONdedzK#H|wna z1?O9sx5Ytl1@iA}mCwzO^S+lLAGz#}sW|&M6&Dx#=gpm&-@A7=PtB)~d5zfTbRyV^ zA`%1bXPR~$Fz9?AIKQ>*LSEu=xCAft4D4CC{pQZb+ByE&rWfXCaQn~h`{=#-(<{Uo#QRe`_^c`w{*FDO~8iUJPU$@^Wr2_*JNC+Nw`m!ao}7ZlyJ)2zuTD5 zd0KyVx}Pwbi1U5%9#O=ki`&nAFnDQ0Mk$UF8F5&n51g-(^NT)kOqlZ;2Hw)iGwR-J zJo8^`crHF!-Ui-_HB^()zO*27BDbH2I4{=dK=kdvW(g)o0>X{?Ktd1gXa1f&)|TEq zTfZsdyp!i9Qy_Lch6t|^MU4Ap`_GNThV)V#FYkko$DzCr$9Nou8ZvF@%l=(GJlBtV zq?KoPTHPKu03Us>_2^7d~Ga8CeuO`MbnAtjJAP*;$vD-!CmkodD3#x=0RS|WHvyXKkzu!~d{;?OfpW)m0 z0EY}S=c1`HnrSj_)nu%>a16egT)p_(PDi{(?7c4$?j#!UMtO;>7koZCdi1FG^Dn+A zeB+I=xt#BGj+egAD8o-gMxOTt>z`)FRqvC}-;uq3O0|phr6%KJO~L?8M$_W#01^Fa&bDI?gcJoKPSM!U)IpUnQkQWi*auA(X!O8TKUx#vMk4ehYBD6-_r({V z7oI+S+8ean8TfC`h1WE#^z+X@FBI*G`NQ@c|JmAs$H7A{rhUVF9+X#Jw`3k!AN5xL zPiYfTwW;X)|#`RM~*`&_X8sp`+Cb!%Te*LL31 zl6%y_?Y+R!V*I_SJT&>6u!Zv#IImqqbxlHh)?L9Iy1+OH^yaW6LPIk41k~<&*7w*w zS9>14=bCdkYDh=VgmGhXR}kg{ic@rk1c%Zdu~{k%7-*iV5z@P3*?qW2E$4CZbb zBMz+f54AMhz<5yx_IsZL8x;qc*McPf6ZH+ZUe8 zN9D51j(j^~W~S@wM^9{tyE=W@E#Z44n4UYgllSsqPa=dgyP;1bja=w!LHe88&bdfze_gMO zsGT+op&1JyymDDw^Gnz>4M6Q`d zS_IRYN6t0lFTtrrfI1DrzF9D(B*Ky$g)nzK!Zj-*ToNME68{|XyIh7Ek8o!cLLD<< z$*{we91CINqQBJS3iyX0Ft;0V3}ZP!n*cL^o(Ks1_vX$Fe<`>^t7 zwe$TB(!rq5g!A+Y((N1_gLF0EJiR$ji|gTC3w*A~rGN*g0xM`x!2=aMP{9KgJW#;{ z6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aM zP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE z0~I__!2=aMP{9KgJW#;{|1KW*Ux&(o@DXn*4TnGrA(VI_to;(Ejc>q|%4a34f%$|D z=1ozsIN}hJDk606hX_4jLs;rkg#Wk<;YqU*p)W)wO+@9LlMuOk2CAmSqnbJc)%7^k z*gXR^_r#)B$_&&_5mDP2i#m+ycGTH76Lt0`qK+=3Zn}uN2Sn7}A4Dta?oUA7{c}-w z|C|c^Lo{HTG3}U!<@99QGL2m_>N3rl_B;m87}Rmbp^j5V?bJBbN{U4-9y1<09z!0> zJyEFYo`EWE8I_$2P$_9HBDPBi&-w^qr{*Edy%?c+ix6@o5g{9qGj?1({#It`&m zXCW->V}xbQM1*q@D(zZ?%DW^~NlQSaIvv%Lrl7{o>8QCU4z*I^P+N^fos?MAb&9B` z#TsWaHgJh(=#II zB>|Bsvrr{@4l3_miiksV5OH=D!aR!*nh}lAAEObH5(mrS#V~8jVczor%*<2FTg+ny zua(a`|HthAUk71rQ1*{QNInYF+9;Tu6Jb(6g8A%Hn9oMR{KHIyxMm}CZ!|)We2B0^ zpCUqEfJ(_TQF*r=Rd&asT1qUc@0o_0&Un<)MAT7b)J;o3J*SKYs*HwC1y`xedwiCl zf+o%cG;t)Lsl$$@P8rRTMFX2B+0opYfaZDvnrn>q3j9knD5oXUG?{6upc&Jf(P2Z= z6v?1}lQcUTr`piiWk(~I-MANy^+E$4Lmta?8MS$A)8bLXA)~q@233>e5V^;O%FgA8 zIQTij4=zS{MifGsSGLYXh#Cd+!KE;}SHhe$9_F>tFforYudxnT8aQF2LI?ccfbaky zq&@_JPC!Tr%KjvnzL^b6dIHR4F);I)?#?9$-9Hzh`{y7$c`+h(E=J{ap7X7UOp;N3 zcN}W&i9v0*)v)91rOrZqR{|QQCZdre0Zozv_arb6^8I8jT@qTUR}bxq!6~6hY62SZSh{DTz9yrdE~8GG9kuir)J&d)YAI2ORA-~guH~qdvKSHj zXCs_>#q}XVwl-=jXrkKCjOAVD^W;UeNw=YGnjP(2Hni8QxW*ZaYuzHQ)kIvUTaA0) zJGf$NysuUFt@(}3y4bYuE49T{CBu4mf1C3Mh5bYPmR zBCbo5aIIUyHEso0r`ge-b%km}TbCWJbsJjp81h*1n7a7BSP>1^*r z=%Oj;s@c$0RnSeB(M?y-O|zk!Dx5U&5KZJ_Z(Dl#-eJ< zG}K6%j@o)W>h2YdI|v)4u&t<|g_~`98SPXF?cG*ft6Oos&UZG-=#jczmaMHiQZPHqV|s8(F>j5F?WZSP{cfNcWy zAta(ndIGL;i>RM&L!GpE)Jly(bypm!I&7$-&O;^E0sD9@FbiQ@qY>(qVL31l=DcYz zWm{ol-eVp-elG;($$wM`{==|?=l(4a9H$_x5n=jq3QPy)!p!5dH5wuMY=oYfi?CCP z2v1s!O50|l%B~Mk%^8ate15h|LOsof2C5B>9X2%6ZD{3E&{h|5b*h98P6-`Z=3Rj~ zr>8EVcd8A2+=?OBH#-#!a7wtmvDzBVj!Ps?q-xR(4}CICSwra zomzo^fCe%KG3}U!OiQLI)7GG|ggcn#OnV*!hlE>I1q0kR-0Wr@%=%bH?^HW_I3;vb zt>|o=(=OvWmkn35&&HLAmTDrJxfC=`RnTA`-!(KHwRcQMjpR5~bq0079E9(SMVKoJ zp}S%c@|gt7w{u|GH3cT-J?25?Mdr!>ut@%6a3>(74TM1ZA#DB(rk#($lsXIMjdNky z9)%Eh6himMB5dzmgtHFc8ILNvrlOh}iyBS|we{ieqEe`eeM5Ffh=ztDLv7w5_ z{(yN1&xl2sHUpvQA0WhGgT*x)X68NSLFPr~N#@OeOc4H~ki>KUP6+yG2!%3C`(6&% z{io-{k{*rFj2MLNW7(gBN<4mS^YgsVxgn|z^;8=gCd+8*6wy+b(AF7;YcvVhYYIB0 z+R$B9&|8zx&ne>;r-a*e8H02YgEa;Bx)lslCETw{7_P~9P*=eB)s4^;jL;Q4qAD1v zD;TLscvLM%{#%z|Jo)bmygV8NX?77E6^tyW@gus;p!vf*2D*d?H5tR5JT@YR@mT3H z25TY)x%jSa2{*fJ=<8Mto!-sKYlC=nNR7wUM(oCJ#0;9aZD^RzIv^@w2k=@TDG^mT zU+C;Igk{(e=KcU7SvFYq#=^|J$2`cq$UMos`5zU_e+2sR+}{TR9fa`R8kn|^hw12S zn0Lp+vOfVKd5aNxa0$Yb7a@ZE{Os%F^}f>@kbTXDh8(Zg>}aW3(asT%YaKFf&=qub z+0cvE@T!Dm5E(4XUd z{Q~|LItk(I6qt6~VcxkI7N->i7I0$-wkiv53gXU%Z8=8f)BL{ydpGUS~5*tN`S_yga9fA?H8*u7V(&r zkIh_TtVGPzZLn*0C_I)<39*`p;VuaSTrzIb74&k7Ml9h5mFEF#KnFPOXcF`Xq{X3T z@>EoJ#36F`a#VJ#K=^?eggIv*)Hxj?JFT#!&x5(x3e&zU2&5TT8wq>=TcY`oKq}k) z8iajkArvYwsn5c^KNjYkFJL)nM@Z@ngzcS;FxMhf(iBwL8-;4_c+_-@sGDX(!xS5u zIHkb6&+9+8f*aflx~mfUIwfPRIDqfh)f9aEH{Id)cijzGQLg;^G|*&_#(G@F-MVP_ zZ*Ng0^x-(IgYTiW;@VWjh!3=Ih{jr=L52-=93pBur=glU6IIj|h&ZwU;fEE39h!oW zJPDRFb6|E%hH2G&nD+eufx1?#1Fj_Sf~p%J?C%PJ4ntVG0;b(h!*t3HGuvQWYzR59 z0HHrEMz~`>BKEM~Ry1;ZYGqhaXMX}3XfhhBcC<)S&^ArPwHM01Y7N-=E(Le#65iKk zWM2+HRs81nW$xcbBbSV$x{O!LeL4eG2?Lx8`jqDwaPGi0s)#m85?ZKsGO+_u@56L<4$S!?ENPPvvQI|X;rR%6 z&PS!4(TGf$g6fVa)JnCY9_M{0C8BAn4Xs@gu69be!6l-bOF|!>_jMU}sfrOpdO)>8 z)+Cfw$lH~bw|^l$^PCc<@>nga@DPsWV5$Q6za*n54HgbhpITSQ?i)gq{L>(<2 zwH#5XrpBX+Yd#`QEJXOh`3T)^M@X^=%h^Pj9nZt`@rN+6oyt7Ry!&rg0@q)E{U62} zHER4t$-Zn5_VL`m9|Gk-AQ7fLb79^(6P6SaAsZ!x9$kg7gDVlST||{VAD|lV>u}4c zqbg{iCZb8|Otf^{(O#9%F-11=bbIRxZqZoxbF4_leY%8kx{TC+A+P=$<>!CCO`41! zH4!hV67EwaBX@)II&NVdz;OZIci>Xc&S^u-WGkAm9m#t_cTPi%lqgh9osG(8K1KN1 zPY|XpLTHK=AzR;sWzUl^vweCZ8v>;Tc=xh7{r?F5%y}#iJn+Cj(%SZbaI_7CQw|8; z1uzv(f+=?{%mrV;vR^_-dKAKvmmqx4QdCN_BQiZ6)wNjE)+$~KCGVQO^H{o^eS?*Co8GiFiENb$35nJO?#W@cV&bbKRC?nJ%B4kSfEIa1H%yuf} z1?<+NfY1&Qn5X}Z@Mq-T>-D0vv=mP~@xJ{tP|#eJ&{mH%_K0`ZZ0O}wa0~l;+3%xE7@=|g zo(x5ok$)xms-mp_9bKX+IHSslRway7C5&)M#-4(K#u`x$tOJ}@gzuk)u;fI9d>04Hra3Sld>y7G3j%q8SVO5&4@wG{R--&N@(a5(bU+-8`!shgD#;5?;q7A+~E{4L=*9l(~3u(BHqztBv;7m z|Bk%=O=GpuDd9DT)zASCY7*|zMcn3+j6KHPRS_LsQXn3{d&b-|(I7)ao%Cs_nI4O( z?m4J@b~VEDK0}ye5kh~I5c2gqurSXST4Bm94e&DaH1qbq4gQSW|NNb|-+udwbc>y( z%>)SfO(D=32#XfNbYgs9?$4hAOZp^)rb`HOCUXc&|e;*8GpEBA(JjEOyE8{Y^aeckyaPxmR9a6**+gQYB;m z#z=>Z`!xl3sWJv=Hsg$kE^g5{+o@fWj25m$G&;z8NEOshjz#rd(TH>}L8T)L5q>~M zSn?Ev?uddVcNWY)y#>=EwgJurc$#_p-xd(~xh(&g&l4w3L}X+nESA5v%Bcnj`ziaySQVp9P^Nh1iQry(p_ z1e0eXOnFOT&ie|M^f-j-u?XAqA;N!{i^@BrP*sgV4bIVaNob(i&?ME4R;e=D8)rT6 zSv|6`myhj!-Xs2yCSsIo#f!R(wYmcT|0u8i6Y}t1tHY~FSfR>zM&tQG!h@=ed(^=G z@4hYxT{RIMQ#p@>_l`?;S{uM-8_PktrXdvU4RO(qx3~orKW5X#pD`a{^3@ z7sEu^0p4aF|2NqHKbPgd^0~0E5Qh&R#*`^j{;>Sl02-9VRY!_kqZVt?+qF^d53FHK&SBJp7{%?W5 zBJY=aclPYrf4F;%Io{V8LTNUH=vbK6J_7Ul$*^oy5aL*ZP`0g3e~bv%EL6^jLe=zm z)YN3ub+XTo^E4&2c8bPX9=xxw2gmx2Gous?Rb`AYWM2~A)MQ~xh3x;1Ec`eB->*yf zN)_?4(~41i&VzBjQ+ZARpIz#-2KEQIY-q*jNTepBL8^p0yQiV%t|(MxyEJ7PBGTdz zmKuxDoG)QHy$I$nN5MRAAxvJ*VQmC~dHoLy$lnB)lHtGdz1?pAL#=JV=Xo}SP_zTW z;<+##o&?j`1emu@hUK&Jc;AU72v1vvO1onaxpM|;q{N}lK0E5`324lI8QqF@T0A~DDl=H1g^ z*_D8hJqr<<`w7C*=Obd96;;^ZvMUy~+;-!Bo`%i@G;>+e#>MCLO1P2deoe;B4lC}| zB@ELgJfiY=N|>ZcP_HzfyCj@LUBcyKg}hxPd;cDK2-}>J@RlZGv`aD0b{nb(&K>Q~ zIi#9s>>;~`?;TM^;%!#n1eSpx6M1;9N zMnuX|RCdXTbn*R7>~~R6UzN`7>u;yVqa&XU&*wrL=fX<3N0af87FhE?qshj(9#?dK zAIrX5{3W_XTpr5cIi~{uEDio19a^mO*-jGp+_uM^e72y3yZM}9XFU3K zq0zrU2mDnzztsCDPo6a50lx*!03=-nfs!Fm0fh7qVETS0%qbEq=`un#$000zCc=~E zp^_$}ic3T_zTcJoF6@6%Wi-NrQA!_Ln$nY&r*x-PDP3uGN+E%44J0(nJ-YL%w zykD~#`$ccoWc1Wz+~}5YE$=H&v7?!qh^ta^C>r6NLZf}}({sKz>1E&RG}iYLz2ke1CitGB zslLZ4+BcF!--DFk8%A?|chh3uAX?$OomLg}^Cv93wqX2-#+egFH_e(by4imWn`TWM z)8rgZ8q*|e(i2UxraaLkYw8n?v!*`TIBVKdjk9Jv-6$*inMPSL&t8=k_gup)>G=kk z%1iY#?Jw8Moc(Iuvunmj=JDBHSJD>H6qITT)~GU`<+Y|mx z(B5fBOQ(#+yhoVrQdb;m=n^6wOHs-73BpwcVeY92Jv{-I(^i<7$5$%?c+q0pw%DGxHZq=mnJimbLHrgp7L6?zv zCFg#(1e&w47d=oqmF^)cJw#J!6iuWj={T; zvfg>LMb^8cnrFTLct9^s9@8}IgD0D0O@F#^X7n?SGGm{;Dl7iE250BIRwrxAjL?!R zDgWiXa@Zju)?vkHBPW3K0wvs~2hIxVW!w)V<2pB=7iL9szLPw|in@IE4BM$}ukN0Q zN(W~ld~Y1W4#)`66j(OSgjt;e6A=XZ5yJK+5Lg!eui#R$dnLc$uwlb5y4RNH{;MHm z6NHIx!?fjbn7@vLWs4OddNe|FS0PMag^1mJmgjUM-d97FP)8NfP_v?0s$`t$bB%7p zjc&W)m$^x^8h6GF)nwy*?lGz;ysb;Z&MPMSJkLm=EemSW=+ke~ZDgl=DUOEIbb5rQ z(Bm|oo~F0yMH)-5)2sA0y`N7tn z|02HfVC(bvP;1X?54ZBXJ|ci`jA-c@_ee|6TO(U|-g&gS=e<$QJmW_<^{|aF^~ok# zGoEgo74u9$2P}Q7Mvg-id{&@YwkO&K@vxl*c( zR(#)ZY62SQ)<8TkX$GoporTJdWr)a75SBaxq1z;c99s!9O@ZmtWiS=64rmL3W#JbB z@(;n4l=DlK_3_6aU(}mcfbea72w9&%_;MLcj;S!MjD~sr`>=dH6`{PJ^2~CCt1D1x z5AW}bMs+nFwGBUug2t+Zmh69Vin!j%{umK`H7jn@_-t3s-4Zd%VZ|6t#8O>Cp(Yt; zzmg{YLHwCNpM8BS|5J7kqnmw+bQ8^@JIP8zD25&|biia9P4Ck)^ftXjW9bcgh2Ey; z4IS_SjizWCNg_Q&i8P#M7T)cjG{0NnQ-fP)J$rv!&olS8`%fYF`5X>!<6(SmcpJ|P z547>T@L(Iyix0LjbmFTI1@r;yf;S&+;dy6NbI*j)O+CC$n9l2iry8B*HNmY6?8MjM*&zP7$Lt2@j}}acr z-4uh!?>|H(&IwA5L0HNxgrthF?3fMno{2E6T?$jyY6#!9g3#(B3Hj&XQZjobzdv^D z7~XvI&2yc)t|bKe9>Q6IFyVEWc8-DhI~kTO3PN_wMQGM?gtG5+TMQz0Oh)DH(*imm zIUcok#-Y9zi^f_sS~z0RJ|zYn9Z~4+h{8=Nv3yUQ@L=k!x=*-g*O}qAS4wx!jHI+V zwJB{*T}qqZn9>(Er}Tx*eg~UU+PntFd#ST)kSiga-1bn?MbOGsEva{I6t$yy)R}D5 zi>&{Tz3+gIs@%TcGm}O~dJ*Zpq*q$#y(7IhK@=-UlimZFxp$J#5fHFo!A4O)ksi`! z?o1MTvmlVUlR%P5oAY1i&J0FGMIGDw|Gu@pmFV;3J;|K??X%B0`%p((Lp_LdfyFe0 z7SL##OOt3OO{bUXC3>D-qi1OWO{V1v28L7Gm~?2KCZeGvqK-+28t2)E zVl66|SEAgxjVPV=21;bU4R3Q4ypBi1bH5fIXC^|ka2C`Y1Jnwtmj4h3aA%zV+Rr+6 z?3fb&{Puqw2;3#$qaDDB*}%@%fy1+alqJB$jevZtH*O`)uW<9^(t5Yzm;2v3yE5`l z;+lT9lGl#=J~{fu41=)1Vi4C@4Ek7$F>bp>+OSuaHhpSI-Fn1&{_T_ZuI`V|y1M^b z=A{n`vaWnY_pW|M_pa@ydpEwI`!|m~#yw2;t{+tXds$aMq0GzgQ`V*T$a>)|GXHRt zKBkNG4xOjnWS|{%j<(TB+C*Pc933PbeMnKXn^w|hT0&Y{K+9+z%~p88Y#KxJX&5c1 zA+#!|uYE>bNY0@4^)rU`XexB<=O z@dFqankksTSTJo!V}%7UqqCOiuAI*#BHJL~ zZArvrNr&-90mIFD^fig-D#f6kk@vo9;g`x@Gcl;2rbn%d0;);TsFbn>Pb98J8EFSf zaV;Qi4ZJ^J1+T-e!{e(2k|#*G^oKVbrz`;-9f zSc%N+*hJ-4?E1x-#?AWscQ5Q9DtMoW4iM2XB8n#>6A@h@ zqVI`FCZcR2DxiP(*oi2giYS}%$x1nNhcf9~x=YvSd%8&1D3#8Wkt9l@b99c5(+N62 zN9i3pP_Tiv9-NoA;H9xyuS^?|Ib~!A>(HL9EWO*;vGk6tXX)Fqfu(=vMwWqHn^*>S zZzd1v*-{?btJVMH9oD;*Jgj$1d3f)Z@`yey^bDi}DrZwq;BKL-{}8rV$1foF#_ zR`|e6!yC#oN7Yxffdv!lSQbrwGDAPTmTX>7*KQV7WYW8@zeo~r-l)S;C8rcIhIhO2 zOexO?vbT&RB2W_1A~hC`lJ%&Q5`&rs9jcsJi;D59QSOW$rBgRM>w)Xw{gn=$hvVRJ z_8Djvyae?R%mIR-^8W`ofIDOSSAJF*A`1QC_U+-jckP}{M6pD~@%hf^)-qwUS5lc3{ESel3(7iF1UhgB#1w4QVX1X2=*Yb9_z9(lJdfCp#?5x!XP3 zp1RJ5q!{2fPjs(-LTsmO=f=hfv?%2Gu(ap=$UbOa6P#uf*)1 z{m&W`(QqPKNJP7d=qwR^_qPSvfA|y@6_Hi8*l%3FTx60G3r-zBl7HaSy?J|ftk2a) zFV0>x_xXFzKQlCQ*nsxdE^V7xBEuS3I<;DsQDrALQWa_`Rma-S{%|K8g*K<3-G z*zMQVU%CCe`OE#g`zv_HxbSoj2NpcQf&R_qi31#5VEWKT^7N6l<+;O~%3pO@l3Q5! z3fUW`(v9c4v393icjN(1P2qck4myMO!EC?~t~K)x8HwjjL<_A&qQ#Tv zwWw-Xg-XWNC@;mJ^l3dxUX6qIh1KvrqlL$nP0*xHhvw)D&RReORAGNJ2XJ%zS0z2)%Td9& z5@nU0)VtwxAr{`oweb4-MR=yngN7DBefkrqZ*PEVXH}>w|BV>nruc6}M9&e?9w(Ro zzwEi4_{ z_{yCl1LdwAg5@q9g8re)|J%WG*N(0mBzNl=sNhuh&Ovg|P7W+!9@DQ|fIOg^pFFsy zpFFg;ufhd}_HSgF+TYK5u=9f40{?SFEzCsC%tQ??lfB`2x;1v9L%(-p9$*qxvQboR zbJhaJ^FDa99(_zYbm5&+Tn{t|XmwtX#wjtVCv8B@^cYk<7llg6D^Nah9m;&U8znDn zhIjgMcqcA|=k+*fQa3_=g5YeYZRQNZ4+?%O3m?%&O!6ZGrZ z#4@gTp!`XfdAS8)Cx`-*i2Rd?S{WW-fGzMaU07V#tsKBP-)S(4s@X0MAn6_TKuJKy z)EGpVc&B_cnj3UzD8-?+q(hBV0acP$p+fv3lsmNnrBb({#NA!+HtXSeJPIEB*25$9 z1*pG%7pnWL1$Kt2>%Tkx%Q4t|!maYIbb>+@#a zpE7AoR*!BStigfJEkOazEa9Pka=SJ`a%8*EzvXslA1Zff=e+HM<&IA5VO(Ht(yc>~ z+`Utv+_Q6#!Uei_Yi=3dBUt{h>ug&=yQ4%Ar-{N&69vaRFrcN8sPTEChUe+-;CW=y zY21qe>=&hKj&`>%*v zpKxG6(79q5aDfVZPt%n-0gm{0V?EHU$7M;xQUlKji^>i$Wp@aB&6=F`K$C!$>2YXi z)}v0U9yN_RR6Wi8YXZt8Y;e>AuWW+%C#&Igcnv%bY=tI$Ce$mZL7m2Vz#ypl{0$u7 zcf`Mnh`Kv#cK>(&2hXkVzb`uW)zQ37n>OUkoBP`Ri4(?Vb?e&E>hIse;_uho5)$Gs zw~h#r+q4OF+ilw>RBqe0*liOkw`=3TgUGgw1EESj(l*l1(yvp5{C3ZoxdpxV*{SyPe~%Gvrj$O15fd6KpaX*o8WUM2HuG}c%E1Yk5eeZ{eH89Xm_VsIF2@VdB!y`iE)~&<-)NRuytk`wniVG8%b8sFK(JsK!t3zw~ zt==!$@&~?ar+yz1_5OsY`vC_AbU6BR4Dd@PYL-U!<|%aJh3;gEac@tMNsk}cOO`o+ zQNTD!k0Fxim<=$AXlr7xFdbT^3TT`dhq}pHJb7^~s+!iIV$v#Tb^2YX>&c0uml z!ub-uRq;>1JO) zL>V_v*pua(MJFhSPE#(Op&Ux0TuP=KGEpvFARAq!Jo=XM={6ORl?o__3dyc?1O9KG z>o;x`?)zw8-jXGYb0$rmnANLyFKb{>pzQ0{$`TYDB!@?Y$q}u?|IlsSI^20(Sm4Bg zwxM!J>p)BQ$TsrselOSxhQCQPVx zfU+s;QOf)#e7@TW@6?^}Jh2WQA8v%^$~>rrsZb~7Kt&Uw8ub^}1Aim_J)HXf4}a6A zI){idi0B)8QNg9cT#GqB>#8B=c2eTK>xbequk1Tvz4-1COX|*p8ODtt-9EcK?Ypm@ z%fI>gXu9#)AiDN(54!q6Bwcut5|m#86KrN(rT0_ZXY(g7SE&r)={rdI7ef##= z7A;zoJ!b5ftgcVv4vz>|zVi3QFaQ0AZ$!k8xZ%J82d4;% z2(ol;+gjc^V0v!;_$@@E-y|Bbn`p>8L<8SaskGGRz{*065X0Op3H*U zty-YO^*}+r-6&v+iGAjH_EbP$o<%hYjvb=OIESqnT3)txA)bd{B!fWPGYM*I){i|YASBDzLI zhPi=T`?qIZ`Dm^6!n^Y<=55n&Cq#|@?$`?hu71|P*M(gzx*N6Vnz9ys zlGkBaaumiTM`3{>8kZ$4NV$)i?RC!mK9(=12ujt1PApaBEu7I%4)`J}7xr`lT_8{@ zfy@Ll5y(iO6apm?D3L%31d1onNz%|)|=){$zqQrBF1*xg2g;%d#E&Sn!AByhXyJzRx-GAj=zH+(ft+(E?y*hK| z{UO7KWw!6oL2l{iYiSkWZwU$ul|v)Ke{zds!NcD(E+|+K5iSRWhgdqcZ7c5_Jk^#z zC5~wF7NYUnh(_-u8ouYJ7*L!CxN?C97?7x7KwkJky0oYf8QrS`kWoZ>iU^($ob2=p z8)Vcuyuwmr5YD^jrD(KB)}j&b4!XD=HBzHdB}GJq_$4TNE(WDjx1z+YE%5$I3$Mc~ z;jxdkz(r7hIt}Uzx1plVP_2Iws;B+}1o)Ns_ah?7O`k*lKwq;L*v@5tf9h@d_R%?a zZyX%_gS0d7@<+oer>sS3qgL_ruO?|x+Yp6D$?MR{q(ex`IY^Plmdlzot*IsOi*>mw`*{LgBoO1k!x&&7Q1SyDP|-Q^ zqSI80j?)u#l&aDpdXhe+dh{VRqIan|?Iu6kK_Rr6TGIwEAyyBs^Sh>F00p4+@g``_PDpU%f6o@DB@-Bipo*cMO}HoBzC)=($*; zsq2X*Z6+G`#-lOdVII)-Yf>;E$#3lg%vONhz(?o=PknKjkVZ}rCU z?eI7mjS}aUqin)zRJfo=l@uLnrpBR8nutcqo)r;6CiYy{p|gqmto0aT6fw>qV2V+I z&ZNg}cf~&YM)2GJ`O=cM^*P2oqO!qv3zrCYT>nO*NX1kxl@#rlk=~`gxp-4 z{ltkA`Ae2A%N{;rWM*W?PF6qv0E@4Gfb#De8XocJ8xbM`;8|L6Z?eP7PKckgTYLgMsq6Ju(ejw=t-CTMPK zhG*&yc&EgoL@M_~uR?`n9V#2OsGcO^sZ>20n7MaKK!909IO`}TJ$jh*iU&LI@R@AX zt6q{sB)BW~mA5|z6u-`+Fz&^wnF~ignepP}ma^X=olRxu*uUb;0Ui$nm%X(~fs zQ^f}u@M$p&c#DE*7q!mbXm1@oF(=eF*y4(Zkgy0jBrNUO1KJaZH*}*z;)Tpev z^XA>(yk$%7;iE_M($mrkzxn2yB3YL0`FVN&8ceu$?ONfEojY@J^1mPB z0OOqN-`n-oFC8WFiX_Fkw;pH|@RdQp^G@IJkp>+GDm&-( zh&1aFmZF8fq(w86i2712o-)Ou+IcN1rLbSYI6kEH6*MAE_6EFhR`C=&1OW*>h&hM7cV zC(~3(Q13K}s!VsqKfn8|6YN`1CU?PvIvMkZ*UETqVk_DApkPzkFB9mhlLN30z!;EL zEEg!w1Af#5mO zf&mk^&;tw@_7>68?>aQW;uz5BFj3@}^dknGBYQvs-JH>rB)ytUZk-LlT}g!ADBv09 zsYVe)jXLx-vtKClSUrM`yhmJ*#>N=bHN>Ijg*a46j6%hP6)1l^8l}J5fs(14;LUq4 z&S~L!`%QS9nF~$qvrwN*hU)%0sDvln+Y|7J_+R4m*5G;kT*cnv@o*rADC?c?Z|(EH zAcn!T40vx7)F&3fGj%n*Zt~2-c9cknL+LZiQ0~k+R5VAU%7r-8NRCnVs5IohX-SI! zvmOyf9Xhg(Vh}Odpu^}C=KUh(NFpw{EB5*4q{o0xtoABcH?4+s?%28+vxnBUOq<{* zw>%))RCbR2YXo8(U@q`m81SPWpr&~8QFy>HCk7mRfC0_uJ@U)mZV!om=CR`cVLaf! z4&m$M3N8%bul)Cve?BZ+?%lUv<}0txyuWSRw%k*vPUT;}exooWBjX>(gNqk06^f!h zXV~x&S?wY_Sp9;6<+fp=)*X|E=H{=QX{VL*h?cxgv~Us8{G|>IaPffR7%*Y$j~Kw3 zU~vrS`57rZpg0C_pKwqDWp~?77nas0qkB03>&(eU9bPi%Fv+09DE13wuP~(^7>jVD z2!E3ZWq+VaKy9-Y)ssb3Hb$XB!V;AIay3dDx1z+&E$}vPf!E0>czn1Cn#(Jp-ZKO0 zFE2wy>!EtBqT(0o7SGU!;=cwFnIC%a?-cXe`6WJ(O>}Q%R_?3iGLNcp;~C)dXQ4@2 z1CJ9Tyi&Ho+p-TnXJb(+J_==%*5Qeib*OY+i)sm4)H21PUYdv|rfB$?MT8hdv}dn% zqh8s;Jc4xJ~4^Nbyxhe=9i*V+25M;#Qpi>>twt(x}N3LA$2U1$NS6859n zUpJj-%?m`UW)dx*`y&R-T~73xGZ%PKO9}=|oW|U6TqMV6$CP$-cs)(8?0_vp3p^;fYixe$_BoVDyH<7r8B4RM>DT?MNVyQ{Q zx9*C4{yCiYf4R~pf5kJkEd2JrIUbsqEJYbkoTJSO@qe4B)z8 z@m%0x9&nP%(pOZ84pR*U13sh1*>BqeqNnGC`3616{~s08fA;S&CNM8>X$Sn*tSc(o z;=nZ;Jx%S4B-Bt2N-ac@*_W?%L|&5alKo00ImmI zHi($ZpIJ$#>=7Si6woUr8l8*+B9a9JnzV|>)i5arb<84aO6ySd>^f9rUYxKVr7!G6 z3FgabtKoHO5j^*9geENt>Vq#qed-ca_Ki^K%0X4$4H!@?{ym+Z9lvy3IB=VYvYa_V zA>GQ_L6(=R=8+nAKY=QB1=I(&L33_3JWlK3bvh2-=Xby-F&3o^t5G(76)K$9qOvI# z)maCTL^NPsg!ieKVi2nIPjer&4gsRG_uVXB__=``-|Vae#AyU&8?I4|p^NXy`1Jpp#UNjwu*W zoj#|!+3(wZqo4cB(0=+LRNb>hUySsOQP%1um6DzI2A_P@Qh zkZ&WpY$W<{J&`zvXw@vDC9{YY&;Ka~yt0-Q9^k@&;yj=@2K4{X!2^2ir=RhFkaLtV zY9^(vE$ePA&?X7^)S$z2F27JoK!4sN&b*fStyzGt;uRK$`UzS*WzwU1QZydmby3o>k!e6Ukd(Whu?n2f=sg0 zDVn*UOWsNkd@Vs0^9(em*P;3DEqI(=3(vF_@G@9Iacvh?`+ngFYoQ(Wb53zC%ar(?f=4tzHwAef;=|e2c|W^tbYY0vplQ zG@=i-60Mt0w0sWH!ns7RFQNyzz{42uFb^2|HYq&d7ct-@6}34^H)pjYDORoUL3e$= zBt33P0+uVhRg1Bb4nqvl=ws&jKs{PZIs~N(Xvw@cS%6Bg&*_2yLV91 zycIs?Rm$!#&--!EWQ$OLJ{Ria7onmpP;Dp)RjEIT0nYcIXZuDGDSdg5dkU!_X8~nS zQXf13d^!_qQxw!6#X%Fl4j$4*cwOHBZ{uc^IInB`GG3oHKNrb^&zZ?EJtofae@+^#*Q8kl!KkuM=ad;!k zv>{C_Q~EZPhYt(3Hu_|vO=bUG6iW@b@-e*WWrM*iH%vk_e~5xu>IX!Sy( z#jg|1Ur01(nL`iwB@7s|gA^W690RyN$i)L(xj=Y4S)X1(=_{+bTMH~Q3OJsu#S6?| zd3R6>Yk^wyko1T&@N7Ud{L{5)mZC+&1RZK$h(UEz6e^!yi3-LwD4Q6EQmJpi=Sr;N z6XKN+1&@PUpfRq5+Oi+2f?TNb7DKhd5&wT!3v|XmbN@}h(@#5<>~q`aQ%UUq5-M>l z)Q6vk=6Ezb&TWC`_wU2&&d2aMyAvgo*P=}F8kA2HQArX|Em=UVWF6|KalKD~ucSwa zk$3n+D}B@bOfeWHiOLS2>5`y&lReno7607pBMB<|2d|gSVa<0Cq4M@m8QfT& z*t?-TbZDrx;m4b8Dm%yiEdntPa4zsL25?Q_QJP?JJ%BO5RU1rj<^pG^LiQnhljxUo z!vEs@|KS*a+`lf41!(2T<$0*=TcFzN36=Ms-~i6}FG)lRzw5VGNb8BFls|kNI64RF zlxV2;iqOO_fMC}CH^_~e{kjie-;B=Jb*DEfl6l|wKt5OnG^0C_?PN`j~nm5_RqPnz&|Kh z!GhLp+sR$K_pnZ$@=VsQUAt^ouU;)IDEJ#zF=XE-N=YQzxSnXi5~A75h-R+*5d$99 z0~iB%UWj?XPcXpY9T4AZscp@O5LuW}IrG#S&qC&f?)w(VrukyR+eC)Z;6xm0>dJrnZXlM?;0L>{qJigMwD}5Wh zGxoygv>v6-M4@crT0Ft}hA{@!&&A-WWIYi!&K!VsfZ`aywLzCASeyqG*8?8r0WJ(kCa>(T?e(H({U_qTI5sdAFdy&>2(l=> zh#fjw`}FOXIcwHy_YWRCl+W`^tm*${$6iDvTZm4aAX+Cn^nh1a621HgO_1k>9>xI0 zJK$3~(|56L>97#%%VTR<=8dbJ@&5d>IYv=s=g)|{K5r%w{4;m+yb8|;8bk~;YSB*; z(aju#_NEwwuveH_izcR6)Hmu;OXAspXjD#Ij3=aMlu6o%Qg`2l&#e#Pm9Pb#$8_-6 z{{l2AqoA=KgNkfW?N|nt>JM@NXZ!~fDZ2jSo@+$&x_th1X`EdEwM`4PRSV7c3*c#7 z4KHasd{W*=$;3F6PGs-%b*N}qi>k>wJee$_t~m~kQgvv_Itc3_CIOvIBG^A^h*5_z z1|6O;iC8YVvB#f(r;P7kEGwDE`(x*ft(Wo2$Oe|@hc>eCektC+H>zI?d3d*`a^FD_ z*18{Uv%!9wKzE%SfO7%H0M-Ouxj=CYC|(d1)dku zJLZMBE>Ii;6z_od>3ILw^X5JsZk;;3uH}_c^(=G7)XRvPT2uaNrFTKPo96?~B5oK3 z%$EdAHt34&4ieEx5)on0A;>JEdFpyJGRLA$n%+?ljE_RaGg_2O*o@LwcA>=et?*7? z3vcGv?`okr9}RWVJg5()L7n+7RBKd!38og5~Kh-6*FC}M!g zQSX~z&?-BZPr4C@m3kld_-}coQkFyWt7my}ctgvxLz-A7@!Q|8xjej2OL<6_W^(TV z5!O2UIQ}{IGYG^uz+B+BFyOa%fC~eRq{%*QuN^)2KOO(Yv4Cp_{((UjzkonX+xC%G z?k!lbaPfVf1Nuwn5%ThguHGQp{XWqw?h}q8n!)ozP7L6gL1k`u7tx44bZp?9yjS{1 zWR4ruK%O?Vky7)0ZB%{Bys>pNcD?q*{bZfGi2K6a_}MFzM0}be;01$#2@>;Lt_SKJ z^+1yjp#~lN()4I*(4&4r44#r=P(4YD$_ZLLaW)!d&&HtC#jPlDE(YGm1bCf@fyZYr z!y|qqG#Q^mO;)IKmqWGY4{!h?#p8qLeeOT*V1x$vOw?9VQVi)AR^7JA3?D7cuIUdf!;qOH2Y{ zO(O2O>vy2k`(i*JFDjk8a6;{j*T%5s=cxB7Z-4)0^2k0dyE7ABj=*ZKv@}~D`lR30+6M5W#ro3<6 z^8B#I7UqG>2bWE*WjVC8WS+Zq0F#KjDFW6ouVsGAJlDitVFEgt1++1W2;%-Xjt%C= z$vV_DtaH=@lUAer*U>0*Y8OhTya6A>8hCxX0G^g8XmZy{u&$_A-8QCX5Fc4YRgQjWvBFdL}}qf7e^6&znLiSFI)q6 z`!3PJ<3#gfh@Ojf%nME3K!=CFk~g_$+swW_n#;rbIQEM2EE`(bbZU5F?BOG zzfvWOc_R0Rx$`q<6mZ6%#mhzk<0TzN8bk~<>d?dG6~?mx=>nP=qS1hPa=ISX%~7bF zvH}&PRVaIo>w()*;;J6r7j*DS)4}7|MtGcD3C-(*QFN#2A~#DMnM9?}_j#kB+G7%t=dM3{SH17ux#hCwk8||+zdWL$qWSTj`SJam z%cJ=1@7YS(IoGd4OSx;`w$`VV_~+QqBoN~O=K{Zm0bCn=6bA6jAYYe%2;)F1X|m)0 zC*xm<{dQsU?)6Pk%316G`Djsl$kF2t+x&&iOAmwmhQqSBbWL zOhq%abYS>%dE>gb%k0kkQl0w*`FB3Pe>0gs1Kjt;e2{Cw3n$dc_-J9-T-E{kv*WJM zA=j`aoqD}Nz_TU+VK(g-BoU1bBI+?;X5O5#29*+*qdaSY%&Wh9 z13t{NPppDh+HQDUT?NhCQ=$3tBGhyMssq210}v_RzPzK8XZ;@ctUh&gVyV6J0p4MB zL4-H&G?KQVMB-+Yj$emz@oP|tdzvojQNt96I;{B_wP`Zpl`vg2~&?=mW zz0?<)M114MKXW=C3p%>oCx6YsJNId4t@Xi98|)nWS`14kx;zCA#+) z*-Bfo=+4noMK6yXb}zDRb4!m-zRGS<{$2C$d`w^7CE8TxzONa>8(Eka&K_OwuK0Yl z%oD4<3f-**N}?*wAYis6VxlBsv{{cqsod|TMaMKfB2sh+NEgxEB%)y=&j!SxM!F7_ zr8TIKxD;j2Za}HayHMg=0p11yUZxm$9FB&^=PRH&x&rEhUqF3(1ysv^2L?Fbe~y3l z-hAAnGaQ;w{)^SXv1oW1^zcbtj}j+ElsYS*OnfvdBx+IF%sovpimylgR6Uxe=-_XT zL7375C7`=WzyOn8@$?#R5b&Z=#D0?qySw6_F+5qTF4{S(!ae48u6p0ILz`G84{9cl z>(@da*}J7Yq(>`xKzBc7A8qgUt>liq+godWu*(KJ$Nqh14!}CVqcFf#7kpd{;9lW$ z(qt#tYe&DH6X6^1udn|X=k~w!eNaeixm~+3dDqsuHro$R5M@>%`k^Y(H#Lc_7sG(m zrbJQ;qNEl?XPXe64I@e#MRZ9Zx_9w$KYx#XatiY8$;PCDH7j4g->XZI+&!{|vP*Di zuU3lYGtS8YrVndud3ksP3x7tqHvG=qa@mrovb&iB6c|O-9!bFSW)WjeqSEKqPhzjI z7{~4)Nee&2S~N}Jy#adEx+tJpYBVaHTZAVJYf&a;GfIBH2R?T`fLHuxcphQT(0TAU zHx!!dr=X^yz(u{NE!`wlfFdT;TU& zfNNfexd6`%^X1y$1=3_E{ZGU{`w#>ME3t3gwezW5o3#{?trU^`1ks&JM7N4zz~y=l z9^k@&WIv*Fencl)5S?sIlsKN~(ng~DYz^z)!~0S9eejlT!l+)EJtCW026k&H5AEGj zsrho>7i&S>2gY+Cvq#s(5ZJm!z?{7g!Ed}GpKu~Ag^28=Os42a6CE6)bB z;d&s)3iD;=&FA&XY(N#mYE(>KhjIy3iI>FC%$U<8&=>H5xvq?I^+ABxN7|t`>4CM^_3%ga{TYM!Om}g4uKd4I2U*r16*~% zU&{qt7~s+bIS;r-#T{Ufaxt?~VoRm|ND60&ST>jA* zaJ~^K7+`Ek3I-$u5}ghrI_67stUb}WXNfNFCdzTI?R=5Fh$LfT!MfG+vj_GFko$FN zERX2ZQXbd8h0LD`=7legXsB=i?hV~BtKz+6t)|G$JwfafvOh(@iw5=#7Zv_HK+-vO z2T9D2d5^e&W+puvFn>11pn96tu{$VUKpE!Q<~WovitstcI|Mht^Yex9_yz*AvBA!?92 za3+-KL>SSLAfhk35hctdy8bay-tT#ue*4_L^Fz_T_ukB%JhDq>|4xl8BYQWO#}8;O z^JjzWfy@DzFD{+@RK{nEOWWLD57a9>cb$>zfjr}?chmz7B6xRD8|KM|XtXj3Xq*~{ zx{@AGp4X$QiT4MtK=~8VD1G)#lw{tWtcCa4CGb487#{LcXl^Zo`fxhb-<^eO?qhHO zXa8R)k>d07xaa1#AC2kxjR0K!042_HpWiZ+HLXE~i#k*>#iB-H3~Cz%G&DNA4irC6 zNr#S-&Qb4UPcKQtc%vS3B~g{`&bOaA+lkel1>$qnt+PhgzpH3|%G=-AGHGBld90MZM%1{)_m_R8|)nWdCnYwxj=CY;F^F-5BMb>@F)!6 zd7&$$$u`<+M=$)(zW)J%O6<#VyBgYV<(DTL`A|N2lHIN*D%AXl0hwj#0S0_ujp*i+ zq+r0M`lMihxfwm+0q25<&V)H~fiEM74lx$=BT8CE^xX*}yZiPc@Z3^D{PBW?uT8l3 zboVCmh@Ooc9AHQjg(os!WZt;prN5>gXclnRC}O5k4-_$yXI|Os)+j2Tw_)5LXNpEM zDFzJ^c~(|L4Pz9lBrZn<=GkX9ppcpm7{ z&LE(xQA9u1J&ZcV%lkP=uX@WQqR3tGuhjcQmHn;RV5SsFAe8d4Z7+A z#Wlf4VZc?=WJ~ti(To0*@gEQv!SBATeY0uq<-BTimnx8j%F;b5L3!jscDw4Q7{Ivz z^MKox>1P;_-k2U>K$1T>Fo1bLYof2(6MfN!Xn#ARqoawWIHHWS$9s-5XzVM9= zt8yj`4w8p;ufsKA%X8clS@A3}7vQuWMF->jGRC_l%}{&I4?lTq+CMB@q8C(L?O zmqgSyifF(-r;-3a)-!m%&&c|Q4g(}TMsUt!5b=^E;DEc{ef~MFdfywbR=meO{+#!7 zk3ZLU70s_dYkn=AnxDVir>no*vvYvlwPT>NW14r)M}`N;5f9>@W539m191Giv;gJ- z#WBE@2XKFYt4Gj<0mWwqT^MkKG}-3=T>Lv?Kis->XQ1s&elxp?8c-V5q03GT_(8#d zGQW)hKU5+5uKLe&0aJ4#V=H=q0jI)=j<<2}fFqrV4s|B_IFjg-zC>qN5dCo0X+`Cp zV@f$)5WVD?dlLsXwoD#SN9hw&>Vf0yWbB^(#C@e6D7v*CV3!2E!?Ugm9~QxVaEe!$ zS?}-)GckW&ho;;UWL}S27erJutwkm7uS;5uvW6`vbz>Jw+0OkUm53nZ4@$bR_t_yHo z(A6XOFa~h^Ka2r4Nt2!WpNjuLe}4DFt*`G4vmMP3ptIDH5~wK|s3E0O9lD}mKotc8 zQ{H~=_2GJ7=K#3}>;268I|R!e+l9!HZA0bup#gG4*N)ced-vL4=eM6# zZRP=dIsPBU0FHlGZSYYT;F=e5VF1q#e@mL|bbIaSCI5;1KhQtI(l#=}`r3{*xgY1Z zrlS->$H<>fIWfRU4Je&z(-o>g-%u60O;0#6fHgtQk9t6^57GTn^Z)}~Jm5wxQgQ(o z1~3mWv?_)HVGbVfWhBv8ovG;aZggN}r@USrgED>ngXF1Gr{CLu;6PrEoA#XCzh||7 z{>dA*IaAxqQ~TG*m^G3;BI{*rd$rQNWSx8KfzJM-L(GSbx}Vhp+oy;KGwI-$Dx#TD zKm$p{Q)Us>&C#fwuEi6^7?eE~gHncA_@s&OIk5tsN8*(IdYXfyp^kkI>WrIEjr;ZY zpFig80dk>OeE;Uj&-zY(d2gSpNy|~$B;ZLi&-aOFVq{M*XRnVWpsQK$@bhGy!ziex z8uhBJk{f&c8Amw&-=YESzqf(|Pf5J0D?B_&c5l74~#mFWj324s^D6>y6Q zYk~zHq+r0k(hdx`TakVf16U7W9>BT4>9$mOERyy|wa@F+HvFwYu=$*uhSEgd^` zu|{ik*{Nx1ZsP*UXTQjcnlmtS#^5I{uMV%3v3yEx%O{J<N+L zd9vaa#=aO1Puw8Mu@ASg#JhvmXZRn2Qq@ytq;Kd}yF&TV(p1J4NXI=2d*C+5QA z)EsCIt%o|{2voK)P>okXrG99CU~FuxayM+)pw7(7dXMPwH2~HOe>gg&gJBKIC+Sf~ z(xH)Aix!d&fszgpCe|@@=xGu$*d$`KBw(B*s1_In)p@tR{V|~9tGo(z)2qv~M%TML zb7TXhpPTdki36Kj#_()E_xShpmHT(|drmy z$MwLMht|9s_hPlov+F$E?GeB`=;Dn6W-DHSB1V}63^ECdUuXvt?+)VrIRVX0F=%Lr zMeQ^J)umOalCT^V64_^CBTA+0gwG8vypxy0GcgVx-|C@B8VB_e)&g%q_1!OU0OwI% zx^Rho0De!iMV6era)v3cRM`{}^-Vf7HR<3h2?#an&|cD_n^A}Uyc1dCdY_2rO?te` z`}W)w|E$NbF7xJV74AFd`!d+aU-9%B)YQWDK4rGwIp5dUsrf1OK92oJj(z9b-^Tg= zcj;uU{?=X_Y<2>7wJ4n}j0L|316-P*Yi6)G2HYY|_Cdg>tzDDA`mHBpg@6b#5IK|kXG-`1d? z5U$J>cgbD0l4C*~Z+sKWoRO99?wwyg$K5@Fl7Kv;fNjd|AT7qR|GlI~UxN-^O?tF7#Uj`!pjE1f zCaHSVGYP0=SchuHm8g`;^}w|#W88|8>2Ja3{C0T7uYl*#7vOQ>RcMOzP$wRP>ia=Z zjQ~^{SHu@T-rl%)>03V{`sO!@f3cIDVcvS_qsRtk9qRFpWA^jpdLMfmm~`kZi5OxO z6hBYy^Ic;U+`Gev^_b6>mB?E&?MZ(76}`sk=c#yljqck*9@e|1%)H;#>(jkcpxmWH zklZmcSdMHTBDZ(G{cYNW%56dd<+sI?L_sd;bFxsx85fnpD(1rp>9qLXh#Pqf{suyeNBFJM!|r_ z3I?24FrYepOO@#km8VPv1H7rwg#nxkFb25#ggF=BSpgRYxMl_~H>QHr=5%0VKwiII zza0BN;Q~Ryyg%LY+>9Cbj-NQ5Us&|#Vc>q2#eV2LZO(!zewI}e%gO8^>u!$#Nl=|P z=&;zJ!#L*43UAh-7taTp*egs#AbaL=J&^gfITkg!9%xvN3dvC@mk^86$@@^^@@{yi z%!QYE5j?-+T|7&mKKusMR0!3br=h~bNdSO;@IdCxRo+BdUl$AS-#m6A!?#~e8E9OE zrz9QxQv}C+ANzS41!afNNM~*1Wuu7C-Tn5nU(@DSDre0dTQ6hQsCpR>JiP`v{5;vy zYjDq23h(dJ#b55xIZ*EE?DgS#pDXtH?Qh*WOl}<#B!_nHWUaP)uMPL@ggheTKMn@C z>H@{}0N1<_Q6hI7~seS7z4r;3^-1Hbe5V^GBqYi$px4P6vu#4l;gqx)&uf99T>oR0M7~(#{ixg z{H6{STxvj{ZSl?P*E{SN-~HmT@A_Wh0)att&py4ayZ7w2-MxGFPaBoz=iBV3zSx<& z>V*)?mgjx4Bms7})&m7)f7p8|g0ee^ci#**is*0DqC4~H6!yy1!H;=1&j(6zsCAxo zcO5Dxti==O)}pLw8%kc^3ZL(G!|Uv3cpi;`NAgx^Zp?++bQ7w~OsM)7%L6;03AB4V9=&u-)XjK3c* zER)NAp0ACrm%$zm&kt>Ed1i1^#oNK9`3>yh`y=mv=v#YHdJ~0Tel8Z;y;Ar z|INKNWZDV2 zExJb4={u@Kcc~m@QYp$MFDDOB6XidQ0nVAh+tsPy=2LWFNAtXXy+bqof?7X_ZC8vx z&ey<@5IHO&TwcC>d3IV_np;fDlTLq@w|QaP%+D66bKUF}$g%OQBw(#kzy#*a>=kC# zp|?qgPG(Wz)q$x3TBOCHQKBAoB`s>EN26+D6e^hol$YXAI{i(QxbrT&rLFL~6bsL5 zA~ZXnhvr=Y>hv>E*?K|6G0(BjRNx+G?QMX7ikVnrv)^n7zPY;Vt|7OyhUB< z{RbEj_5cGMJfIPosUBTaFrb=(0e2J(D5+pT5o>~q9^k|PS1yoMf%1Q-Li=|&&g<7F zG}ABekHx+VA40;}r#Mg^H-22!kt0X)^YZfkv_bg==|uiV+RoYMqEN)|w!1#tlB37? zuu;Iv%$wO0SMkYk?hY~vNIv25M5stmA?NhVo&|-Ohks{d)py^Ym^CY9 zjWV~`)hM8!q{A@h{=;V^0Xy93>E(+5x9614UNoV$^7eDRkNdW#Jl#|tH=vn3(pm2t z*xgU=qxAX&DD!>X=i9M;u%h`XdOzp<3il6}BO=1(h>##Th~t09UK=v(gnQ(;i~%+x z1p|t>9>98_3j??==;8s)0bCfsHG$&20n7t9{w<`*zHYA_y&@;V*Z&{)|KQjUi)<@* z-#*?pDt{48q6IXKX44Dw>H`c|NKy{%wC2l|BC(jf|? zFDdW=4@jX#lk0-`RCquZl_DE?QIVntsEP8th_Xu%*-BG>W;xpbZoT||eM78& z^xb#GzVbC9LJp1KJ;)()*KS>{yLP{s%e#(?Jz;<7+`5)n7{8-io}>er_`0b#P!eG^ z>agCZRXhT?9>~7*m zB=_vI&pzkuLly)bOM~guEig^wygwGE9~>~fAtC7aa=`gAf-dGA{#zyc0F;0D?KiSF zG!b6j4(|6^F^A`xZ4#F8oO4zEZ20eC&h=$XXmR{~Ei~r+?AxU8_lbU=HfK^dq4}}T z)8vtQzmGLPG3&#JPaLP@{BSL;fFo5R+%EJKG0*v0EM#1M# zxZ5PG{Qr;tUVXGaLk4NXUR_)`UZO?x9NkM#(?bFSxE8pdUZlme!ixbV zwSa*E@6k}&Ndsw*4-ep4K*xZ#bc|XH4EWWH0ku3BVAA)7FIA&rS54ae?)62JCPi}I zuR3h(*H6>|eWLqlefvdgF)=F(e)!@0YZeC2{jR!?zB^j?tg1o`a7aj1Bs?Q_10>Ah zejx7#WXTwsm59DJ3&K?kx;YZjAu|a#WUWPuED22xtwh7r7}Wc69cmwV6*Z1n5PI|_ zR6ie&5N#8JbCx3L%|ryzd6;MdOvMD#>eUE3@-Tw-tVhtEI0T)_+Su*V#q*U~w7TfZ z%R0Gd-h;N)80}!)f^Yc9xL>hihf+njXkZB6@7wbCMrZkcAICp?Hr#hxC!X^YH+*=` z&*=AY?$>Ahxz``%>GkXVK9Tna=&{eapW{E8^Z&5ndCfK^yYRc4;3R_P!2qKcU`>!~ zflBiL0|W9Y_}oc%o4Dl#{d)AQx_7*9;J#Ry|318r)@Sg*yaBJ?UpTT@c26J+-Ab!z zCas{kw1n;y7{Ijv^8m(x`@9$sM|b$}fJwBK#tI&wW556p4~U>|gdWh`1*+hES7a0`GG4Pu!ZUna!EJ_vk``E|- z<0Um+tL|Fryu4LR+HqHb5-$(b3 z()tV?oENqA5m)~UFT01)dKyJm8c*g@7@+e2t_2>azth9?4=)BR^r;1=(ngv@uhCd~ zi$(|xD5(W>3`n7_Vpkwb@Bjk?8VL+w?*LbE2z{`#NzvrVz4Lp9S8?nc-+#Y;-rqBG zfIiU?+HJQ@%m4V}4~wq#zPZbJgnryPiBvhb$}m8cO-Fb)fN$X{+(Wlux*}n`YQ-(t ziRhnYMQ?`%-Lov{XqRwnksm}a-Uk@Ne>1*ME{_B=_R_$ zrxv)4)(Q-mNUzZtdW(kBdo+Z0(g4~+eS{vsJRpU-P$qStEV_Y?Q7bw@x_5wfp)S3% zvt`l5$r1m)*!RN#{dXR%MfZ)=MvuBB@AYk43(ucFe@&V|QQmiS;=>u_u!d9#2Jrjt zknm4M!u>Wg7AP`iXC-2?qI>5Kc5tuVj9$DOkhKQwh1afx=IQZh{A~=bI~aqyw#}&Z z<7U)2yau5=mY_Pv_{Xmx_`9bNwDfrdU3>;XUo1xOr%xdyMMkyHtO#{%MD?FD{@$>- zIImK(07R7k`~K%QW~?@G&;MmrMt)UrA>;4hU5Opf)hk$P^!sktXZ%IKkMH*xGybFX z-TraIdtWx|Q_}A%o%>lIDi!}5l3h6ACj3f--^#!M)&#GJ0mk02uO`TQ0;~;c6!!6Z z#o^<|=0`{TIT#@F{@_7*-L^hc*rE6x>PGKSFM6H&&=!FK!)PsyCYdHuf)@kk5^I9b z(tQF09-}AdA@NT-2Fw?=fK0d1I=YoMdNE)G?eM{X&ncX~r5*wUcxR9?fV~5Ly3mBS z?`&H%VRA%%ukZm*_7nBS>c8X9J{&;wdxY*Ar41h3S4&E?6y)Y!+nhl0*`MgAk8c+k zP!)QBBH37LWR0 z#i35ltEhQ88KE58BF3LZ$VYc0c25h1UULL?0u#5WBUeCS|?+m6;XJYSwoC`P5mR%i-#!rdL?-kzP8TDt? zK^_bc{T`nA;CG>Kgx0Tbq;u(#7tWnL@#8h=g2m?;17?#d2VFA;csRi4b_*UC9KeFx zRT;M`62@f77?Nd0v?`-lwv4W-j2qL|Vtlhx1ht_xyK=8o~7QRbJm3_Os0Fw$aK&1{*cs%$0P_H2KFHTQz`%g_iozKK zBBTB-wE)L{Mu$5ed-Q>`s%pP*E%%Fy&z_(kcil>= z)pX4mph`Gnm$A{tcSH1fI`+{Jw}TW}_X<-b^l+HbDb$|9_tQ9`~byZ7fy@Fr9 z+E$ra09UT+{$a;(w>_ci`k`4e=<}7K;)aiy@%Qxm?wQ_6TXd_>4WH56@6%^}Msx0G z&2KRG`}&AkpOSuG;N0(x|DnV4nk6Q?aMVrsfe1gAfdQ-umWctrd&B;{L4W^{vjn$Z z3kV)i#TdYUU(}$%dCj-2Dy&xg4b`Om)PO#t#a^b_`!Ic|6X%%(3D}5OwZXZSg7)TpjGS# zj#VTK%d(=cA|u>pLAR_#+-OTg8^>C-$d=JKWd$0ha6fQ8>KxdHn%NRU4=+LWbITBN zb_;^PU4f9aBvd<|gi!Vpbi9VzDJxJfBLNL;vA8bR{>p7`_r;3M1G+EKsnk`ZO2Jja z`HkFfx0q<-V~s_>k2OEu@6&Ji=zgBJ`}F%b_m2^tUM2m$!2_ejtdHLBE7AP)++Vuh z6#Sp#-7R;Vz-4-XF9!H~2l(m%o?3u0V9$=?-eZ{u^r@0MnE#&0L4&mB z+g7_w#fJ!#K_PU2YSGsM1DeoYYDK#R59la(fPn#9JQ$$!fJp)aR(W~AVlfe*^MEJm zL3)nvp`~=E-~sV8Ths#UX^Oyr*TvrOaQYYT4PWX7-W+XRSC_~%?MLhqCrLs>V6@k_VJCVaa2Yq z`vrfy6d?x^QO&Ue)eGK1sADr~WhSCd`cl+SjX@*cEjqI8#+K(#rF~G5@BjQyU(m7F zZziRRa=)m3WY9-1)h=AQSnv1ot!DP~T+F|T*Uk`D^hj)AVhL4{6+0T>r`}zdb z{QP;p@m_f2Uru%*%S|{&`saHO5BP~l)B?W~m0Jt&-k|6UTnPi1{~L3HX9<^_6t?F* zy)O`TZ5R+86|F^y*pG9Wic$%r5GajIlu99VkZRFaei-miQ48EeZ&Gi1P4Iw{T0jyQ zFr8M>?V=XY^#HvVc+>|2cwb1b1#}*uV}RHjzH|#M-8rymfEk`_Xo=T{9btDUrKgC zbrTK~;Yb-6z?xurdVm)L4DSHm7YM`yN@IYDF<|eG;@)FM=UpuZ@c%Aq@F1=E>j{OX z;tYbgJDe%-5i`PU%W&Pdt5EN=*E}4+g3xpc)pAy% z`uTSe%6o(MHK>!Z6!lYL(CCN-O)?YF>X3vRj=dGp-F4cwue|urKlUEwywaQ$bJf)S z9$z$i@A>)#OYYP?y?DP*%=mk9zweCyB+m^WudfGt`f%>|#J;ZY=r~_i?k^Sp=42Oa zZbCNcpNe2WAU&W=4Di(ixfTe30iqTdozHo^GV$Qe`>&f_rXri?<{;;O{4FFN zV*u9z?F0tA5roL}N*!$sP|B$`2g-#NNy z_~Zfky~F$dXT-jNFTQnv=mqF?z<_}|ZyY=*N*ma(r#55CsJsu}Pj+34CV1}Wujt5@ z_SY06ij3bB8A*zag?20E@%=#6f(eQR!xjB@P(-E$H`(LS$z~C^H(MSzqlvl#4O5u| ztVf;HH&OG56`|@1R6k}x=*g|9p=?F%gI3f#5QpnBV$nE948XBzzL#qYk~8Ad&Axt zA?5%E4=4`<&iL|x{0j4cKG9m#;K5q+*Ckg_kt%Kt>bal)Y+wN60CNHz1F8!i@D*K0 zpHfrWL#=5SwWIf`GrdDSJheby+C+nCJ&m9w8b=l{2HZ|dX@Q9NXXrutJ3a2*8NA2i z9Waj`{9r=SuqgxbBYORZ#l8;)TviA4*K-H&hz=RZ7;v*TZSsh`9q+#3DlZRS>B&F7 zgK}PJdQBMMknyc5gKuW?OwjFi8B^F_pYLjCvERN0z0`PgNoNj_gzJy5L9{EZtv zo*93}Z_jR@H}?nV_j%s||M-tjb|KA8uoFS?U_g$i7BDb?HNo=qfHE<_*H6?R14{P> zMJ=$0=L9Q&0UY~-2IV#1E*AzBWqIxn^1WfcIqo2o!T{z0>0S(|M*FD_eMJrFQ))&Z z3k+ya|MXzM8x%pWQ9s&5LufsX6d0iMfEl!s?x3Z#ke;V|#J-TeH_T}80^LK4cTO!D zI%QCP#D7}eH)5Z^mc;=?4Z!i=M;kgQQXAC2hc<2Uu)O!*+kVv;z%@j!vW~LWHMkZG zIA@o!m1lw!{f_u_g*gEGg~}LUw;;lnfbI@`F1W2~MaxVxnxrg8!-K0(|I1fU=g@Z4 zR1y(-d?P|rUPdjh`?*HQF(d4UwPYo$R1xcxnK19Wzc6ULW^SVZsioY|MnZ556|o*`h5#;<^4X7rP zt=}8sTZ4RWxMCPkoxY_y^d&Wfi7Vc$DVvoLMwv^5FmM*f(&%qXYPAfy^8E9b#W-=99cPKDhr)+RUjV@^*cY zeDxS`p^$z*@FF>qYF#x3C^8hAgy(G*;S<950|f`LOBigE&?kd^f)darQ^t*aH$;s` zv$Pcmv#-Q;wm8&HeFe3?+lU%`zw4_+)H%2k^;1@$(UC+n$xcEG8}Ab&pra}Yzp)6L z8U2pG*=I`O9~r5>@&Eh&XGyVCXKk`dbU&W+vs+B=R~~Pi|Gd86=X}g_zmIeOJkR~U z>0^6%XZ-nopYG|!H#|zbJQ=@P&k@>=H}`w+-uS)yeU0Y*ACCXk$u1ml6Vgfl*gQNS zi%9T*qeNaF5U3X5y+NK4V*dcf0QL@G4Z)w$b@}K6<~%Hx?@MTyo{n&!65!4r}$R<;}bw_`c18J8d%N*?BHl z!uTvJZplhSe}@&lRWrJ0$>_-Q0E!tc4$Ekg6^DjLWYn{7M(yvmpvHkD)ch(Qb<^U} zAZ;bWj#|+yQ$}mM7435*bWzP7KVQa`c+=2Rsj-RVzNqo{dhX;tI{I4Ys>}VJ`-&eg zsa?2YaqHZt=eBiv>wYooW8{9l-zPLbpMIaOk2n9`2C$!B1vEe3cflL~G084`>n5ZS zA+-z)U`^1d1uBXG-o4>K7{Ip$j5$GH4B&kMo)L0VqrCzHJadA5wP?=!qTXNQ3UVEH z>vsqJZ;oFH16T{-PZ|Z$ArA(8L5*l1HK&j1dVv8u1P}1XfRU6ab_NX|z!-4r2aAdZ zP8pgX8U9}q`vx}naDcuZEs*DecqYK$0DL2I_>kV(Ed#o13vM5qzi;oqu9^oFpZl49 zcz=}0omZ1T9WuUGWUR`RF;DaY_;#3#QL2PNS&4|UThK#|N9S}i+9^qBm6e2M>G24& zvrpItp##>)+=N>DmkZsmVP-6v9G1}{a}C<4N$8N3h;E7n;fe+Q?R>w}jIl?y-Z=OC zFW;na{QvaHLbAsP>9Y-0u=C8hKP@5XQqn`s@;LWDHK(2P@mU?54{+T-wX-&VQdfP} zXB_YMc{D$f`y;jChUO=Fw;cPt*MH@HpZ9m~c?Z1lzcSf{uib=$L^$NZfD9tR16ULE z=K(w?XkY;E4Doyb?+!B$@b?d?G!HO5ggh7^c)*zazTpvC)WCsS^X=;jgIwRc^;;u+ zUx@DvG6wLy(Lg+awE_OH9_Y&hd@*3Z-~o&Q&FCY60XNbP>Pl}@Pr(C>T40?A1K2wt zmd5S8x2XT*VgG%x?}q^fXY}m{3Je(BN8E`XIW$}wKCqj1*Zhh3Uw^UZs(C=c?`d>& zTUWgfs62vNx(*H+wM*Kc@r(iTne&HX*KNghwXKy^Roe&OX? z$=uKHfH(eEB)jm1o3NksPem|*XN0bV0cF+#hL@l*A7JnR)&p4&D2)MOAH7p_^NeZv z&9|;8404@t>-UEEz7TW&KsU#a5$K4g7GOQl7XysGfYBS&c|Z+sEx^1DL zqK`wy5QRNGt(dBqG3)S__RDfMxBj6ja=y^}J$|11W2^CgpT?U1({tO2e*c5)={K#j z$ItgB?Y40@>pMPyyu7b5_m_(Q<;gC5?k0Rggl|0 zcZRqxz)x<`Ex;JS9|Hr7z5w$8-}!(v3Z_FI3@~Z|UkpeVJRpi*6MMshK6tz+dh+nR zsPI0{K7C5GiBhrU8)yH?fA*;ZxM$2fQuG5obpY3y!-qs_qi%`NMi1?&jUL?9`SfG+ z&K^JJxVpVT_a*uxWjST7tw;8&nV+%Zpk2a)yc_7SVv3!;LM<4aWkr-C;bzr>&M66K zZ{r$Z4Vv2H(dbwl>SwJ-?Zfe?!+V14A$}wg&2y}{K8tU7@-Bgd@T^4iQ)S^jJlC?_ zHhpYQ{f-Cwd5Rq$p7Zt5{5`o}|Gizl-*=_=&YS<2CA+ZCP56=sUwJU#0O@)_nx`kg zy+N)87z21tkTpTZ0ImfX19*4Xe{Yy;fj~ZDmBs+(1H4bjenMBeIqr)AtOfXDfYBQ? zYJt)izoNR;rC9CJ&AHfC54ZTzrq&Xq4daPHS%u5NeuqRUA?f3kp7xmu<5K!+9Q6&YLD zBg|pNbj2)cfMF`{1to|YK->ct87x5!I^^o|^je@MeM9x>b1w$8 zp&mVo=8(i@FC_qfwTOCUyxed1f$2LZ?h!_m5&N(V^G=tS!z~Wb9RCT&ODU z&$&Ot9OT~mM5Fvwi(BQsw5W~qnYnG9f8!gTw{_I+p32;xZ}{D$vF>+kDcz4f{dm@| zr02&yTcP`T`+X(5{iS}tzQ1dqKYQctpqAZmap;W5GeXWl!VFs!R{=J=bPuWyVi zC@#Lb8w2M~?4=`H+FXsU=29iRXE$TIB4e_{ijit!sk?z4*(X?CqiXZPtkqoeE>kc3t?3GEJB#0_sz`>PfVQ7jmvCSrnWMT{!pR8_^k(eK-{tftF+UyIz8 zi(BQsxTuZuDNpVHz>H4XV$Y86?D4v+7lgg_jHezP#~Yx!$vg|G~ra zn!T9p!frQVFA+W=!e<@~_}Wtoa9@D+fU;_VvM_-C1k3Ug^zI56JA;+Q0OP(;c|0Hx z1{m`}%mY{t@T~<(Fo1UkYtR9z@BV_??Ot6JF?q~iGxm*q;CYAi_lbMSKJm{wAlCrH zA~o(ovELN;q$ZE(>|8J{LfgG#W1+9cSDEKj$_jF| zD$9bKb7XYNOhQ|G5?UTvizb<|XvDey&??kRi9uL)oS6A*ogtyU!y>f5URjCg_Fsug?HL`-E3kaKsI?i1egu#C=jz8fr~ z)e#9z53WQb&i(1jP@ivyDHb%d$!N`YytA$7!o5S*4;&JPDHe?6og-Do*{aI@LibOq z;r`OvsZhGV$?4d8T8Q|6ej#gr?VOLy>Y(w=&z&BBpP3y0WA(nD?(1oIdwJsDxZ^V* zx@zM8xnvjq=_c$Z!iN>afIxbHKL!NS1dYCcZ!I9=-yZ|G4&aYJ2Cx>$I-oBG7 z0BZsKF=hi81Go<05BCNAYXN@@;J%}P8s*tkA21kpBjKMfal4?JfNo! z=+yv*MQG!P_ZHlg_37KjcGqT)>!2-pe9D;<-)CJ_PoVIRbUOCN&6TeMtjJXpvBGY_ zNV^3?6)U3cX7tKVKo^^gb{UCib;-86Uk;?~aR%8P&2{zmos^WuMpo3N7z zyNK|S2Lo6S;97wD0_D{LzB_}A0fv7F_XW!G5;S%NxHrgJKq($z>6 z&pC>7)g9wIYYQgbsI6Un@40;K)KwV>Y1yw*_J*dF#{e1MC^E*_C5U^0_5^(&kn=zH z0FRr|G-o9mrL97}Y)}5TC!$%JC;qdglK59;3{_=JRb_mo%D7Zj7{Id*$G3N*bH5&< z{U5}f=ls9)&KBPM|7f86|7XVkKayQ|*G>2r5k4TD2QUV(9>5sDeE|alct*(319)G6 z=L0ITFJyQK`R@w&@&GReaQv5r0mf{AF9w|U+!{1$fnR-i0LOnI3}7DMj{%1XmmJjS z!}UeIri{z)`&Z}uzV(1l{;y2@bFIq#>ID^!$4Bbs}FISJ^Zc;f#%pZL#;K|RHSupBFz*{z=Z@8SP;34I;1 zxaT`ck?^c4<5y!p@0xKy_#sxKUq4+)=kk8O^xoR}XO=E(n)}@R)_VOvtAlpmjB@zD z*W35s#Q&d3b|KkK*g=GUmVp7jJfNyDfNKGR2k?B5R}(b)g8mr5eL-Vaz~BMg7c_c< ztO@#K0M7_=Enr{(a{-VNi$|3Lho=T1Zq z(1-u?&B@uG_`hpv7ww)~+iFkF@2(x#x2^I3Kt!(GEIR&9zsh)P98+XGDEt5<3~}gw z06nwJ=$zr<|Jey>nz=&f|E&Mn63{5ejHap;tun1>r&!R%WkqaIYo8sYJv+CB^T|8f^1gon{qJUv{$IZSXXrK8 zr2jpY?82LF!n;IxuYwrBbAngm0lu|>zjuJa1AH-nYk_hxz?cp2#Q@*FpuZ;g3+X#T z{up5F3NQxne9-q~x_E@bKH8|qKIi?vdc6C8f0fn$M)eZ+C%9KNe{whN?x|h0`)732 z9=WZJGv@Juc_)vhU8qbSz<8Wln<;yJ*cJN$ii`rqifyWlaon@BTQG#@cWn}SsuDV< zThT7vidGIQnr6hJkrI!3{K;62Mh+QG(`2+tv!I>Lg3g)zzez+Nt|4sP|C2G%F5~a) zL1@J9wSE=arUmrlKS$A}qCCp{=55!C`?_jR-ridG`V#%W&f;guH$C;cUWV6CZ*7FH z&!4yd7oh*||9dUxpS}A3lgTb@cN5+w!aF_~z5|*Md;3f0 zpPtj&`Pj@h&WC1p)b5_vNx$nk!FTqbZ~B(8^IsM7f876nBH4v)Zo->Xf&oS?U|_(N z^nk0u0QM6#c!1#@a2W>p?h0IKKFAjX3{9{+4ETvm7rvvg4___nIeCI!@0Wv@f7$=$ zll#T|k7oy<^!!g`sretiJI6Dsb0*#--r0MmbyMU9`Cqy9-@KXn;KbJEFJPztHdd_{{)Z)&s0~ zk6PsaLBsQ!{VmyrSKWl|M0lfu7!XJg@W%k|3;6qp`R@$+Vt{WgVDJE;1q8wX?h6`o z!oD+t{usbGU|@jnobaz?y6_`~?cQ3{Ysy5iU;LMi@A5FsKlfir`yUZ5>Qa6;XN}Xf zKki%KH@%bg=&TOTC+}$Qe0Kf~&ZUc*=Wc$geg3J#JFaRzI5$%!M^b$eFMe@%Ns;lj z-HJOsJ|Ghuyt89PKi=WtT^=O~H!2dYKbDB*M=WTp#NxV~1k~Xjfc?vHU78tsR2foH3P_ApB3=?^nVYc`$TFY z{vS(rVY8d?8WCPE0|Nr}1uBC9hKG>h9l)~z<<$bEJcL*eyb=Z&eF0xRz^Da$F@WoU zKge|9Ckp#;TT#!+9Q*%+^}c}#zPg`h|F2x`KQdhS&+~jb!_=bhCDZ|kJ7XEpD# zKDXcoXUshwg^{~)7TP7K1*ApVNy;E;+8Z`j( zD&GH{Dt3VMIRLQ(G$c~=VtFsam;(yv`(^xo%lYb!|3{Nu*ytu~B^?8p2XHNrOu8oc zKIy$dt_65L$j}3LSActiyfetV!#pF%-T^!(e6{`|zIs5J7{I;(MlImW0|H?H_XLc- z0P}#;WGeoZ!ajVxsOSH3-sks1 zm|c5lW=G*)#av^)}zrdcs)bTAI}zg~yhnHy0ngFS&) z=o&zV6)o8-Kry4EL)Lcy?N$u5OBm^?0XYB9QDwwCWc*TP96)%V1k=fnW{O)P{Oo%_ zvEc9Xx;yWh(pJ;&eds&DJYymD06aUuf&&b`d=J3z|KR$~xbIzF?DK!~#{VP9E^KfU zHWOis2LqS~7<;_zjiR1YCgriG(3O5hf9e13llyfKurhQ%-u)Zqnfo2pQ)tt?pU!=M z-dAU@>PKgFbUrz!9drNOxO-b@U#_ZtLF~LpAjg`Tlz;4<%AD5JANK|N?VBgbZVu6X zx2!m(TJfSokICB<858(6xN1dzuHUnG_fJAcn-w?M;`QA>B@PYKEU3rcU+e*t6_2`h zzWEc2CRtXrV6Pzd3}WvfMMf`0_Y&egfN_cy)7WdsF5yl^#z&4S+y!I~khP{3ojLxV z_+E>PUG(-V&z!q|MhEAj$?csBrgYQpm{_t0IMJg6mf`@$9x(d=@J(0$U7#!M19{{B z;ba%qy9paf$ADLfu#I#*;H>~WfM)~^9>DuTeyaU)rjBkqs@(w74 z0o)TXFu?E+GWvoB2Cx=j=mFdt%%_H*?I;Q#KQ^y#cyH%lI=0KgwXt$61} z?9fP{<8MV#k#@ur*cE>Yemh9V--=`{(4|hB_5sGL(tA%f)WO? zw;=Bp+AWxElQ7>dW0@-9XjO3l%L`Cr8kB;WblrFE+ooxSVU8*&#+?r`}o z&_iGuUQ9 zM}_?ZtqAvc39zO(UbSMn-HN%YRoo(eOO;SmRT!XafgyA{lTQuk&#xyAUrcy@)|mwp z+dAh??Bv4%dWxH$jKcxFK*UavKL;q^55OD$4<@^i=q9Wq!iF+1;7WQxSs0K?6#Q)g zh3@_NQt*MZZs8eVU_c-bp=-i`@^}DafX)TNcE4Q|K5lGY-`@YD7~q@xjXPl6^J6~g zv+v`Z`?>BHJwML6-2ddAN)5gqIjuFsOtJUtGL_s62)x64q^ zz6G^^-HsZr9SBX^gj!$3p>FyLT$jEAjU5SSmL;Qgh6Oj~$mpV2(9>=~AG?gfD*FrT zKEt=G`u(A&RT=5t@2LuWfcfWg^wsv{a+YYMM;!-?mp(orf9`~~&N&mhig_U8_Lso{ z{CffXdo$(%L_eSco&X~L2M*6`c7L)9lAExGN-)5v1y~dGuLXEU(9i^pTA-}G;S{2f z&-2}_mb~I>{X$Y)pT{NMWD{WL#A^XGSm-yz}q>$C4adU$VbJZt`=OX~i)le=qoPVJ)I=ac*YF~9BU zq=%d4XPAR7mCF4_j4%hVfPVPrC@MblgOTnk{N#VXYk&5p8}79y;5PQ=bx0U#+yb{- zadUPOI;SV1y^@Gljzl!gh({y#`Tr&Xb<@|O7RSDtgiyW(^yNC#NsU4M)D>u$lZYmK zGbq)9wyFgk`IeB)f(VBd{Z$FW`R1@<#SG>Ee1lAt@QNx!^L}5(_ji?FbuG|Dzkc-? zxr@(xe;yeJJ}Uah{Uh@47}s9AeL`35wsCw1pbQScy?{Y|1b$cM4uCiQ?@e~W>?R}< zA*q5Gz?vXq0QUvU+ZjAa6#Qj@yY1tv3!?h<&ug(_vnx2=2Lt?XjaFo5&^sGo+!f$G zfh*|&{utn-u#c0A!^e%ykB;~s!T=x5@3P#__y7F-zIgUT&;1_Ff8tHz7X97RJ868I zp1rG{oYPM1v+rG2vxs+Q%G{fggzq(-&M*_XE4M1_c3;f-9I4o#!*owxsSTszHMg7dpsGVv>O+`lNJ~KiOZ$ypsji@Dbz?Eo_ zW=5E5L9wBVW`cVPJZ4-Dc>CL!3Fcm|F9!&q1$yKE zo@5si+yt2jRx05EtOqa;;GTfN19(2j&;$)0P!TL@hrPZy_s=o4D*tai7b-o3h`UYxd^8N2s;tp6tn;A{)vgid04xn1Z zEur4oN$4+b3|TPVAz`{AVXobRMRp6!s)Uo5eQ*BXYeoOrqmP{2J)JHVobvgxxaq_9 zHWWT^N3=F`bVqIGxSO;fZc*|*>U%i%&*I$Q zUgZARds}Epza-@bW@E)}2kdDkoS|3wn&9FkGfAtO{>j_Qs?R68mm^!O{N@wtTB_SLAXdN_bXLNkYi)|nF8 zt7ddj5$@SXy9o4@Jt-=}Y1Ejl7Xi_kH^6_in=&j|bK0fv7_Sv!NqY=G~s zfVUR##Q=Z*5Mw^b@DA``fSWNOxhR}@K;&N(1AH|{Ns0p=g7F1%r`%U*Z;5x zZS3%Hjc5IC{LS0=osvR2hzd-(R5bxg!70!hOJb7dmThZ2G>Ry6k;aljnl6=hHMMlkR8KJgisQ$%E2uWFikV95f`&2?`&L-5zdixbR z+8qzd!RE~4M}xQF*ITYSCqgBR--maF-dllL4+)hPdHa;5u$#ahniKfXVvuRRVo zDps`Rd!N}dn&!l#QF;REbMDVrk6Jk!P=jM##QX|`i8<|ZSKZx8<9?r*@hvCE zU+KR&)x#$ykc&tOYVoq`iXLIcrdt@xva6##u6&Gp?{dF#Ch6 z7W8CqLB27dS}@wqbHNgBw^^{zF5_WE#vZ+oU-3QQa(^xoC~I9kI{V|t0e=pK1?Swa zZHz6LJt;z)Fuc3Y0lc@tBQ?I)!oOR84#4>D%K^OcKQGyZ=iG#ss00IyT7We{qc3nZ z7_gftct?S|&BFomzmZd;`)Yk7L@kidy+Lm+a3u@~v@cX)3^07fSraUi2Nd@nGdjP| ze=860@O}~d{+ged^NSL?@$jKWzb{2lz$Hdih=@77Z0M8mF7l;7|#?*grr(gEo&R9pV@)X>{n6Kz6N#d%Tb^210A-Yi9gy9Ye z=4;l%+b2iojUU!s;5Oqo<2Y-9jO&a6ItM7N1sWLOjsLmHF8sqyc!3BnRuBUM=>h&c zfae2t5(U3o;BNC!Iq`4s0PYLiqU!{rY{J`&skjUcaZ`$GfJ2_Zynu)GnnoKc4l8zhCe7U2E?v9cTuGh$IMeGO_WJ5cld+X%HUL-ow{sCIS>f=|UDXyXzD{d5wh(=Q=t z*E$4$5{D4RhaX=?=yw}YLwOao4y{C8_6o3@(fDX0nyG8iIzvW#)q*aH88?f$U<(E- zW{k2+m~4|UD^uqH_c~;}Q>7e$ano9zwCpWq>LZ1P=iTqVv7zvesRQ!H482JkH$2?4 z8=&L*kU>#iEs*Ctxb`dI0DZOS=txcQ|2fGnJnbetON8gkz<@w~fr?%Fp^xIftOx@+!?VR@s5bQd>T8P7#O z@G=g-exZ5|z#PCE|F94pYkwhCc(?gvU} z#kWMV_)e%<%o;{15(e5m{XkX5ZHh(gB;IAWViWrkU-i!+z|T*ynCOp`<#g#n$!>uE zQ&i-lk9Q>(Etowrf5f2fKKBA6OK||bAE0Z%BL4eEXk!0oR3spl0GYb z(|JGZ#k|`qX8cF-e&5adtdFPP$GM;P`yMxD{O`Wrx%0(3h1rSMp4)uibw$GI%vhLz z`RZ>;mx|8#4!~aVxm0xa&`&ALyQHocyS+6&w<0t}LbcDILCEgA5&U`rf{xqt*r!mK z$O+S%YY}v8DT4AgA^1?d-Vgja_ld8c~FaoCIsW2s55cKiA2>#+Jgrp{*+E+3{e|ZC;jxDJ9Wi0BX#i70}9*qPbG-df;pbFaCeUxZ)(|4Llg(-#o4!i)i# zMf$D~^8o+7VPjvYyqn{t?hP9^hKzlIvh)Dv0X!e1V*uP-3%paL&k6FZ@P8NvTw%^n z^!tWz-EZW6z3$iheK%=$OzJK?{qC9J>G#cUFZzA4_q5bLSzfcKs&l_8;|IHh7`uc8 znX#C0DkWwE5#{;3)>nGmmx@mPGjIR>p~_NJJGvGjKPMr0>wO4*LqgEc4n5{M_5ol# zU~)QPGH*ao`n?GHWG#X}NGw0ONAn3ag@9Z6`f zTG3UN&{NzRl`)ua57{l4VwZKFAe)Rw6bZYkqBr8jOVJN(KxdBWUSU^yzB_*S;!7_) zc5djv9@?-W5vBTpf&+N8!2W$Bv`F6nzb)B?2i=56sRRSK7GMl`&Z7q|@zes00WqFh zfH8n;0mgtpd&67{Y$pnSwZPrxo~wv|4-fFp3a{Mk3bGaHTA*(&VC)Q5#5&^|Kx<>VA)>7wg45Lu%~z z-7aSQ^?u)dGduBJdZG7ozi-=<4bQ2vsmgXu0kj+(s0scIoJPcq>u++|=(HCG0FuVi}9>8zXI6w9h(ooL8&UnY*HI&7D{6hS67_7$ zaGk?~FjYb`n~c`!GTJK%=RP&Eji`e|=_I-xnB>*TUcd9Q#HsVC)N(=O1#8NX!S7!ho_o zg?)K|u`6&n284aYUSebNg^$pc>Y0D%fA`J(-hN+6?jI^rvK zyNmLE|KP~B#lh-BdQ2m~IV*DMZiwrJhrOiT;3T_f`ZQdI>?lY(#LrgpgxP zQ0=H0q5HR^=7II7leq%*53WK(RYDWqFHTEDn`|p?RAqFtNeIto4q(AB2j2~~VyaET z9FIrgbBYAJfpt~!m34q)Z-!Ihsf@DH{$)>LVWE4^$2*G_&Yy86I_f4T$G^b=2K4K# z^%;0eUbCsmF5K-V+($YF7(C!_9zEdcE7Ssp9^mgCz+QrziGnv&P5g8Ga4jJG0|W-R z+&J!o0TuBNxgrLz9$?f0zPAMeVF2p_rzq^>w}p>T-`@XEe&Qnbbsv8*>nGwr+N=2) zo<5xW^;w_Zp8Y<~{XO&+JQ571Y3 z34gbnF<+5zJKyqBtr%l7WAM>!UHhN=>GOYG_A;0MWEC9$vYTxIuzM>^bP6Vp@lrwW zd6)yt4ua{|88D@N4$~zof{r|nVD)K)WUWTEuVqxv+=3eF7SvMWQ8#lr8rWjQ-SDPr z5?ZB8Xs4LbNwuH{a{yJwK)VGa9s1oc(GRp)aJOB?dPS<*exTh9`hEYimG(}^NIz8k z^plUA?HAq4IdDLvcsB<257(jx-jdh+)?^p%aue>MvN7OFdO%qi@Cs4zx&n8byRJR| z8~IaU0QUx0ZE*$J3M-BQ>?_VQg4c`zhKCSqf*uU`@GbTf{r|ZmR#xu!%=mkGzoGdV zvp!J%KM7XNX;GW<}m>&vVhKeYGL|N5J_j za9bI<-*|!mEHJ_3nhR6vKA85bMbMj1BY4*{2+3T9YT2)#`cJPTG-n%Xeq%+=a6wa;LqYJwG`F@ zfBs}4T`2g?_}(l0Xqwag+H0E&r%j!Z9~s`o*=NAeyylbMc45Aou!wXFFnGX&q-%nY z5tUmD1lk!iYJqh`!Pcsee~zcVk&&V|*dj*o022J)Uk|7>2Cyc`dZ3{RvL47E0|Wd$ zggE|BdwD?P-EZ-Ik^H{B{v-_WUfA;k9O2Rvbd*yTO?5{6lyrSRm?9bl2N-VmZcyD0W!qXXVSNO#i z&#zz5sRyh5Fjqu*K<@AV%m+-lCt*r_2SK0ALC}|R2-z*6+Mx}o_WPTtequ9fq^w2l zgR!W0AV$9(s#ww7=IIA!C8CR6Mo-m>KI}n6;nvN3>rgXQS~Wnn-PQLt3t zZnLmz^S_Z#bqp9GFd*1o;4T*fej^e)gB9WdfiQr30)~HxzlRWGfc|Ox;akOj3I_P{ ze(!!?iRP#0{zz@akVtVqnsYz<#@#x)m%iU8=KRF{PUn5Mb#gwY&-w^I&o`cKz@A=L zz1tt?y;UV#vdgB|>@x1-{HR(nQ?+7}sGY4C#P>H<3vO1;=&V|+HF7G_5+ZWxZ*7I1 z!#^F&?zG51$jg6BNA7_sXD@<2G9xH84nfD(BG|DGAsI2Kerh9X{PsR-Dr-?EWjX3+ z#G+A_gr-?CS|~|qo3#cV*e{g5!g8$W$2g|S7;l%ve&AeH#sZs!7Ztf``+>GN&=2pA zs&GFr(DU8#oQun2ECsEnyjO(T7YTETu)u=>i%Hi5?kBp82k?xbp$V3?FJ$ZuTZw|r z1@1QU%?14;D>?sDLA_kx85)t-V)d&!1~C6;9>Cfl|Jk@X&ND(hBN%9J*zgZ2wJYF@ z0jvocJpq3VU=4sjJ{Yj;&7$z}<8&VI@47GGm;3u0z8;33-ynncN9y~1!})e^FO6^b zh~554-MyY(dcTinecGRvA8eNY&FbnGs=V%(O^Qv%Gm4A_JTuF)vsp66C>9K59i8>` zEE(M#R&+>-N7(Nv&(0yD(q?$&Kfio)@W71n!~L?ybU$D^eGH~=zC+NNzyJVVqiEukr90Pb(_(~YS zdVoX}9RKf)|B_l@cwUQ`R||vf=iMUi*-MZyz_>ZiwSfQ4asN4C_7!IgDCHl*IKc5= z76ur7K|c)G%@{B?zi-d*e~X`BbXhw-!qD;{$KDYODi$o1kh(Lon}iP16dS0|Cn^dkJ#BYpc2ht=Dbli=g!Hn%|GBd} zu*8G}SkQO={LYyZOnZ5|bHBOwyZ3(I1oGIGc-%?+x!sIVnf&*7bWIV^-WG$#XZF4| z#Ld`t-}|+SlXLv|@i}wm%t1xhB@U;&433q6Oa2VH?H@t!SO$YV0tV}cpxuC={mW3} zM;^8IEkvE9a5PYOG)W`9&^WY_MRc;8(ZeR9uj1Pe6fsT`FqQNI6#;K5W~5Y@7hPd( zKs>;~4L7rbll!Z9St>tyMU1_^mNDI+cuk^RSpie1-=}hZyt+qo3+e1-n9<$Nqhmr0+Q<=Ta^ky3LyB`xUrv!r zGee?E;Sh~e?z+U`UI)12Gr|4xBXpT2=+1ly{q9#`*#9m9lLQ!(KSt30H3;4xjamuw zQ7i?S;Z@=KhYe8y(2WK8!6V|bV`O!8vDbZ;&2Bx8T81uh2zq8QVM=eyfX zyY}(#$pfe_Fw%bJSFq0kJckpBh&1x%9{)5PkP&F7IaRrpk0cHmexo#mCY^nS*f2yT;lev z=#Zf3-(sIWSHX!;@5!GOPM2l&ni`eK0A6Y!lA_U#M$@&Ox)`i>b*wZPS5Kn2f!bv1q;mvy!k1m_hG1-FF#IGlt(0J#3;P~!$=P<^qH}L8?zcI$RiZGyx z!@Uh~Cz8Q!O@(fIICQBCpx^%i4EsMsz=2p84}Srp{Y%u?C!khx1nN>hP>w-U*@6~H z7PPa+qI0UCa)JF7uYaH-V2n)rfxPM+^pq@Op(5h+)x>=HpQSn=Vad%U8A+Rpii=Aw z3j@^nU(T3rEMs`kn*&fCP#y!QH&`7`uzW2L#+ZJ7zPrto>lgp$F`#@NpkaW<2UJHp zK;r{0!hp+}4e-H$?>{NNY7Fq@{8Y|=kW1U|^>}wuzi)u54-d@p$-9-v9VR z-D$s1<@{csqI&q8jef4VYuf^2NxJ`^{YPv9XvY5un+elo5##M<+)F&UY{p=#$77?1 zBMzOFIJ8X_(Za!_Nm2wF?pXl*wf}>sFLNKz#uy8}g7~My?S2;=D+aghTj)Qz^`!#Jh~o%f2~2#J_~~PN1^t9Z$D5nqj{1Atw}4)A)=eQA1Gp=rWGcWUZ@!p zRW6Xn%d&t?iXXj$2(J?sq4evpuKB-hS(%@klUZ%NRO5dcW4Z?z!~NbIfa(C^0|*1A zGWNGx;5o+5_XV_CV0ImYA0hkaOK?++Pj`{H+%7%>ydJ z08KZ*S3^vj4=B$E^t+-wpi<7y$G2O}`-k^eb)jj$&)36;G`*f0-_`XZ_4_<|zw^Br zZ8N`kyRNERQ*95Q>Ty=ZvcRpj3V2Z_y=)PWN`j}~r&w^iV#WZg3BBw*y4vH=UNWN< z@#>0*M$$ag+xro4Jo){JjIpDa%3;eL(hzEJrSbnE!2R{EhX>db1Kp2{px-6VL$+a*Z`T{j*CLkdUbrYk}knqZGMvEjf+FDKMOj==7)5rn_+hSC&Lc+UoGI4>T z>L2*7BI0m0U&FsW?<@K_!tJdeqF8vjUDj8t=jNV1@q4ulR@L}l!kBIhW4OO#GA&cg>(h5;4nhxlT^`JRBr z2ULXtT3>)LK;s0@u*TnedxMvY0hQ(b-u+(M@wwpPisB4DQIt$1t4Yzy1}*znTO5?BxMg?S^jE1n76a1H&&C z1SBj&!09g$c>F5_?OTc9gmBchE#LsulA`Tx=JE?*~}Oq@wi=z!Ci`o z2dL+v?m2tOd=SkCXmi4Z0kktneF2&eB0fOV5Yn^*K4eTkH{ac6;y)Ar z9t`l#3P-FiQ1bxd00;vr+86TG524;5?Fwjn!{@aFD#`cFyJg}{2kQ- z)Elg39^jMrU)b@vnDe8$pPv05|31yP`+|QTJ^P=bXaA#}HBB$ozwev(J(^yAo%0oO zP7+|21UxIzEG+ThJnolyb;kcT2hGe1>i$d@tBCee99j~eo)U>hNefVKZwzYfTne1D ze=zPcX8yrqX&qjsJMYbQJre7{h4BK(zqz0fYh67a$Cv z*#N2q2m>BxOzjKMt^m~nmF*3ap6Fc0^zY=m+dTTu#s7H>P-}tJg@3~U;sa=JxH^2m z6=8rcC+M38P+#C4nh~nH7O3pmUv9_ee82CmzODyH^;YZtNnQ^h)wlbRuFhA~Ilm6% z-kG6u>6s17KP0mKJf2?o5&nEq{V{13P`^M4fI)wwRr36{eE$_F$J zAx%e&W&~+YxLP}d)DxguK>&(HXip65LtJx}uRd15Sae%}4Q$sI|{H*?|Bt(@fH}6CRSNA4opp0%pk~exW(*^09oS|4lfa7-J|~ zIlEELoayZ|XHRbHd~tjm=ls|1&raCArHH(Pe9=>le+y%}k&IykV;~%;4hGPCKxKIV z@d4Vdz}t-J-^zEldBl|ePshJ+9?(L?0Pl4;Q>0lu}sCHIE4`JnO`pv?(agaMQX z&~=(M`u@{mH4o_9|6+ec4G;eI>?aSeziWAGdB11IzxVlm-;4)(xSsa<_j!D~J^p>4 zyj3sP#&dq{_bDPuWD#GHo~L&QcA~o9N1hp^mq#=H0(z-6axB^>@o1GAi{@4VjT0hJ zpZ09_m{If0CkRSgqC>`>u-AR>*J_*u#+dGE1iTB$fseyz`rYn%DXi~+7q8-)Bbr;eTH2G7y_kI0yA zIAa**%>k$mAPgW*kn(_ss;C7tK0wnC@zoG|lQI1p`R+Ck|2yLU0tVcb6%xLxK(FL^ zc81F9h-rC1RT!Y&Xv7Cph5?t#11?|yaf1Cu-;;Gqzy2530_C3l9{;`zJ3hquQNK^E z`@Nc8YQOJZ^6%^E(extDkM{c>?V@UWy)~^}X3X;;t{q{4*P`EdNapd5M6*5~Eu8U^ zfYH_%jF5Q@P7%Z^fh5p^d2V$1(&SUelM$JG>*T z8ZqyCwp0}R^tsDD5dc@P030g>m-!2H$&;Y};Z+!RT4315BQSj>jAu6@i13PVD%B>zC_2R=qPsfhSW5m8i8EMLjzs2^zMxw22^ z)XRHkM!QU!?R;fYN9S|nJ35~n*VQ$D&ZKk63EPYF^K#sUC5*j7@jsL?+~Lgu?(*RR z2m^=@)G&Z%12jH>_Jyk28Jx|S{i0#U zUP=^d?^})FlbaEAY&~?xZSOZ@jD6}G+*KT^aY;Y;O6LFmb~u2G;J{@^f%{=6blcyD zE+GcGFHF$ypNoLBC>Z}-0pp=h)P7*Cy$euxUlbaq#-M3NJVFx9Xlvuq*&gH33w4MX zESWG|HsM~Iwi_VeNl8?F#1CFctXK9kRMY*oD6quzd`Q-uY3(ve%W>wTot@8&@9dmD zrlaf0387gVRxHdrc<5N!EP*lI?TlfFHwU0Ppgacn<^h+30k1KppOx=!`CwH3fW9|X zoZo7B?sfjC?hdOuLaPdOO2LIZprTqp;{(WVSkn)wbZ5|aMo{YuRFnt!VgUX7G;6$N zBWa3e59%MP#{WRCXKQ7eeyXO|Fxv0)=y{GkKjYuiHSGbfp64T7oiBU)eRMCx&uW^z zH`4$8K1GC8BF<016E@yE<1gSIn}A_KVxA`3I~oQe>jXWCRGvhzK8UJ-t<@e(;*D_m;=YwgZoATXPyfE&oiOlW`ZGc zIRZ|7iNMoeBWV9x1WP8=wkrZ;c{JNEpp_(|J{ciKrG&x}yXgqs~^bdk+yZ;M0AjCfDKZ{Gsc+i61Wo$C-RtwfNr z5P`|2`Z$#uKa(+*?;GG%95Tzj-=FbM5D*4%d6D3@?1yg49OxV-=)PYJeL^%0ay$Z$ z#Co_u(h9SOqmFeU8rT-0iJeDCl881|Gdd|Tp8Y_=K}qm<2dO(y0;Wim1DNrOA|ml} zi?+Re=9%7 zKa2pkg1p0)f&0l0-S&5&D~yHi(0Um5MNsRWAwt~@1HCywMHryX23#%%Ji}Ps*^HTgWvsNc zgdIC}yllmal?9V0PstfNd_)$-HQ_-20R#WRoWRFlAbe$^PAT$WfNx)*x_LmUR(w{* z3HoXXX?+20ZY?}x11SEJWAtSo&u(z;of&O2={Z2YE~NML z%(#xON%s%P>M~?QA=lT<5X!2L0TuB9&sN9-!;A+N0e3qr9!)Q6G5CB`E-X$5K}@~BJrM*D$jX0))!qOH2)#H)It z{k*tHJ(2rJ1JNd6n$3i#Z6#Z9Kx!!JuzN~T#sE7~H`T{g3T-nax6O7fF#hAGQ6&La=%*)Gj+wJy}7!#lW;Mj+9 zhTMLKng$ZC(QXmJboIJqm%xmcn@8W7J4q zj9U9YKwUWk4GsusY!?th_-EzONsd7e$%MXMd{n)INDGm?g9t}uk8gm(U-7Tz02VOX z@#0@qqaw4EW^7ot3%0u1>1^Wxhd9GQLh9evbizptj3#`!(vo%8d0_&DF0-Y#?T ztR^}8qy5hL(S4O5nK6s_YnfL)e8#FCKAwKxAe)FjatyjBThNhsaG6JlH5^T(g=k<8 zL!A_won4KfBa0Cz#p!WU;rqEu^Qls#TAr>v#+b7jI6(V>qqR7%?4v(U1AyaegUjW? zZIi&oJqO)?UVwgk1Pptk5pZli0-Y;h+_&D-4@@L3Fyg{)fX$3{HXdD4c-)*yy8)yX zMtEt)7)ijRq>ZS02MM5lV3xlyz#&5I34Z%Qt-`sFQ$Mhs^NlI3ozFbn&(&k_xYjVEC^jh< z(5`ES1s7vL0q5|^11iG+r#~=2^Bb-h1DgH3v3S_H5!v?*>+S9L^-?)Mn(=>pEP42J zaj70YlRf>ukDh4l{Apfr5zU4BwckfG{$@n0_o@lgiN{uTuX&K>%@A2cf60WN4iTNL z@o1aEqeX@VO&umQOb$a`;>mZdL$G5h0v#W4+?lldYZa z%xIZ8^U>a}Ubn0*^_x&1f zEcSD+pYq5*6cO*+VpP6*ns=Xt_F72K^H!PkJO%VjjYB7g1#MH!Xd%a-$=+x*+{>eG z(lXTCYerCdT(Itpy!_shvZCFUJlD$~$_FU+wS0hbgXN5|z)Quw_BDT=*C+>g8C)&{ zcV-K?Gm+5!vI=_JM=L*8`k!(S;1PfXvi5~wzn}9x& z8H3c_05ixpV5}r!66pllV(@~*<41q$gwVZ^V&dGS_4vW#Eiz|Ky4lrd(3(Q7eHlXs z#?XZ^bob@~y%^vu^Z3nT3jpS3;8+|u`w?*ec>}t1 z3v^#Dhkn<51lYn5cqk6Ww3Vo#;vJ8=d!x~SaL`Ws&K9(F#G|uf#!aMyBn#@C#0a~H z(MqhkGc`>zsr%D&WdXnYiwB_JLpcETf})>m?0jv?P0qd)|83n2?HEI+N-%)>0$MF_ zIT-K|V|5<8Hu3L!%F0UF*|TTM4jw#Mx?{(V;`k*?3Z8rZ1?nTX`t1n)PTW=jD4LOFmU zpqXqzE5b+Gg;G7w%oso(Xo`rtRPP|-0zKYg&qyM-(Vx2k6#wK$`1N~1`EO3^;p{hX zO##=sjG+x-=%7KK9fSb`T>S?Qat*lU7Vn;oXW!1VZ(GT~Z@H*9 zSfH~PT^a+j~3~1 zXhQR_3G)zia!*9}yfgbr&p-7lZ-oNJ82z3aT5MP6#|z z=clLGOy~Q7Hh;a3^n2*JkQjr~h-W)x_Z#?e0b05lS}{)!Ky?7+0hhu6nh((OfXXm{ zYJvM1Gd@z}j@*1XHje&3nP<x@%jxL3g<1DpF896$8zo%J}j$O-#*Sh z{rkE44G49G4jQQL+|k}$g%|DP4CtrL2o-XUA`cg+)dDmpOnHE|FGLtXJA;G)#0L@| zaFM?d8JczY$Azq{ zh>WTzcCYpj-`})4G4K05*Xm4Z;MooMBNN;=bD%pB4_)>$=+Df9A#DKy)0e{d%SzPv zm9)abP&X+OjnZS$R9cLdk_GJ@7IcwB^mLffKh><_=$&5Q0Gg+G%&VoaSn;EeINcjG z6R_#MW`zR=t|~xtH$w}?(3&x{WgafT7Xzp-P(BZ+4hB5H823P~`_{)kD~z>7<~bY= z;%xrWL%e}jDecx2V@Gg9o_=hxT)Y(wtz#ssf$8@B#+-?hIB(JD^&c!rGkRB`|=UWZm|xEqddP zep%b*1r*c!>rdWTG2?_JAj)RKlhp5%1Uw>>hYydDvf0z`Q%vZdZbIASC^S3#-|_8p z?5ihdAN+BpyR;aS2!EGJ+DHa_8|=W z1qAGhhf!INp#6(c(;9|4yB45<9EHZ|v1p!5a}j2AOy$vCF`FU9B1ovWyq`;Q#@TmJm> z&$5)1l#;Dmw-&Gdcy&Qo*uuP-FV8$T{^9Z2Lx$X%)vNc-&OUv6JNxzT>kJL;=NiuGwh3I96F*KJ zYiEbLYqiW`Xv`QwD!~A%1+D}GMl+_rFVEe6M0EbG1G_tW_rA#)8rsJ>ZrlUeufP7v zxz(#z7Nn=Ao!2A#x17?lQs&IebRRi#q||1!mHhVGZ^fIx-dwbF>5_tZ^FGRb;f3eU zJ@n9n*|!ep3m?c2d^dKbD+W<$SoE)2360l%+B z;9s92C}}x@lcQ9fkoqZ+XnbHXnvr*q6ps#RW|a%c>B04s2-x< zDIyB0itXxtJwwd_YO)7LtY&D$7@AZQ1E?0LDi0t|a1>+ud-L2KMnvZi9n#ZDJ~g-A z8tUrbzn8O5pB~QP!*6pv_0)`j`^=d$Wd{!&C{0XE zDEWEoPeq$IZYW&7abw|xUFoHUv?BLq?F|?B@B!)#tnCZ3&qn<~lj$aYZW_W1Xvt?dp8}TAz*pR(A$hEP(rE3%H-=LU$kzx}%Gs zPqZN5Km?3gU%{C4DT0%uQF~tm>d7WFN+s_gGg_taXzwtgtBpr5*{td$-!7Xx{XoU6 zdZ#_+sROw6iin)*#CLVRhiU*>;Mj`~z00_UZVv_!7eKXuh5=Ra0hho4{atzPj>Dt# zN8aAkIqddEz~u5P;Xag-|o)a2KRGLoAPk>hws0g`^ow>1y*ZvNnv5( z{{$9fl`;128OCZ-{8xnm+P=`==7hD`fQo7X$^o=IfS&vLOkZ}IeYkb1n)9de{(1J3 zr)F%yV}h9-V*J(3_m3RbAON zawz%N4R8&=y}xV7pq|b_{ku8u96reP^plfw!WPWU`(*vhlr>8n`uYJ$;I=8n6$2Nk?DFOHW9O$H2=uRww{;wz)(iXya zXfcd?KSquHCe%t^hslGrJJA?XRdG4+wqVh)%@9w0%^~;)gamHXMJ9~bW3y`%W#$rJxdEO2=-pq5q(X!}A`3tSNf zXfuKu2GD#!39DUrlr7mjf~5*z4nJ{zQY6^#pABS%nacGJeBu%!8Dl-QnDyt!>vcK; z+?uA~PA>+x=UeF5d(b)NLjUJ`Fj%8KT4C1psIhwqYVKZyI!WPZkRhOPdOVs-o?WR9 zv^Q<#(MO5JK*fTgs&6Xo2WtI5kEb$eg_TzIe6Q};i3ivhQJW3v_dVn4x;=RS@qro! zXte;%2ofJay8_kN8PwmA=k7itGXH^*-JGOZai!Ni!~3}Iy!|HE9fLYMM-A)kdVK1b z?0N6KlDl?QY{9SFe<=Fn@WIluvVTvR;G$aKEMs-bV?cF%2G8#bP!6Eg0u=wm2bM6M zJD)x1h-WFW0e;K-Wgg5CSC5^w^4Bx=GZ|y6z1qE1?(tqJCS1=mi1vd9gUe&!w!aKr z(hJc4X9*0ynPAux4&y-!g7%payf+rLl0?)^jX}c<9!(u)gxCbMQ$%!@1@yG>=x;M) zh(!K@CfsKe@UTQ$VLYCYMJ!UxI8xpCuIl?}W`wTgFOOvPnxA2)%{*Lyh5NHx zL6?C6`rGo{Hw}--A9r^bCuvms;~F!vm+Ri4JzRI*+Sz&MkS@-tj||Ux|E*`wt%!@v z|Ig-63KRGJT73NIkuvu`3py~i$Gb4tqY(J}Dg+)`gCOfF)Z7(=I@U#~pAwG78Kf0Pz9@0%;1JNwWGz&tcShTg8&{^hjlft8~!-BzzfZ+;{(Tb?<2Tqkp zYhA#5vKdlU&-UtmUDF8oYEDnqy3GNGn#@xNP+#y0F~D$3p1beJMfp?5ba0X<-L<|Z zjK0Y=epENt*pVHb_YZ69oOs{O&R3rqlO6fdOS$V-L>2t>-%ksZ_irygawx4dC;R$v ziJ7I0y?w@83ut*jbufT9!M|w-FxKPL9=3I5OHb_ktL~2mJHG8%R$54pWxpTN?byLs zPBi;!?E~!iUzfGJQ=Ry(>U*yDAs*nH&fqdPfZMVWx*hLA_eD7L_81s`T7*DHIEz!HH3*of3n3awHlZibu1QIJ8O@z5PJ)4InO1z-`nIlz2Qq`++JKD5`nDYJctr z5*J8yz|664Geh0t3mBly2Q_D&T>;-(;1YYo0R!{gp?8MmKk;BY=d=fVsJ>L>O?ADl zsrPqxO&Zrkz`9nVa|DuT~W7-?^nYBQ?3?)L(y= zkuRd(?|#NSy}`4L)g?`Fy2{rAv^QMQ&Y*??>aGA|HHvfC{H@cNgKBj@#lDUDeQP?g zykivzHDCET%^2J1E_1I;O8V@%bLUocXW!1mH+6x zrzhnAJ-`((a2wY^Cp{1S!B3&z%_G1XhQO?iFe;y+hHWuwO4JWr;PDYpCcRKI+So;O zl1%7fgIav!OpJfV>-B|+}p-E zX;drcQ{#KM=FYl5#}fWx?x!mk1y{|5N0!?JD{6kfSv7%!#ssg1oE71+6!D z5e8^^KzZ!|&2yY~28%rUK{|ICyY0w#EFr#@8vA~!`)STkFtStoK47fus@AiJ$Fr9) z_YcnBKZ`qQUH8nP!)tr8oeS`vFZ9SP16X&cF`>ocjvYIy9lzC$^UA*OpExuV^kW-v zY%4hTIdCZ-LHAo6^l9-h{P76_GNNESycj_Vs}Y<;T47MKdCk&t*VBz#>taigJ4+cpkJPQ$ldev zXFb}&`NAWeUC%$#+4bDN?0WX$POhiNwRb%^wyo=l2UXK z3mZMI+wQb&Qm)VHQ5~ld>0996M>|+!MPbYwjJCrZNO1XXy=`G-ofXee~zO^k5(GD zmBsVre*T|2T_^|W3@(d-+w=)^Y%X*sMCi|c;^6|51Q?SxpvKN+sF}0~bx14lfCY{0 zg2y|^5sMD8N%amQz0g52kD(HeQL-6hB{L@3XdZz4R|Nc5G5fC{Nb#Q(Q-cld_YLEM z$~<*IJ;u<$%L&q)Fx3Jy8$f%*G$Tmb0i+|SX$RcISU{g#_s~)E^52@$-1+LHj;>e! zhpt(Vws*~((AM?R!>ye!j&JFF{-F@(%M;qUK6v5QEdITRb5=$_oBP@Fck;gfEGGZA zA3iR$?)kPTUHY~7aC&0N@gt6sGbaz1X1h+6<>zI)i;D`}q+dvf0%(3dV@+s3i0S}e zPEgAOv^inIfPBXE1tn~pZ5dNU&To0YOmhQEnz8JR&$Ym(Kah6xUCdp2(p_3`q^u}A zwK(T!V*ZI;zhwWuX+!pb&mzyIZJ3#9U;WUTl-Rz9{yVi^(h|TC4`jrGljgy&^*tEA zh=RW4L+HL)2c7F{aNC-KYoc1}{{4LW?YEa5&;Kj&-yXp3*5KGKa4a93{5Eu3r$fIb z5{6wC1nh{0F(V#9iLnTl1=LFBQP&=g1`YvDlvuP-%xFvfK#BGPMfA5@a4TsoO1zo_ zJZuv&jr_wT0bz=W16Aes)&07b11x)K1Z&##7y}rCkud}_hFZ)sBjlS8RD=ao6ZBy2 zJMLbT_ullTXWyLCo_t9Er?1&l+GoB#xn1UKliFmyIWq}yQ@(&I1->3Nui^g7H!`W|K>{SLE`{zq8b!4CK2hiByr zFV=TOKG(t(@&Dioe>TJw{!DY%qNkg=7Cqg>wdkqFuCS*XxfVUy$hGLHhOV$D8@i$& zuk8$by+_uApYet5B)dDrafF4W9cCfvhgrzM!z|>`VHR@aFl&D72y1=x0DEc2dn(`W zFV4^N-gCLKfaNw5rdgvg#TJ8ciV62f(HO48;1<%QvPPk&5{)iN0@^EaXn80WO>I$V zlpKS)`y)_W`UJtJHXulegKzY{*n6$O0a>^4wfm;F79}>&y8%aZJC=3t`J= zj$oGO?ql&U-s`zux|hYzyqCql?7e2)%i>@0Ua#KE=!$!7G+Q$JF80;?9ZPqF8H&k& z_W#@U%fg`IUltlKy0$Ges@IMM`r@C%gNr{|)~hUb<9#gt(|cL`#(P=(XZN!B&pnsr zt1)cl#-VKY;`;vK`+WCC1a60o=Vp_4C+YZ00>;V$?jfGpLAule`q)h9A&cl}HKUCp zA|#DRWBUR$u#wmO64bPRjvD7S!I-iJfeDKdaBMB~zdZ^4>W`r-rnC+P6q~_pqw}acT5<2-^=)N*Tzc&Jg?-wFaj)L*z8U)FoAeeA9Wj^Yq z$DmP$fTmUpS|*8TpDLn@UBJzXsQQTCCh@qFd;=5_6Kp(Y*i3jr;jz@8{Xn{3v|50) zLn$Y?l8bQU##QlaK+p85F28X7zOgUjq{Kt8@v85ns_7*OxQ{%1WD!GTv&X|n5zr;c zf_AExeGHlsKWz&`JuB_6tVHmUB?vkoz?iWL0f{j%{Ja?Y!(q@-t;cs+b*r)(n4mfA(!Z5MEdEMkzvqqm($ zx71j4RASM}E~0sc1&yUh)ZZVDI=?MP&BP6;VT*w=Eee6ouVHX~3VqQB(5+twT~UGO zUawBxU(tzVLZG9K`ARd zT%f!N^->n99>Ps!5iR$d(T+UT$X~@KAXFmlMZv=b+Qjp_0hG&`6ajzv`@XsH`!0^z z|JBz+7LhIqSSZo6UsQc($14Ix%OZv=q(3L3pCaHU(xsElXiK}P4gpPRPen1Iu0+rN zcm$^|LD0`8825_^*vG^0^AhNfhePKs1jiI`N+WR1uQ2dt&6)*=!{N8<-*Q?}4$u-@ z**S1)*Fbmfedw~6K%f0J45`rwl%iowT#p(_>rgW>8g*5&9CSLJ->!elX$T;r9ysOzS5gG-Y#4Mu zPl0~VJQ$QX1Z?ABbSy=Xyc{)ln@}q;8tQIWN7pQl{wFa?7P$nQfOjbN?E)st0>(+A$HRv_C}cDGI(YPO z5Z^4Qx^yAwCNxQ0h=$e$sB4Qut@PEXaqepvrF970V?n@=AHc9<3iM|eL07`S6{Lb| zSr6yu{BE2JhhCHx9Jm9N17v|Co;33v=yDcApSKW(j1Li*D#G~ZY6RKWAb4LKYTKew zpESc$1vHl|Xk{~_gQ^u~LNBX;ffA3~Wgd4q$d5(91j&RMHbM1hS}ltz-v3YDt2eOA zzwet}M2;jNPUZY~Oeeot)q7sVoi;OWQ_Kjpi@4ctMi(U>?d`E>nIWKAS_~Q`&qKX^ z5vZ-KNAS^=2+FX)m=uSA?NKm%7Y}{f9O%|8ht4g5%LoBim%9=FmpUzLf;*D|uAl&1 zb|iG$rb7SoTp0G55kR<_`wff-K1Pj{IMgKEl_SyMpc##+ADGCat!(n>g~~ko*ah68 z2pFdDxQD!$RezQkmD8PLH)HROIPz~C{SUvMKT14av6(Pk<}rylKbglU;*n+ZdCsr9 z-GYwRIJ9vrM)Lza8WRs~jX<5GrKp*@2|>9VU`(EeKzRiMPA!A}%NfwGTn$~}F>tvp zz)_8RJjH>U4a@$mLuq39E{dj1dz7% zwx!T#MnacI{k{xv2aMo?ucGe%|8nX9I1&hs9RPQ(7+hH#biX_X{h#sBJ60kfiTZ)- zVNCxTL4>>158Ss94eUG`JL1t?jz{ZM(g_jKP2tg7<}pwbal0(wE=9!sHW3qK0aGMF z^$yx{BmVzIv3Q;T7TFB9Y{o{3JS0d*R=^{w#~hD4CEkbgi$hn*j1IDZRy2DmN1>4| z9QBh;sFS=N!71wzlo|=+0TTlAw!m<1HS|a4Lbq-mbnFy3XKQe6xf{>^>Kq+_4ji~6 zZNafW!Lf7Taw4GHu@w4WVqi!T5%7CFjE7esh;Y{ygIWh8QTG7t28d{)#Gyrs8EqvI zozg_~P(+W1sBFeChe^%p#>zAkK<~GR1+s{v*ZaP^@xS-)z#LhGowQ=CCiQvnsO;_a zJ4AJUgm%jMICykV<}E70Z;Iq7)Y}(@ z+RDcW{)0F_0mk$X5ttVR19{xi9Q(R8(9yknx&ye595{Ne-8h$b4$(|N8n`n#;EH+Z z_AZD1w>TKAJOT)BkADv1p$({!5|5fv80x58poqq4B0^GVF58R_b^+a`X!KEd43q`j zF2~?5yNEHeXD;Ybg~ywA0rLOD`~Uwn=1C%UDk5H%1w2YKVzL=y&gcCi1}HpwWyGRe z#$t4k;?bHozjPjr)5B0dEfRI?OHea&6N0ig!)RTNz+@f)zr6*+-p8RY7NI+n>$!L7 z9=^Q0{>Gt0FIsmF+_A3U*imqwu7l3;9(1nd(C0#7%J0Tkf7>?JtFg%tOyVl5rsD};QtLKxFjB7G~*+a zZY1$Sg6b)CN2;jKkN0ty(8FOtMxbkz*n**H423I0Nm-r;~JKuyMB?bYu)dS4qUpk{SKg9YGPpsJ}z?o+7B4Vb9vl z{@)F_fhYe`JQ47fB;s+|tiJaT*ah5e7ctZ>;ueWVKSvCDrVHp|jYT`hVzf*rADU=1 zlEP6x#e~}X*CY7A8U$rW!kD-aff=h|_)~yB;VI}#K8Ef@qDR|??%gZD^KTq_@p=Q? zA2)k=fG;*cm-0MxXXBwy;$a}%J+uOW$5$iBu@W`*#GqC}ggO`4z#fAp=^~n^h-l-8 zMMuizBmun?L7nBeRiZji#67Zz2W%eQ!1rYlnKxqgUmCN1`nzNiM{$Z6YY}uT8yrgqcMRa@-n{_;SAPyr4sbKLKlXqt{203Ar=kDD1pR?kFeHZ| z@IVxd$s&UGEkvx~Tuo(r;oUTWW%=6uX(BZ+8{ zCZI`bG#c6$sPpm1jzk@61nMg$G|GrU zGl!t+1hljB>TFakUX(@r{%^Z)Z~Q&}!DPDyiHe9Py|aCH z({tZWdwm`a*jG*jIFxpli&}u=z z?gcQ|pM}2I4Beqja7+T{xDoq)KZF4pw}4~6gZusq==Q${-KiDOpA%s?vn{uFol3q^0y32WFCgUc&1>JY_?El?!j}E>O|JUTm zR0kx1OFsjy&xb(dY zV(93eq|Dgve{JfRyQv@GhhalH7b+;#Q?;-?jTLOc98T5%W zp!HljxA zYSdJC)UijPUQ#$3T4T^eCjS64S}7vhrN*Mufmn2P@E|?6J~q#uC+WM=&L`~+-buY7 zNx*1H#2AMK4@e@$$%5)N_=qH8g4#nCRGp}aiW!sao@=sVzH#~UHLzPS**mjIm^;z? zn$s=^>GM5I8V`1hI@|q#s{P30UYiM{tb(fBN4>ovgz=Jq&}8zEH{m9S8C~rnI(p~D zTON!>GlvCDtdVG#I1lv_B2atpYScXNEo%I^4#uQ-1pXF_0Gj~A(dE$Z{Sdk@S3;+3 z1;>ViqkHq(-T5~Tozav7+yjoC2Djro=uW%{-SIWh|02S$o4CMe1RjWl@#x1ermaE^ zDGs$V1k_Qy7$6JyzxJ*yHm>RnfA`+myu@2PStd^GIv7miLQ~uVZBT$#p+#Mgs9F_? zhd!XHeSu0{9=aq15**KZ@13z7XCVm?RRpO`=#E+7_v$LE3q|>YFPkd9VyH}a_tBmLUB-QM-k9bK zye-`arfT`MT8oe7VP7Sm(>_jvp7ScZ|Mgy7!58u=Y$dKJr=wF1C@Z&5HG2m&8JqM3 zZZeYCNHt?iqgX$iLQgh7iqKzd7oShxbAatgv_Kp<`MD1HC!6wLv?2qE_ZgrnmSUw#zgpY}oeRSLeTDEua^ z&*BKq?L#QP4~;Yi%*kk>`x*2&+aE|ZLspg2STn1jo7MwV%ek0Ff051%C2~n=Q?k=QpC*^R6BgRz*x6?jeO~D|YkJ8WhjMSI9tm z`9X*;{RU!X9)kHL2>0^X|G?~Pu*TcUpCRa1ApB(*;@=;Ic=iCKyaM0JC<5kg1m|N2 z%`$>=jxd@QfBn$c^u zG$Ms0R+@2y>FmhNPP9$YdVfEfDE3J^b8)7nz*G$WUnb#yVHCc}#~>a{LCpRYLgkMT zPVm_O!0kRjDBN$Iv7q-Z6$RpJKY%nBg``m~U>E^&6#iEZATYldA^i{P;VAa2YgKAwwXK$BTL_T5uoSF+yO{ec0jy53{fM^l`IW@oyY$*u|Lo{;J9^n z(DX5g6AwTvrXZbr4w9CH?ebD7@hCeTi2xy?8_i*$#Z zj8(;PL}<@Ur<$^#t3) zvz}r;r=o|rEGpgVwI_41)UMeTIcxNvN5!1d(eF92pTURN5kt!5G+R#q}V?h zg-^@CcP0tx^&di{=M24nqWh{yd!)f@B7Sao5DI@Zn4>zw8T9I-=w&rwGFWdY?EaDKv=sV`1p108^wIldT4&NbhGLqx ztM&o;O+{ZpuC}D*Q_9!Z8u^|$$d90x=4?iW&Fy>G{5}IZ`_)z6g9ve1vg-7QHM*lO zhK_uc<@Z}okDxg_hGy*u8qYqD&>PPobU{JT7(!rz_LZa|os}UKAAxl8K}fk@Lu9dk z9>V1ZAdm)mC|)xYo~AhftphGYn7s(`cpT!)w;&ZBfpkuWMEp&};Ma!`C}$8n|1^U0 z;|OIBp<(JE8fW8ZJ{3cY5k+fu812(hbZEoqG?EDC752VxWwoZrYAuOKp7w-~vHOR+ z3iKW^gSAE)>+%ZL{FW%M7~7w^`Zp zHTj%;PaM!4FlW+OQ^;UVNkxR}z|nKwh+-v;=VcY0xj2?jQ;nzu+Gb*Cors}jB97+C zr_h)`jE1=}7W;uKPqExFJJ+Kr@XaS76&{8(^AM!x6^K)3tv&vi?uYOVEB1N(Uqd@e z@n0JQ$`EGfApU+7;`DbR>EDBNJ_Tu3fzNyb{=!c9Pb3kXk0W^QFhcW3(J-?gjT3v( zq|@CkDq6G@T4x?d+tf~U%sheR**H39;s}=&gkOncg&||*9Mu|)VRb2uRcF#zT}&a8 zk0X+cA(BfWl2fgwD~OoXGKiR?yj_(K$Y%;7dexWAr{vq1C1hV#1-p4^E}s?T3YpuMmgZNzP149liuG@saurrZHE<_@BvydNRb#LPGXZ;io! zF#-SaB>b25Lb~{4NR!`zM4BRPk;W+R^i3Z79|}7PfW?0ZLggTYf4u|Y_-`S;_#=p= zhahU(AYIrGsq|C$-WY~&G6jF(F$7*ah~PhtAy_z!&`ZytVRjr1bhb-Z&@{ON%TDh? zOLhlZ^FwGml|Z|hM0;rn9a%b87-x4qc4kxPEUD-;;t10{FnMY*tFe2^V+hYj5uQ^J zo*P4WZj`ro4INWQH3m3&OTCZCh#DD(; z;_to>ku*ixB8@#Ag3$1PGVlN2`vCdR748G>1FiwC0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eAfe(WQxP9c!<|wwX_@A=DNqIH?m%CiU*ulLu+_8I=KnHf~1UdeBi(p6ZRdGk}P|=x6 z#Ywzm40jM0GwSdB^(=y|-?Xbz`MP0x8Z>V;DNU;5f3_#p3J;(>7ey{P9}Ka zZqZBTg>&P^jT<*^A4T(+9|#`!V;;|c$>aHcj|cv3hqZal9`?X*c3D1=ZCNVrx_$vX zao6=x2;E+|>-sDNZ`_Sw>hDJIyTRQErv7d?tsvbAcE{VW#cloUiPPu15!{1quK1nU z=Dq-?6iQ9XHn!az7g!3%jX+xAyWx}}a3jDAryQdjL4>H=Hs&ZV|$A zyf%)l8B0Odey}l?LUnc^OR%`$RtnZRf~*XnGj1iYoN+6K?M$GR0d^#)njv;?B-r|Tj=06Ha|C(eRrgX3$kyt(1A+DY zuovz?Q2hmj7w$k{HGS$B!Bu)3Beae?5LD0qd*KcQ*68!bZ6ml&pF;%K>2V-%5pGLR zoj!*lb`fq%P@O)9A$AdNOJJQo2LkK#I1so9w(@Q$w z%6)+PG$=Eq!Q|mORQZ^s+7uy`*GFI#lMcB|Iy5usfb2p%|Jy#mi8Me%8ZZrMFyD{{ z6gCeLK;eKHyRKBk%3hl3mAw16s>*Q75zhnOmH|W~nQAtO&=x-s0 zVY*Tnr6Jv4A~mJ|^gN+M77#~MzM}JlZD^@WLJ2;=MRG#8RYRJ1W@!2D^K2f%a2`Qa z7D+a<(AsMOMvRlkC=IC}K2P8h{FOKmO$8CnY#NYUScTBgiCk|!;ncnHxY@%DH=L^lP*a6QDMCWsq0A#$(~p?RQ?SiPv3a|!)sOu^^@9sSQs1M;p> zNBV&&*vGI$%$SatX@4fAY7h_Vj0tM zC&Lmy5;}hPJfWurQSjMYw2h!%*{R4cOpFDFB@%^;VTp?wmiYQ7&$EDqm!K6_a(`$a z8!%}ii9MDEbrAK`tZ8^-2>*}3!g63?7_iU)SjY=3g#I#2*g7uhqnd9dp5|)AlhBM# zz(R>1J=3EIz$C2T=$|P5Qm6n>3;?a%09|GS^Nb7t=nb7`c>j8y`JN2UBV;BW6zl1* zyeJ7SJMIPlQG0-!J>Gv+hRjVOOgdOI=@7@H!{a(SbeALnPLG3*Ni^7QNCVN~bJLGx zh)!N69VRmAu!Tv78^nCao_Ff#fTaWa(SQa$hBU}Fq=D*>Fc1N1QvhBa1`3l7Doi@~ zGU;%ENrw+?okQzk`iXgsC>4e@urQ_FM%a4pg@m! zpTKxyNP{JYG~gPFp)J$|s=RHk-o__-ukTdG*Wa0ohhqFhKY{VlkOn&p;y}!34*=yM zfGi+UTx9@zr;oXXrvuIK)nQWq96MAm`}$}4iFw>04th+tlTW!W=T(^VI}gYK62(;x zu$P#}bVchi-g_y&NaE_B%h`I_^>F?DI`;w^?qx#aErbqMh>h4y^$KyZc!T2 zf6~uh3*<<>=sNx!7Ds9IV-V{S@owr4176xg!g+q&xO|Q<1{)5{%Temm{kjL&irz>~ zY1c^2@9QTp*tVF;KR|}RJyz`{sU?2mmO<&4IzH5*YQzb&ai?s7I`yz>o$OQeb?)Zs6lbG5v|S&QOEB-VD{tz8;Z& z_Sz`N(TrT`9tgj!LCDTS(hC-3ZGf~8qYKU>hh-v1C$&QGls|MD< zZ)@t{n#fn%j58v_F;q_xqtqq;)IO@52xBSeY9N5Uo{ETDCn6p-8(6Q?rz56YASTX1 z9Ci0Q`U#9?Vm3jna^Ejna^U*NYJjPeaJGLOF&dCNeCsi>;feN2H&?7;G=mhp*7Ze^qbD zBo)^{6P<5M&EOi&$FRh;3`=~^#`q=uEbM_6tQC0Clw!Gar>apB{hNM51~JGCOPtBD z#D^o~-v=yw4=g+fEL;XGREB2c=-*cmi`Ot=??o7vsLim%^XV4Y`-AsO>~G3|g~7l= zePAKakM=6VWeA2ux;gGjbi|LN2l`Jpu<#+UFcw%i9atzlQk~xu0;fhXI;A^! z5!!Gmuy8c6kle3#1cJo~2w~6#W>5^mKm~4~0tZlm^h>1}NWcUVv;qh8fFkq(0&-x# zzeo6b=0o>kB7bimHe816cQ~1J(5|Dy=0gdPF@XjXjep=1{u?rgOJdSNmPrQ}CLNA3 z>A-wVhn~2DfRku&-;f4&hBP1#-HZGa8Dgt2lMWV4I_zQ6;USX_-R!mhH63sepV+H3 z8PZ^lAq{x`E{7qQ+)O&?G3l_0Nr$UUI&`oxht|XJ2@aixG>A8(ffT`Eq&x<3Ihb@9 z!=%GvCLMB^ba=<4L*G!m;n&~6Cph#P(%_;Y4Rn6SA!H7=#wT8X6dagzNM_RE zC6f+4!*PCe{{wu215qCStWRhPyeGB}l=ZeTNq6?hfB9a_;77RZ&;J6S;PAsfLF_Zd z0J#*%y%*_r#}f}<#*dXj&_CpZv$sZku=xYXnb-r6<#PkZs<9KMI&9~+_pPTfXE2Vzg{ zD1sVU7hWFOt%{si{WLc9-K)oXZu^W>klLqC23;KTtx22FO7(4L4b zxeMY36LAdJmg?Wf6S1Pfef)^<+3!PNoQVm`Jh3L3^H07H;WxZF0vNxKgjSn5als;f zT>IzP6dRXaj~JiLVJuHO2F;4Xhxa~IUfeQ4a%en^jrG0y zm+%P=M4yl+_uzs_C-Lm&F&MWTaJC_!tSBIm0H=!aWAu;xj^P}B8K2!RWJ!o}eCv_I zG2rtMlNV8@iu3)<@A=p82_6Cv^bNNkpTdb#l;ts6^AGXB;h013|F-?#@X3H6KMKKV z9ztRoiWJ>Ok5$VsLQ7`2Pcsykef`V$#8@QyfGP!1*6<|4p8W{7suA9OL1@E%|B9!s z4X5wej$8DVhx$Bh%%Sy&@Yz0{A{o(02+?~CV$4KDyW~EEj_>$I&4}dpUvWI+BnDVa zWcx%zaoN{D#Ajp5lMu)8B09+-hK@%}nTq{>S*8WzZ2Ew`-~1Q0AH%L&5Jz3TgG=2V zFiL}nP5h}}`~hDckV^*eVt@N`B3elx`fDKWpMsb+7{g5;^xZPdM}R-*QwcwPgL4D? zFkI(PvFdO5V>poLN}MLbczUriVvGUear6K2L)rcoyB;zAAcuii_dX0ZR394a{)TTW ziGUFZ2dCiF^yzqexSz_#W!JxiPjG0)A+d53cAxl$Pe}Uo{x~z?*NkOYVg|z!zq0X$ z*T0NEq)+t6+P&N{LRmOT&_-?`sOAKdNV%ur555nfXN}!6BEu64 z04PDmnr!%QGRT9%u*7)`ORO2r;cw!91r|OB79N6DoXPpIQ;gX3TI}Ba4R@#vX$wP! zC6+KO2XYy|Xg}efzXcX%0}H)?g^Iu$^v_2iLpUffEHQ;)iQOZ_ZwD5Z01Gz&3w42o z-2c?qW>_LW!xGmsEb+q++P@1}cpq3811vNH77G0n%;7TF7DRkxc7{1V9Gw4pfQ7Zd z!o$GogMLefb6|6dh?L#h=*)>JgGNkay-Vj!?kvp+=ngZ$4(1p9;$TR9MmN!SN~ ztpH)g0E$!qVJZMO6@Y^ZK>9nS7=XkCAhiOJx&S!(0E7`B45%~OCX>m|v zFpwMP9I5~R-;iN31|KFJPBZE7mK|dt@*D*JsYGs_25p8kpc>LZ_-8SM|FjHpCgM(# zOghYF(jk#ahZjsbd>!r!4&zVQ@YRq8sfILA`fu7Wq<;u7=`e*!hiE1pDwuTW9L{;@ z{df2iHW1~yAq}SdCv6zQnTtsWEhZiOm~_Zv(xGK2$DdvQgg;?JtsxB-7}EaTF)_%S z$WtpY=`f#3hjb<#>i;UI`aL`Tfv z;7{1_3!K5L1_Kzdw_gCK=A%DUKqWsdBQ0D&FAM0Fi8?))w z?orKkM}8hx{VT5D`};5QCu|t;m>^<>L~3Ug$Jb;>?OeYRV z2gPiFEfXZa8Sy>-Y#RtWMiQ(2xA}kPoJpVmbWse^mrNwyL4=m{U-BnxVD~3|iCRop zwh&)_C)WE{+=;)BsQ(O!$@iaQS;5=4%1)#&ggD2dIe4B?LpmuH#sCo`XUmV;pUt0b z!?#%RKG9#EpMJ*wTTFi|8Rz`oAJgyq7SsRZIT^x^B!c^|@+WK{`Vu?Ve07`ZFWE4Z zzX7d3=hDyHWCt1TH*lekn_%C@@8<;Au|anIxB0W*2QfdHD^}pi_0tE=W*z?XdEDWB zipXVLN(M9~&Q9$jq0MGa^jyf_x6WLQI3qjK`2Ig?e>Q)1e;Oy;fUygI!{>=Sf69Nb z`4f2%A}3Lk44A%^j0=|W^{ufH#VvXx&PlM_on8Oq_GjBcyay$&&**0rhgES>-})2# z>{o3H;PqXAdwrqL!3fY;feS;`2ikhr8R1{K|JV2vb`WENIJ@RF?h+P6==Qh!9U5Tr z@6b2j9Qwvc!?&D>65jy-f54r1_Fv^c^j%DmyN3(SG*D|aAUEgWrerXWL)8D9`45bV z&&UOqf6M{>AL1_ypOE_}{KxQeVyN1;bLoG#AN@!A&%jvt0e>DIgmHQ(zI+v~vY*C| z_5bhY&&i3PqK@FRq7Tx}B2+i^=Pab}Ji&#F=l63Tc1Cfe_WbMZPs~BYTq;ZYj6Cv- z5L`X_Ac=u+zYgI;??4`q_pYH6P$@MmV#(5invUtw@>lp zJA@B|xyzOzzlmVyYlylTk3jnv6I}0MSzs`?d|95j|>; zs9E+GIY_o0ME!`*#)zpFgL%*) z=Vpl<(BI-u*wli^Q`d^qckIBBiDUojU3`~6*P#E-Zfl}{7ziRRQo_FN!_E*7&)u=_ z|2BWZhQS=WZu%))XF2I-W8%B~5fMg{FZJ+tYr~KYqrY_}jn2f3QFG=lIwA59av4 zoiiuK@t^n;l0OTf+#NYHt#0h`!e}~Et8%8rM@i05TJe=$I z?*DcEL&gMgMq!b+2ZoQ6PbPw$L;d&f$)Ftq3`-1TSR(6te20JbALBpJpZbKJzIi_* zGGZgaKXd|d3jF6XXafhs66Z23@yT$$!|(q?{5yb!SAm6_pbaOGu#bn}Z?^aQXC#Kp zkp85{u*6)3CH4;I&A$H^`Llmlum@OZ`EUHLV9*X}h9$-`Eb%j&^U(Sq^6v!})&UET z0}I`Ng>t|0yM>X+pbfkXOI*dU#KxiAiR-_~f8e*WEL;gJR0kGv{-@4b5He^3iD8M> z3`@K_)P`T+{|Q)l6Ie(E78(Hy`TogSjbD`^V?v!_iP;QG>={A(6K9pGfrSTvg?7L~ z@&6|0;WESqF@_~>V_0DOciNvg>(l@&%mNlJ{MFy${5NFK4z6?yTy%IQ)@oku_g`9o zg$2OEwZK9hU?JE4&$j+6A#6ZE(q0dou5k@_K|9*~(>ZUXf{5FQ+#_NSX`p8I=OT&g zFyiwb05hUy4jeKff>YcG&_n!`9RZlc`J%xZ!UpcaY_KMN^G*;E9;~_l@6}xdf9?T$ ziMns_o@fW+9*H06n+>!N@gZ^0i)bJ08f>>d7;IPI9%x^x*+5-FxGb>4(P4%lpBx_m z2-?|NIT8OwgeW{*0N}YUeL28be>*D+mrc)DFN5~EyeVjIYst%M3?KblgKQ#KoE^C24t?pR)_X4qpg9wRD`ci&5{i3t?ZktSnNB5-BZM-=@F5 zS$F1m?VAs7h_73(YJbqAH#16F#kiMz?M+kNGT;>mMlJ`5ka%-v@~4wrZcXbpa=3!l z-6nUfx;P3ohEqCBP495j^%kc?hqkTJB+rhg`jPxNw5gA-By*S-P{J>ZiGi+!XBSKj z&!diqj1`=6z$pPn&OMp3=-^ zAAW+TPm*+m-+!XNxIc8s=Qthgka84yD#q2PLSi1t2@2E7;gJ!4Q>4!;J}J8RAoXRj z)|~@&LQIA7?M!ts5aQMCbGc*b$@6i0+styX;W$o3&iu$+uhv9eUqwfC3+5Ivm>{+B zrWf?cH!NS67CGLI6qLZaCdQP>kvbRC%GD}brQySzEd~=LE_Q7rcS3;P#48I_ytAze zx99ri2yc=MDDs}@&sFX8QG%B$!>ii|%kR}j@{){ZlCt?iw+KG9c^g{t)!d-GH)4}I zNrb~^f6a4h3pph@bhdjshyN(O(dVqYrH=Bok2w*ca7hJ@X?)mQ#NA+1D;++G;pJ}P zk`SFk=8jaY%e3r|!IsKZMqQuG!lx$iwc9VO z+-%D^S=SbB5?&Q-H?Q#R9PJU%;GLw%Y9mdrvct^c^ z3h}jBq9VMCC;YFO<<%J=caV;E5ANHClcDXYTPlzoRt2v?fi6u`x6s1+Jy?(ME z`9|AZ&gv&5k&9iY$)VdPPrmWQO#HCjHP5C`YAzPPhi2ZBV(N@8@?t*s`kZ6mA}}j8 z@Wg}DcE(zg9VZ&HCd|Iu$+JeYx#YOyQZFuZ|2D>w(Sf~+3FkVZs8uDI@e_<9i*`@; z*r1vg;kk92R(T;GHD_jDc7lD&sRSjFW2#aO9iuy_^5KzDTIKQ+<{0dJ&v(|3thBn# zD>CDw!wjv0W1sd?NhPPpFBWoJlda^Z?jY>;$r_?ugZ;>%QPt8?$4=d!uq|^@WVOMw zS#LGVzivOyceas3>2lXOJ#}WE*&T}nODoF&&LA$wT|qnVO_{|Rl%m@xqkCFuvmun~ zc7OHODmZ*qVoTKat&}@A%KS=ROnl0nzqLtvHJ8Kd(s9;vxXe9L1IcOkH;-~^k~|YH zARrX_(mp*R-~Qk^d1+VLRB7AGZ*#b+ys8rNr$VBg}a7uXx^f86R$ zLB_O%*l}Uh45iamZ&s^r<<7dk1t`)*(LplT3KCedW9qE6^aPxz7YaVLOpoXx&7J09 zkj zq%NxY*tw|oP-n&IwB8$~@1OT>yYWcU+`moTyZJ;PPsilYG5K@C*JSP5ko0ADXzPxQ z6r;i?tEw+feYukPW@GP}wc=1xR!fSH!ks}8u_86T7Hifh-_4dOnLfv%;q4BcWtyid zT`%Cg3)#X%U#UrWeaX*4tDtnej`3QpcrR0fIL5))V^`F8Z{HXF`g-9g;svxNj4QOW zO?B^z<}~@d{#Bu>>dDYmaB+?G`nJdzqBq1(xV!S}w1&yOmYWVoTvv;6e|!cv{XKIjeQ3woot8Yg|(K%?C}QVNZk`Gl3_m zGe*z1t-^YMQOKku?t>0*y4|;~E1WhVGe*%;xX&zDdm6#VHBg+B~ne@V%2K>v&DI!um6dKl#jCAwchj&MfZv zJT2$EYfC~xdsa*se>!*P*6ZeXq|J=`S-qdIza}eX(dX#e!suFeXLA1KQD`0 zBxPLTCCA4bhS)}=s%kmYZZ7E zn+jO)w47tsX9$FL=j|~4RHxzU8vmiIZkr4zF=%ws?wfFCeB>+2@owZ!$qlpP4SVik z>nx#FutxF|@ML|gySApS&V) z0r5IAryOGRneN;cW)vsRnCRJ&t*EO-5;1I%UaVD+nxLM<^JGpJ(>E zgM3T45YlHXx_4JYX3GBa5fH9YCD$=##u!r#kEVr1xx$^}=#>qlD&2^$lN<~At1?_h z>(;+rAXU93sa#%Qa<7ilSxGG=AEkWjlI|;3bT5Nh7}6x+`g!g~&w}^cVv47NWY2x6 zPmL1l7b(UUrpNDP+>}qhDNi{xRbofetsdXD?np5*@H^~hbhJ(s?`9pIk#%cjpiA&` ztT-Q0OXtY*?d+n&Ukm4O<9Y3#TLEPqot{J z5|8biUFl?oyykRPe3sN-u6kyh~J}hpv?<3JF%e zaeLzHzJ+F-;-wKFP^lWoswu&BgTDwj@`B|#n%`-R0Mdg?5Jh^D+HGycSBWoC5Ij#Dfg1bp> zCuQ%%Dvn#;QnH7BsB=MG1n@`;aIDc@Ifv7Do!GQ5d1?jcX4fc{%b&1qIbmxXCu(6u z=ag)8+Vr9Oj84!-Q-=0^)9!4=%4H;x>>#Uj=VTKR<_n98S4IZ&3MvjPb~tKnzh@VZ zvc8V7LHegdh+VnX|JtedSE8_NQ zkBwMyi1Q8OLHDDxygFNac4eO2*<$avplmHfojVd_rBTbvsC}Z+xMJOxB+)Thf&NxG zDgqRb*1kgW=uIc0+-r2&tx_+YG8Kc0#2J)R#$MUR8~OJ5-8&&2wNX_6iiVieGOO0( z-rTHDpExf2+3`M~_I9UJ&C9w~g0Y_DRr{21nI9C41^f}^Oxg6u10wmpz zc}jL!9`P?{*igow zV;&bDwdw86n?0drJg&}3Dlul|>ZB^25G&(T#-9xpYBTNLuZVYFI)9t&LdhNa%A2-E zoXWehwzf{}alr${=g0TgTx_2QQT+0vnR_VdQ;tnOD>~&PPqVVXdE1+j=EqF)lty!E z7i2vatP7vPXe$Zza}R!g>jp_g*I0Sd3_wwmA2Hcjn5`qH>b1GdNsEJyHnb*U#g=B*8uZ#KwK1CF3H-wO+dParwQv zru^PTbBbRw+AoJw%(J3)^Z0(I80Wb=A4t8~>}wPCp-}4PJbh(jYm0?j$m8>aFZ5N5 zJ3lHJo7}H*Dd(T?;q}N znQ8y@OQ=z;d+>96veL2A8Bu&?ZGo@qH%?Tp7mDh!xTUaHd8}p9JV)oGYiAGIw0jk$ zTssp#s(xY7C>1!S_JOwVT`bu}F>*=CbfdESdiqAi{%-A&6j;xec zYC{Rwqg)aov1T2&R{I-;vN?`bPnWjcx}rRK)A^`QGaZ_}AH@!g8zKTEI39*b$cfH3 zopEoQPWnlEpQgjvZ`^OIIfkk&tobx{7P(k*{@Oi@7iVkAX)?T4?eg${Yb#{7d9l{` z{3-i7J~=h*=HdnS+&hzZ&a+M)pLs3Y$!-2;S>4u zF2TpG$;B6Rr_E@iB+-9AFWvHB_Up9cX>%+-HSe%@;NKc9Ei}u?@d>TiYmxl1urHg= zJPR}SX!>;9HI_pK>LTWmE&^zG^Cy0_Tvr2MQU$6bP#Sd*11A3Zw$nYC@pS6`y=`*#emv>J zs;xe68jkMc%od1bMs-|Y(CcyjMAW#vyqT#+*Hysu#Anl$H-3M(=Vj|#=eHKoZx5Bd zo%f*1UD9XS8_Eod(F@b_M=l!1`MU379#vNl_-J(?|GkMhx%jwNmSa+lb-_8#&~A<3 zE|CxO9ym@+E2Z|Oe-z-pS{xzH(C;pD77q&U*2r9S;{JOHUWk1lSD9>G(5DuDLB7gt zv&{8f`knmtY9=}H-X(jcE+l5KtXesx{foBQLD%**#~qR*-emEd3=w=e`G5&;iG54f zd#?84v8o@QJ+ad&&{ZNaop+ykVVCpAEvZw}27X=;eVIbx7gDTfC`ok=>f3)b`ShH9 zWi85LP)8PhZbwZ0e(!H?iJAE{Csla9Rzdbyl9Fylg$eJUx151rOvI$)LF90zs|jyL zi5^tCoj6-x-Ddiw$7921&rHwuyaWpMvhu;_b_v0w9(P|i4gGv=(x>*stQ9o-)9>wI zyJ6lY^`kR7A@}8t_mS$`G*7Lmu8ZLi17+oR@8;su)8!{;&;6~sJYP{=hv7wS72@I0`YZg@hepPsC& zUvG5t)1-?|C-Z|N3Im(hWKJNM+17I zUQ*%-mz+q(h80Q^T<--qQt6Qf@zaE7bUypw$!+pjQ>bO`L$_Ou_A#9sEN#7 zQbS&p_ip}qrz5O6Jw{LE%;OSCy)(Gp8aX-lNE)Aiu>8i9r`=o2+Ik(`$NDJES0ORA z60e(6rEO-t%D(@+`oV=uK~M1f?ch^MC~s|J=xH#a_()sgq1vjD%dY2^jQX(1Z|zwD zx%a99*KVkQ=hcSQ^VNilXum@63a@$Gqq!5-sR?L5PM(}yoyWWJ z;t=gf-aYqbkf8g1qr*Bx_aO$;us@HwJmy~xNqRC8D2 zaZR&h)dh3UElF8kTf0oXE1EmK*PQ@%Hks^Q-Mzjd`gF z=c-?(3I|p$C~g-O|Lr_kXk1^6XMVh1*A=jSJ!zufgAcWt)rD>w#Y}CNRfMCw~2e>Nx^0n1@}n?#=R@8O>E&>)a(uG zv}UTmD31O8OXd`MO3R+W-p5_n94rH63>G+tx}4iQ{i#D~26LO_LYWnHdsX0AWrK&? zjON_7EYqNupIp=#*YDO9J>@jv-SY6p;r{k$l;4^1-oRDUzS={MbDeSedpoe&Uy)b9 zwf06nXU~T6gqbeEujj^?@V?z)^xWXp8u5AZa(P{Vi zTI;rJ>gc50{krh$<-nTQ;?9+&<`yfrKB~G@vhwZ4=}%l*)SFfmrmRn=o`_vHE^A7( zH~H49qq@o@k+p`B8L~aW?@U9deC6NgyZlCrDoXO^X*td}SoYX)!Fmngu`0`6v9 ze-ZFdYJXGIMA<1BC(YFlO1_PHaOgnhoPDAt7GfZJ^j>jN^jHs%D^w#cq1Z*KMx%c_ zcYVX+<162;w=q~hWjc$-G3C|L11TZt=BlHbZJC}|oCHbHmZeHtRp8ld=YzCz#q5;I z&W4)n;d>Tt`I230U!s@e{LXbtta$jBX7vlM@s{_`c$#FKq@Fk)1$Mq zdEV1~zDqlpcNT2g^vqQ2zW%bdOKv&qc{EH44s>wrp}hN|@W9P=eru=&X~&HKoh-w7 zN8f~6oVSJZhbrim1-a+elg95!wpvoGy1!=A!;qrl`_9)}Zv>W6N1$*9`Z`iqS_cJ^45!clhKP!}v>X6EL_ipXz%#YWPHY9CxGTh0- zOTB%6(mbg!*=hTuQ#-03ojQHz>+j0Tj&F>I%PL6$8L~Qb{ey~k`;-||>dRG&lI*I} zXRE;cr2!h3_-pZl(Z`k>m5z<#@k`roh-=DUNTd{V&Pokjf<7-M`;k_~*d%uH=GMo~ zaWeekA_j^N9;&OfzDO5q)+$Kp<$PJcuy*E&)en_<0aiOOeA_x?4>ulE#cS2;Gd>0< z?%O?0jYO@eahOWHkg&q#e1c9*pQH~T+#R9-Y4^WgvRHCCpeDrd(|&&JK+ zC{9z;jAq=ZXlTA0l5#wkvpsvfWr&MmyAM1~eoMP??0r$`>-gV~>04_R)ajcpGHjm* zPglR6+ut(l-fmi*@o}g2tCF*EbI8Rm!CrEP^Tz9>oZh&;Wqe2B3dPucyF*04u+iy$ z(9(9_T>LU#JLBWd?K?Zp#@*m3Zt!>T4Q;JH-ErsgyodIw?pDqU2X>pv5llB09epvu zZ`vxZ-IiJf%4u~cR@aw6)g+48rcjp&f%|JJ3mvA`FZ43LUAAm&EGM<%&_|&j-M* zWzyZ}y<5vOOqC0bJq&ktK-EJv)sDO~=ekOK3oGOD9onTi!k zs^WMejD;X6{!s3Vu-=1&Y3Z}<4wjA2e-poK?8$c$Cf$yV4YEo6+H&ocCE1^QCD+P< z;q$!C#>)Gg`KGJM7nj+kx^Hq%U+uES_u;g8ChsCQuhM>>)%7xlRcI&UOFD99f7$J; zYE99p9gi-K<{+Xbb(9>QQ=^Yh$=&I@D9ZO4Zo57gp1P!+=y-Y}$zy%5`@@?jJ#*`& zL(h!z;K>)5)W(`E`Ze;k3as8!zrL=GUanE>D3;g5eN$B`qPZp{BA%cWOmm z;jXWxU+?4#$C6y{d305H%7LNp{VA=t_hQNPiPP>j?b0Erh+YUPQq>iJBw>?{zCKMM zea4vyUnm(L`MkD&$*&cY=A>qP%$7CY8Qsxv?hHB-v9awp^J~QpQm73fi^cBlI&@Qb z+E>9_?IySL3R`0mD!z_eYXMJ_Z{4{ke5Y^keEns*jrUL7*A5w*))6{WK?ssk7JgmZ zn9unx_0^MmOXr>KidHn%Z@F~sC{#VQKhys1{m0Uvjz^E_9H~SY>P%3Pst|=b+jX5> z?410#&3>0%Q_3sj1Gl`A-c$K?+>W*IRG~tbxy@+HZid>OG&N0EsiIc?8;!jOuIa&~ zq|L$&dxH2ku`*Xh#+t^LjW@k(&=ERwu?YNeixQY~U%R8Q)zrP>>$n~3;A!&g+x4&N zl7jpj#wAzovp?M`_=Nb&VtD%DZp-yfd%woqdk@lQ+U_eG-&4B3BXs655lFkAm+h~@ zKT|rV&_BT?INIxSaE+f`6odZ?cNMEIz}oce(X|twa_{(ZbYtbY zaM$8X)C<%-m&$}izqreFRR!OVm*?2r^t3>K@+nG!peOfwiVma5PIT-QQYFgCJ$}^| z_W5#h=K`_ngwP)I4z%aw3!hi4;4MRY^U+BA*d0ZZ$R)z=z?9{s=A`Ok|5+k;C|{P4 zEjR7%|=aTGu32%TBCL^QftdOd7i9N{gcCt@4$<;{*GT|#j8 z?$>cUVu45cidU7WOe}BYZ{~qYH=7PNu4K~iOS{o#h-E5uUVY&xaZk*Q z#Jo-XfuG<{P8fI1Et<-} z&94>1-a0Q2i$cBtS3P-Wi%S15Z^{fhxu|!(9%L5vGpBKT#^h=x?8&vK@wM+?=L_Ze zVX}QfRR5!V>)h|m*zfDpEH9xXS^s#g7nJ9trV7j_sNMLWbcbZ)y-}*(ccW%AFC6Mz zU>AC5y!!egCH@YNbJYpjk(MVSdhD8c;85pjD#d(NG=1em(F7`QWCPz>(?>inL_ojA zYYZ>-B9AL=vq+{=?A55qu&}gBg4`Nrt=D7Q%Q+FA*P(%3Av1bdE=hr%j!99^orNHZ^6)OxInru?q)^Se0NK)zurPzYig7k-`9{pxR|B(4#v^ z`NZPU8=vK;8t>Ac>hYpJyu(D4=!*luM&}Ei9V|3pXkz}u^vW`ukL>$2ZJ8K84Y)kKm{|BkhkaPe5 From 5a675c6a0609497e582faab403c251778a5d015c Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 11 Dec 2019 11:03:56 -0500 Subject: [PATCH 087/396] Updated for K2 features, whitelist instructions, & build instructions. --- README.md | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d111667007..34c05867a7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # HiFi Community Edition -### [Download (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) +### [Download v0.86.0 K1 (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) #### Changes for **v0.86.0** consist of: @@ -13,11 +13,13 @@ * Entity Script Whitelist, no scripts are whitelisted by default. * Background CMD outputs full log, instant close of application on closing of the CMD-line. -#### Added in K2 (12/8/19) +#### Added in K2 (TBD) -* QML Interface to access and save whitelist live to interface.json -* Add "VideoDecodeStats" to .gitignore +* QML Interface to access and save whitelist live to interface.json. +* Add "VideoDecodeStats" to .gitignore. * Fix VCPKG SDL2 to port files from 2.0.8 to 2.0.10 to fix CMake build issues. +* Added Github link to "About High Fidelity". +* Removed environment variable requirement for "procedural shader materials". This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. @@ -25,7 +27,17 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. The whitelist checks every entity-script attempting to run on your client against a list of domains, their subfolders, or the specific script URL entirely. -The Interface has the whitelist settings under "**Settings -> Entity Script Whitelist**" for you to configure live. The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. +The Interface has the whitelist settings under "**Settings -> Entity Script Whitelist**" for you to configure live. The whitelist checks against the domains literally, so you have to be precise to ensure security and functionality. For example, the difference between "http://" and "https://" matters as those will be seen as two different domains in the eyes of the whitelist. Separate each URL by a new line. + +Do not use spaces or commas in the whitelist interface, you will only separate by commas and not new lines in the environment variables. + +It is recommended that you add High Fidelity's CDN URLs ahead of time to ensure general content works right off the bat: + +``` +http://mpassets.highfidelity.com/ +https://raw.githubusercontent.com/highfidelity/ +https://hifi-content.s3.amazonaws.com/ +``` You can also set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" @@ -36,6 +48,10 @@ set "EXTRA_WHITELIST=http://mpassets.highfidelity.com/,https://raw.githubusercon interface.exe ``` +### How to build interface.exe + +[For Windows](https://github.com/kasenvr/hifi-community/blob/kasen/core/BUILD_WIN.md) + ### Boot to Metaverse: The Goal Too many of us have our own personal combinations of High Fidelity from C++ modifications to different default scripts, all of which are lost to time as their fullest potential is never truly shared and propagated through the system. From 67dca7639fe4f28673a26ee4b89a2005ece63801 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 11 Dec 2019 12:25:43 -0600 Subject: [PATCH 088/396] Adds community script directory, adds chat as default app. This adds a community directory under the scripts directory. George Deacon's chat app has been placed within, and is loaded as a default script. --- scripts/community/chat.js | 995 ++++++++++++++++++++++++++++++++++++++ scripts/defaultScripts.js | 4 +- 2 files changed, 997 insertions(+), 2 deletions(-) create mode 100644 scripts/community/chat.js diff --git a/scripts/community/chat.js b/scripts/community/chat.js new file mode 100644 index 0000000000..a2301611c4 --- /dev/null +++ b/scripts/community/chat.js @@ -0,0 +1,995 @@ +"use strict"; + +// Chat.js +// By Don Hopkins (dhopkins@donhopkins.com) +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +(function() { + + var webPageURL = Script.resolvePath("html/ChatPage.html"); // URL of tablet web page. + var randomizeWebPageURL = true; // Set to true for debugging. + var lastWebPageURL = ""; // Last random URL of tablet web page. + var onChatPage = false; // True when chat web page is opened. + var webHandlerConnected = false; // True when the web handler has been connected. + var channelName = "Chat"; // Unique name for channel that we listen to. + var tabletButtonName = "CHAT"; // Tablet button label. + var tabletButtonIcon = "icons/tablet-icons/menu-i.svg"; // Icon for chat button. + var tabletButtonActiveIcon = "icons/tablet-icons/menu-a.svg"; // Active icon for chat button. + var tabletButton = null; // The button we create in the tablet. + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); // The awesome tablet. + var chatLog = []; // Array of chat messages in the form of [avatarID, displayName, message, data]. + var avatarIdentifiers = {}; // Map of avatar ids to dict of identifierParams. + var speechBubbleShowing = false; // Is the speech bubble visible? + var speechBubbleMessage = null; // The message shown in the speech bubble. + var speechBubbleData = null; // The data of the speech bubble message. + var speechBubbleTextID = null; // The id of the speech bubble local text entity. + var speechBubbleTimer = null; // The timer to pop down the speech bubble. + var speechBubbleParams = null; // The params used to create or edit the speech bubble. + + // Persistent variables saved in the Settings. + var chatName = ''; // The user's name shown in chat. + var chatLogMaxSize = 100; // The maximum number of chat messages we remember. + var sendTyping = true; // Send typing begin and end notification. + var identifyAvatarDuration = 10; // How long to leave the avatar identity line up, in seconds. + var identifyAvatarLineColor = { red: 0, green: 255, blue: 0 }; // The color of the avatar identity line. + var identifyAvatarMyJointName = 'Head'; // My bone from which to draw the avatar identity line. + var identifyAvatarYourJointName = 'Head'; // Your bone to which to draw the avatar identity line. + var speechBubbleDuration = 10; // How long to leave the speech bubble up, in seconds. + var speechBubbleTextColor = {red: 255, green: 255, blue: 255}; // The text color of the speech bubble. + var speechBubbleBackgroundColor = {red: 0, green: 0, blue: 0}; // The background color of the speech bubble. + var speechBubbleOffset = {x: 0, y: 0.3, z: 0.0}; // The offset from the joint to whic the speech bubble is attached. + var speechBubbleJointName = 'Head'; // The name of the joint to which the speech bubble is attached. + var speechBubbleLineHeight = 0.05; // The height of a line of text in the speech bubble. + var SPEECH_BUBBLE_MAX_WIDTH = 1; // meters + + // Load the persistent variables from the Settings, with defaults. + function loadSettings() { + chatName = Settings.getValue('Chat_chatName', MyAvatar.displayName); + if (!chatName) { + chatName = randomAvatarName(); + } + chatLogMaxSize = Settings.getValue('Chat_chatLogMaxSize', 100); + sendTyping = Settings.getValue('Chat_sendTyping', true); + identifyAvatarDuration = Settings.getValue('Chat_identifyAvatarDuration', 10); + identifyAvatarLineColor = Settings.getValue('Chat_identifyAvatarLineColor', { red: 0, green: 255, blue: 0 }); + identifyAvatarMyJointName = Settings.getValue('Chat_identifyAvatarMyJointName', 'Head'); + identifyAvatarYourJointName = Settings.getValue('Chat_identifyAvatarYourJointName', 'Head'); + speechBubbleDuration = Settings.getValue('Chat_speechBubbleDuration', 10); + speechBubbleTextColor = Settings.getValue('Chat_speechBubbleTextColor', {red: 255, green: 255, blue: 255}); + speechBubbleBackgroundColor = Settings.getValue('Chat_speechBubbleBackgroundColor', {red: 0, green: 0, blue: 0}); + speechBubbleOffset = Settings.getValue('Chat_speechBubbleOffset', {x: 0.0, y: 0.3, z:0.0}); + speechBubbleJointName = Settings.getValue('Chat_speechBubbleJointName', 'Head'); + speechBubbleLineHeight = Settings.getValue('Chat_speechBubbleLineHeight', 0.05); + + saveSettings(); + } + + // Save the persistent variables to the Settings. + function saveSettings() { + Settings.setValue('Chat_chatName', chatName); + Settings.setValue('Chat_chatLogMaxSize', chatLogMaxSize); + Settings.setValue('Chat_sendTyping', sendTyping); + Settings.setValue('Chat_identifyAvatarDuration', identifyAvatarDuration); + Settings.setValue('Chat_identifyAvatarLineColor', identifyAvatarLineColor); + Settings.setValue('Chat_identifyAvatarMyJointName', identifyAvatarMyJointName); + Settings.setValue('Chat_identifyAvatarYourJointName', identifyAvatarYourJointName); + Settings.setValue('Chat_speechBubbleDuration', speechBubbleDuration); + Settings.setValue('Chat_speechBubbleTextColor', speechBubbleTextColor); + Settings.setValue('Chat_speechBubbleBackgroundColor', speechBubbleBackgroundColor); + Settings.setValue('Chat_speechBubbleOffset', speechBubbleOffset); + Settings.setValue('Chat_speechBubbleJointName', speechBubbleJointName); + Settings.setValue('Chat_speechBubbleLineHeight', speechBubbleLineHeight); + } + + // Reset the Settings and persistent variables to the defaults. + function resetSettings() { + Settings.setValue('Chat_chatName', null); + Settings.setValue('Chat_chatLogMaxSize', null); + Settings.setValue('Chat_sendTyping', null); + Settings.setValue('Chat_identifyAvatarDuration', null); + Settings.setValue('Chat_identifyAvatarLineColor', null); + Settings.setValue('Chat_identifyAvatarMyJointName', null); + Settings.setValue('Chat_identifyAvatarYourJointName', null); + Settings.setValue('Chat_speechBubbleDuration', null); + Settings.setValue('Chat_speechBubbleTextColor', null); + Settings.setValue('Chat_speechBubbleBackgroundColor', null); + Settings.setValue('Chat_speechBubbleOffset', null); + Settings.setValue('Chat_speechBubbleJointName', null); + Settings.setValue('Chat_speechBubbleLineHeight', null); + + loadSettings(); + } + + // Update anything that might depend on the settings. + function updateSettings() { + updateSpeechBubble(); + trimChatLog(); + updateChatPage(); + } + + // Trim the chat log so it is no longer than chatLogMaxSize lines. + function trimChatLog() { + if (chatLog.length > chatLogMaxSize) { + chatLog.splice(0, chatLogMaxSize - chatLog.length); + } + } + + // Clear the local chat log. + function clearChatLog() { + //print("clearChatLog"); + chatLog = []; + updateChatPage(); + } + + // We got a chat message from the channel. + // Trim the chat log, save the latest message in the chat log, + // and show the message on the tablet, if the chat page is showing. + function handleTransmitChatMessage(avatarID, displayName, message, data) { + //print("receiveChat", "avatarID", avatarID, "displayName", displayName, "message", message, "data", data); + + trimChatLog(); + chatLog.push([avatarID, displayName, message, data]); + + if (onChatPage) { + tablet.emitScriptEvent( + JSON.stringify({ + type: "ReceiveChatMessage", + avatarID: avatarID, + displayName: displayName, + message: message, + data: data + })); + } + } + + // Trim the chat log, save the latest log message in the chat log, + // and show the message on the tablet, if the chat page is showing. + function logMessage(message, data) { + //print("logMessage", message, data); + + trimChatLog(); + chatLog.push([null, null, message, data]); + + if (onChatPage) { + tablet.emitScriptEvent( + JSON.stringify({ + type: "LogMessage", + message: message, + data: data + })); + } + } + + // An empty chat message was entered. + // Hide our speech bubble. + function emptyChatMessage(data) { + popDownSpeechBubble(); + } + + // Notification that we typed a keystroke. + function type() { + //print("type"); + } + + // Notification that we began typing. + // Notify everyone that we started typing. + function beginTyping() { + //print("beginTyping"); + if (!sendTyping) { + return; + } + + Messages.sendMessage( + channelName, + JSON.stringify({ + type: 'AvatarBeginTyping', + avatarID: MyAvatar.sessionUUID, + displayName: chatName + + })); + } + + // Notification that somebody started typing. + function handleAvatarBeginTyping(avatarID, displayName) { + //print("handleAvatarBeginTyping:", "avatarID", avatarID, displayName); + } + + // Notification that we stopped typing. + // Notify everyone that we stopped typing. + function endTyping() { + //print("endTyping"); + if (!sendTyping) { + return; + } + + Messages.sendMessage( + channelName, + JSON.stringify({ + type: 'AvatarEndTyping', + avatarID: MyAvatar.sessionUUID, + displayName: chatName + })); + } + + // Notification that somebody stopped typing. + function handleAvatarEndTyping(avatarID, displayName) { + //print("handleAvatarEndTyping:", "avatarID", avatarID, displayName); + } + + // Identify an avatar by drawing a line from our head to their head. + // If the avatar is our own, then just draw a line up into the sky. + function identifyAvatar(yourAvatarID) { + //print("identifyAvatar", yourAvatarID); + + unidentifyAvatars(); + + var myAvatarID = MyAvatar.sessionUUID; + var myJointIndex = MyAvatar.getJointIndex(identifyAvatarMyJointName); + var myJointRotation = + Quat.multiply( + MyAvatar.orientation, + MyAvatar.getAbsoluteJointRotationInObjectFrame(myJointIndex)); + var myJointPosition = + Vec3.sum( + MyAvatar.position, + Vec3.multiplyQbyV( + MyAvatar.orientation, + MyAvatar.getAbsoluteJointTranslationInObjectFrame(myJointIndex))); + + var yourJointIndex = -1; + var yourJointPosition; + + if (yourAvatarID == myAvatarID) { + + // You pointed at your own name, so draw a line up from your head. + + yourJointPosition = { + x: myJointPosition.x, + y: myJointPosition.y + 1000.0, + z: myJointPosition.z + }; + + } else { + + // You pointed at somebody else's name, so draw a line from your head to their head. + + var yourAvatar = AvatarList.getAvatar(yourAvatarID); + if (!yourAvatar) { + return; + } + + yourJointIndex = yourAvatar.getJointIndex(identifyAvatarMyJointName) + + var yourJointRotation = + Quat.multiply( + yourAvatar.orientation, + yourAvatar.getAbsoluteJointRotationInObjectFrame(yourJointIndex)); + yourJointPosition = + Vec3.sum( + yourAvatar.position, + Vec3.multiplyQbyV( + yourAvatar.orientation, + yourAvatar.getAbsoluteJointTranslationInObjectFrame(yourJointIndex))); + + } + + var identifierParams = { + parentID: myAvatarID, + parentJointIndex: myJointIndex, + lifetime: identifyAvatarDuration, + start: myJointPosition, + endParentID: yourAvatarID, + endParentJointIndex: yourJointIndex, + end: yourJointPosition, + color: identifyAvatarLineColor, + alpha: 1 + }; + + avatarIdentifiers[yourAvatarID] = identifierParams; + + identifierParams.lineID = Overlays.addOverlay("line3d", identifierParams); + + //print("ADDOVERLAY lineID", lineID, "myJointPosition", JSON.stringify(myJointPosition), "yourJointPosition", JSON.stringify(yourJointPosition), "lineData", JSON.stringify(lineData)); + + identifierParams.timer = + Script.setTimeout(function() { + //print("DELETEOVERLAY lineID"); + unidentifyAvatar(yourAvatarID); + }, identifyAvatarDuration * 1000); + + } + + // Stop identifying an avatar. + function unidentifyAvatar(yourAvatarID) { + //print("unidentifyAvatar", yourAvatarID); + + var identifierParams = avatarIdentifiers[yourAvatarID]; + if (!identifierParams) { + return; + } + + if (identifierParams.timer) { + Script.clearTimeout(identifierParams.timer); + } + + if (identifierParams.lineID) { + Overlays.deleteOverlay(identifierParams.lineID); + } + + delete avatarIdentifiers[yourAvatarID]; + } + + // Stop identifying all avatars. + function unidentifyAvatars() { + var ids = []; + + for (var avatarID in avatarIdentifiers) { + ids.push(avatarID); + } + + for (var i = 0, n = ids.length; i < n; i++) { + var avatarID = ids[i]; + unidentifyAvatar(avatarID); + } + + } + + // Turn to face another avatar. + function faceAvatar(yourAvatarID, displayName) { + //print("faceAvatar:", yourAvatarID, displayName); + + var myAvatarID = MyAvatar.sessionUUID; + if (yourAvatarID == myAvatarID) { + // You clicked on yourself. + return; + } + + var yourAvatar = AvatarList.getAvatar(yourAvatarID); + if (!yourAvatar) { + logMessage(displayName + ' is not here!', null); + return; + } + + // Project avatar positions to the floor and get the direction between those points, + // then face my avatar towards your avatar. + var yourPosition = yourAvatar.position; + yourPosition.y = 0; + var myPosition = MyAvatar.position; + myPosition.y = 0; + var myOrientation = Quat.lookAtSimple(myPosition, yourPosition); + MyAvatar.orientation = myOrientation; + } + + // Make a hopefully unique random anonymous avatar name. + function randomAvatarName() { + return 'Anon_' + Math.floor(Math.random() * 1000000); + } + + // Change the avatar size to bigger. + function biggerSize() { + //print("biggerSize"); + logMessage("Increasing avatar size", null); + MyAvatar.increaseSize(); + } + + // Change the avatar size to smaller. + function smallerSize() { + //print("smallerSize"); + logMessage("Decreasing avatar size", null); + MyAvatar.decreaseSize(); + } + + // Set the avatar size to normal. + function normalSize() { + //print("normalSize"); + logMessage("Resetting avatar size to normal!", null); + MyAvatar.resetSize(); + } + + // Send out a "Who" message, including our avatarID as myAvatarID, + // which will be sent in the response, so we can tell the reply + // is to our request. + function transmitWho() { + //print("transmitWho"); + logMessage("Who is here?", null); + Messages.sendMessage( + channelName, + JSON.stringify({ + type: 'Who', + myAvatarID: MyAvatar.sessionUUID + })); + } + + // Send a reply to a "Who" message, with a friendly message, + // our avatarID and our displayName. myAvatarID is the id + // of the avatar who send the Who message, to whom we're + // responding. + function handleWho(myAvatarID) { + var avatarID = MyAvatar.sessionUUID; + if (myAvatarID == avatarID) { + // Don't reply to myself. + return; + } + + var message = "I'm here!"; + var data = {}; + + Messages.sendMessage( + channelName, + JSON.stringify({ + type: 'ReplyWho', + myAvatarID: myAvatarID, + avatarID: avatarID, + displayName: chatName, + message: message, + data: data + })); + } + + // Receive the reply to a "Who" message. Ignore it unless we were the one + // who sent it out (if myAvatarIS is our avatar's id). + function handleReplyWho(myAvatarID, avatarID, displayName, message, data) { + if (myAvatarID != MyAvatar.sessionUUID) { + return; + } + + handleTransmitChatMessage(avatarID, displayName, message, data); + } + + // Handle input form the user, possibly multiple lines separated by newlines. + // Each line may be a chat command starting with "/", or a chat message. + function handleChatMessage(message, data) { + + var messageLines = message.trim().split('\n'); + + for (var i = 0, n = messageLines.length; i < n; i++) { + var messageLine = messageLines[i]; + + if (messageLine.substr(0, 1) == '/') { + handleChatCommand(messageLine, data); + } else { + transmitChatMessage(messageLine, data); + } + } + + } + + // Handle a chat command prefixed by "/". + function handleChatCommand(message, data) { + + var commandLine = message.substr(1); + var tokens = commandLine.trim().split(' '); + var command = tokens[0]; + var rest = commandLine.substr(command.length + 1).trim(); + + //print("commandLine", commandLine, "command", command, "tokens", tokens, "rest", rest); + + switch (command) { + + case '?': + case 'help': + logMessage('Type "/?" or "/help" for help', null); + logMessage('Type "/name " to set your chat name, or "/name" to use your display name. If your display name is not defined, a random name will be used.', null); + logMessage('Type "/close" to close your overhead chat message.', null); + logMessage('Type "/say " to display a new message.', null); + logMessage('Type "/clear" to clear your chat log.', null); + logMessage('Type "/who" to ask who is in the chat session.', null); + logMessage('Type "/bigger", "/smaller" or "/normal" to change your avatar size.', null); + break; + + case 'name': + if (rest == '') { + if (MyAvatar.displayName) { + chatName = MyAvatar.displayName; + saveSettings(); + logMessage('Your chat name has been set to your display name "' + chatName + '".', null); + } else { + chatName = randomAvatarName(); + saveSettings(); + logMessage('Your avatar\'s display name is not defined, so your chat name has been set to "' + chatName + '".', null); + } + } else { + chatName = rest; + saveSettings(); + logMessage('Your chat name has been set to "' + chatName + '".', null); + } + break; + + case 'close': + popDownSpeechBubble(); + logMessage('Overhead chat message closed.', null); + break; + + case 'say': + if (rest == '') { + emptyChatMessage(data); + } else { + transmitChatMessage(rest, data); + } + break; + + case 'who': + transmitWho(); + break; + + case 'clear': + clearChatLog(); + break; + + case 'bigger': + biggerSize(); + break; + + case 'smaller': + smallerSize(); + break; + + case 'normal': + normalSize(); + break; + + case 'resetsettings': + resetSettings(); + updateSettings(); + break; + + case 'speechbubbleheight': + var y = parseInt(rest); + if (!isNaN(y)) { + speechBubbleOffset.y = y; + } + saveSettings(); + updateSettings(); + break; + + case 'speechbubbleduration': + var duration = parseFloat(rest); + if (!isNaN(duration)) { + speechBubbleDuration = duration; + } + saveSettings(); + updateSettings(); + break; + + default: + logMessage('Unknown chat command. Type "/help" or "/?" for help.', null); + break; + + } + + } + + // Send out a chat message to everyone. + function transmitChatMessage(message, data) { + //print("transmitChatMessage", 'avatarID', avatarID, 'displayName', displayName, 'message', message, 'data', data); + + popUpSpeechBubble(message, data); + + Messages.sendMessage( + channelName, + JSON.stringify({ + type: 'TransmitChatMessage', + avatarID: MyAvatar.sessionUUID, + displayName: chatName, + message: message, + data: data + })); + + } + + // Show the speech bubble. + function popUpSpeechBubble(message, data) { + //print("popUpSpeechBubble", message, data); + + popDownSpeechBubble(); + + speechBubbleShowing = true; + speechBubbleMessage = message; + speechBubbleData = data; + + updateSpeechBubble(); + + if (speechBubbleDuration > 0) { + speechBubbleTimer = Script.setTimeout( + function () { + popDownSpeechBubble(); + }, + speechBubbleDuration * 1000); + } + } + + // Update the speech bubble. + // This is factored out so we can update an existing speech bubble if any settings change. + function updateSpeechBubble() { + if (!speechBubbleShowing) { + return; + } + + var jointIndex = MyAvatar.getJointIndex(speechBubbleJointName); + var dimensions = { + x: 100.0, + y: 100.0, + z: 0.1 + }; + + speechBubbleParams = { + type: "Text", + lifetime: speechBubbleDuration, + parentID: MyAvatar.sessionUUID, + jointIndex: jointIndex, + dimensions: dimensions, + lineHeight: speechBubbleLineHeight, + leftMargin: 0, + topMargin: 0, + rightMargin: 0, + bottomMargin: 0, + faceCamera: true, + drawInFront: true, + ignoreRayIntersection: true, + text: speechBubbleMessage, + textColor: speechBubbleTextColor, + color: speechBubbleTextColor, + backgroundColor: speechBubbleBackgroundColor + }; + + // Only overlay text3d has a way to measure the text, not entities. + // So we make a temporary one just for measuring text, then delete it. + var speechBubbleTextOverlayID = Overlays.addOverlay("text3d", speechBubbleParams); + var textSize = Overlays.textSize(speechBubbleTextOverlayID, speechBubbleMessage); + try { + Overlays.deleteOverlay(speechBubbleTextOverlayID); + } catch (e) {} + + //print("updateSpeechBubble:", "speechBubbleMessage", speechBubbleMessage, "textSize", textSize.width, textSize.height); + + var fudge = 0.02; + + var width = textSize.width + fudge; + var height = speechBubbleLineHeight + fudge; + + if (textSize.width >= SPEECH_BUBBLE_MAX_WIDTH) { + var numLines = Math.ceil(width); + height = speechBubbleLineHeight * numLines + fudge; + width = SPEECH_BUBBLE_MAX_WIDTH; + } + + dimensions = { + x: width, + y: height, + z: 0.1 + }; + speechBubbleParams.dimensions = dimensions; + + var headRotation = + Quat.multiply( + MyAvatar.orientation, + MyAvatar.getAbsoluteJointRotationInObjectFrame(jointIndex)); + var headPosition = + Vec3.sum( + MyAvatar.position, + Vec3.multiplyQbyV( + MyAvatar.orientation, + MyAvatar.getAbsoluteJointTranslationInObjectFrame(jointIndex))); + var rotatedOffset = + Vec3.multiplyQbyV( + headRotation, + speechBubbleOffset); + var position = + Vec3.sum( + headPosition, + rotatedOffset); + position.y += height / 2; // offset based on half of bubble height + speechBubbleParams.position = position; + + if (!speechBubbleTextID) { + speechBubbleTextID = + Entities.addEntity(speechBubbleParams, true); + } else { + Entities.editEntity(speechBubbleTextID, speechBubbleParams); + } + + //print("speechBubbleTextID:", speechBubbleTextID, "speechBubbleParams", JSON.stringify(speechBubbleParams)); + } + + // Hide the speech bubble. + function popDownSpeechBubble() { + cancelSpeechBubbleTimer(); + + speechBubbleShowing = false; + + //print("popDownSpeechBubble speechBubbleTextID", speechBubbleTextID); + + if (speechBubbleTextID) { + try { + Entities.deleteEntity(speechBubbleTextID); + } catch (e) {} + speechBubbleTextID = null; + } + } + + // Cancel the speech bubble popup timer. + function cancelSpeechBubbleTimer() { + if (speechBubbleTimer) { + Script.clearTimeout(speechBubbleTimer); + speechBubbleTimer = null; + } + } + + // Show the tablet web page and connect the web handler. + function showTabletWebPage() { + var url = Script.resolvePath(webPageURL); + if (randomizeWebPageURL) { + url += '?rand=' + Math.random(); + } + lastWebPageURL = url; + onChatPage = true; + tablet.gotoWebScreen(lastWebPageURL); + // Connect immediately so we don't miss anything. + connectWebHandler(); + } + + // Update the tablet web page with the chat log. + function updateChatPage() { + if (!onChatPage) { + return; + } + + tablet.emitScriptEvent( + JSON.stringify({ + type: "Update", + chatLog: chatLog + })); + } + + function onChatMessageReceived(channel, message, senderID) { + + // Ignore messages to any other channel than mine. + if (channel != channelName) { + return; + } + + // Parse the message and pull out the message parameters. + var messageData = JSON.parse(message); + var messageType = messageData.type; + + //print("MESSAGE", message); + //print("MESSAGEDATA", messageData, JSON.stringify(messageData)); + + switch (messageType) { + + case 'TransmitChatMessage': + handleTransmitChatMessage(messageData.avatarID, messageData.displayName, messageData.message, messageData.data); + break; + + case 'AvatarBeginTyping': + handleAvatarBeginTyping(messageData.avatarID, messageData.displayName); + break; + + case 'AvatarEndTyping': + handleAvatarEndTyping(messageData.avatarID, messageData.displayName); + break; + + case 'Who': + handleWho(messageData.myAvatarID); + break; + + case 'ReplyWho': + handleReplyWho(messageData.myAvatarID, messageData.avatarID, messageData.displayName, messageData.message, messageData.data); + break; + + default: + print("onChatMessageReceived: unknown messageType", messageType, "message", message); + break; + + } + + } + + // Handle events from the tablet web page. + function onWebEventReceived(event) { + if (!onChatPage) { + return; + } + + //print("onWebEventReceived: event", event); + + var eventData = JSON.parse(event); + var eventType = eventData.type; + + switch (eventType) { + + case 'Ready': + updateChatPage(); + break; + + case 'Update': + updateChatPage(); + break; + + case 'HandleChatMessage': + var message = eventData.message; + var data = eventData.data; + //print("onWebEventReceived: HandleChatMessage:", 'message', message, 'data', data); + handleChatMessage(message, data); + break; + + case 'PopDownSpeechBubble': + popDownSpeechBubble(); + break; + + case 'EmptyChatMessage': + emptyChatMessage(); + break; + + case 'Type': + type(); + break; + + case 'BeginTyping': + beginTyping(); + break; + + case 'EndTyping': + endTyping(); + break; + + case 'IdentifyAvatar': + identifyAvatar(eventData.avatarID); + break; + + case 'UnidentifyAvatar': + unidentifyAvatar(eventData.avatarID); + break; + + case 'FaceAvatar': + faceAvatar(eventData.avatarID, eventData.displayName); + break; + + case 'ClearChatLog': + clearChatLog(); + break; + + case 'Who': + transmitWho(); + break; + + case 'Bigger': + biggerSize(); + break; + + case 'Smaller': + smallerSize(); + break; + + case 'Normal': + normalSize(); + break; + + default: + print("onWebEventReceived: unexpected eventType", eventType); + break; + + } + } + + function onScreenChanged(type, url) { + //print("onScreenChanged", "type", type, "url", url, "lastWebPageURL", lastWebPageURL); + + if ((type === "Web") && + (url === lastWebPageURL)) { + if (!onChatPage) { + onChatPage = true; + connectWebHandler(); + } + } else { + if (onChatPage) { + onChatPage = false; + disconnectWebHandler(); + } + } + + } + + function connectWebHandler() { + if (webHandlerConnected) { + return; + } + + try { + tablet.webEventReceived.connect(onWebEventReceived); + } catch (e) { + print("connectWebHandler: error connecting: " + e); + return; + } + + webHandlerConnected = true; + //print("connectWebHandler connected"); + + updateChatPage(); + } + + function disconnectWebHandler() { + if (!webHandlerConnected) { + return; + } + + try { + tablet.webEventReceived.disconnect(onWebEventReceived); + } catch (e) { + print("disconnectWebHandler: error disconnecting web handler: " + e); + return; + } + webHandlerConnected = false; + + //print("disconnectWebHandler: disconnected"); + } + + // Show the tablet web page when the chat button on the tablet is clicked. + function onTabletButtonClicked() { + showTabletWebPage(); + } + + // Shut down the chat application when the tablet button is destroyed. + function onTabletButtonDestroyed() { + shutDown(); + } + + // Start up the chat application. + function startUp() { + //print("startUp"); + + loadSettings(); + + tabletButton = tablet.addButton({ + icon: tabletButtonIcon, + activeIcon: tabletButtonActiveIcon, + text: tabletButtonName + }); + + Messages.subscribe(channelName); + + tablet.screenChanged.connect(onScreenChanged); + + Messages.messageReceived.connect(onChatMessageReceived); + + tabletButton.clicked.connect(onTabletButtonClicked); + + Script.scriptEnding.connect(onTabletButtonDestroyed); + + logMessage('Type "/?" or "/help" for help with chat.', null); + + //print("Added chat button to tablet."); + } + + // Shut down the chat application. + function shutDown() { + //print("shutDown"); + + popDownSpeechBubble(); + unidentifyAvatars(); + disconnectWebHandler(); + + if (onChatPage) { + tablet.gotoHomeScreen(); + onChatPage = false; + } + + tablet.screenChanged.disconnect(onScreenChanged); + + Messages.messageReceived.disconnect(onChatMessageReceived); + + // Clean up the tablet button we made. + tabletButton.clicked.disconnect(onTabletButtonClicked); + tablet.removeButton(tabletButton); + tabletButton = null; + + //print("Removed chat button from tablet."); + } + + // Kick off the chat application! + startUp(); + +}()); diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 7f78d2477f..491ac117b6 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -34,11 +34,11 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/emote.js", "system/miniTablet.js", "system/audioMuteOverlay.js", - "system/keyboardShortcuts/keyboardShortcuts.js" + "system/keyboardShortcuts/keyboardShortcuts.js", + "community/chat.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js" - //"system/chat.js" ]; if (Window.interstitialModeEnabled) { From c08e1a227c4df83f3f6238d1782e708b1c348e16 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Thu, 12 Dec 2019 11:10:01 -0600 Subject: [PATCH 089/396] Revert "Adds community script directory, adds chat as default app." --- scripts/community/chat.js | 995 -------------------------------------- scripts/defaultScripts.js | 4 +- 2 files changed, 2 insertions(+), 997 deletions(-) delete mode 100644 scripts/community/chat.js diff --git a/scripts/community/chat.js b/scripts/community/chat.js deleted file mode 100644 index a2301611c4..0000000000 --- a/scripts/community/chat.js +++ /dev/null @@ -1,995 +0,0 @@ -"use strict"; - -// Chat.js -// By Don Hopkins (dhopkins@donhopkins.com) -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -(function() { - - var webPageURL = Script.resolvePath("html/ChatPage.html"); // URL of tablet web page. - var randomizeWebPageURL = true; // Set to true for debugging. - var lastWebPageURL = ""; // Last random URL of tablet web page. - var onChatPage = false; // True when chat web page is opened. - var webHandlerConnected = false; // True when the web handler has been connected. - var channelName = "Chat"; // Unique name for channel that we listen to. - var tabletButtonName = "CHAT"; // Tablet button label. - var tabletButtonIcon = "icons/tablet-icons/menu-i.svg"; // Icon for chat button. - var tabletButtonActiveIcon = "icons/tablet-icons/menu-a.svg"; // Active icon for chat button. - var tabletButton = null; // The button we create in the tablet. - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); // The awesome tablet. - var chatLog = []; // Array of chat messages in the form of [avatarID, displayName, message, data]. - var avatarIdentifiers = {}; // Map of avatar ids to dict of identifierParams. - var speechBubbleShowing = false; // Is the speech bubble visible? - var speechBubbleMessage = null; // The message shown in the speech bubble. - var speechBubbleData = null; // The data of the speech bubble message. - var speechBubbleTextID = null; // The id of the speech bubble local text entity. - var speechBubbleTimer = null; // The timer to pop down the speech bubble. - var speechBubbleParams = null; // The params used to create or edit the speech bubble. - - // Persistent variables saved in the Settings. - var chatName = ''; // The user's name shown in chat. - var chatLogMaxSize = 100; // The maximum number of chat messages we remember. - var sendTyping = true; // Send typing begin and end notification. - var identifyAvatarDuration = 10; // How long to leave the avatar identity line up, in seconds. - var identifyAvatarLineColor = { red: 0, green: 255, blue: 0 }; // The color of the avatar identity line. - var identifyAvatarMyJointName = 'Head'; // My bone from which to draw the avatar identity line. - var identifyAvatarYourJointName = 'Head'; // Your bone to which to draw the avatar identity line. - var speechBubbleDuration = 10; // How long to leave the speech bubble up, in seconds. - var speechBubbleTextColor = {red: 255, green: 255, blue: 255}; // The text color of the speech bubble. - var speechBubbleBackgroundColor = {red: 0, green: 0, blue: 0}; // The background color of the speech bubble. - var speechBubbleOffset = {x: 0, y: 0.3, z: 0.0}; // The offset from the joint to whic the speech bubble is attached. - var speechBubbleJointName = 'Head'; // The name of the joint to which the speech bubble is attached. - var speechBubbleLineHeight = 0.05; // The height of a line of text in the speech bubble. - var SPEECH_BUBBLE_MAX_WIDTH = 1; // meters - - // Load the persistent variables from the Settings, with defaults. - function loadSettings() { - chatName = Settings.getValue('Chat_chatName', MyAvatar.displayName); - if (!chatName) { - chatName = randomAvatarName(); - } - chatLogMaxSize = Settings.getValue('Chat_chatLogMaxSize', 100); - sendTyping = Settings.getValue('Chat_sendTyping', true); - identifyAvatarDuration = Settings.getValue('Chat_identifyAvatarDuration', 10); - identifyAvatarLineColor = Settings.getValue('Chat_identifyAvatarLineColor', { red: 0, green: 255, blue: 0 }); - identifyAvatarMyJointName = Settings.getValue('Chat_identifyAvatarMyJointName', 'Head'); - identifyAvatarYourJointName = Settings.getValue('Chat_identifyAvatarYourJointName', 'Head'); - speechBubbleDuration = Settings.getValue('Chat_speechBubbleDuration', 10); - speechBubbleTextColor = Settings.getValue('Chat_speechBubbleTextColor', {red: 255, green: 255, blue: 255}); - speechBubbleBackgroundColor = Settings.getValue('Chat_speechBubbleBackgroundColor', {red: 0, green: 0, blue: 0}); - speechBubbleOffset = Settings.getValue('Chat_speechBubbleOffset', {x: 0.0, y: 0.3, z:0.0}); - speechBubbleJointName = Settings.getValue('Chat_speechBubbleJointName', 'Head'); - speechBubbleLineHeight = Settings.getValue('Chat_speechBubbleLineHeight', 0.05); - - saveSettings(); - } - - // Save the persistent variables to the Settings. - function saveSettings() { - Settings.setValue('Chat_chatName', chatName); - Settings.setValue('Chat_chatLogMaxSize', chatLogMaxSize); - Settings.setValue('Chat_sendTyping', sendTyping); - Settings.setValue('Chat_identifyAvatarDuration', identifyAvatarDuration); - Settings.setValue('Chat_identifyAvatarLineColor', identifyAvatarLineColor); - Settings.setValue('Chat_identifyAvatarMyJointName', identifyAvatarMyJointName); - Settings.setValue('Chat_identifyAvatarYourJointName', identifyAvatarYourJointName); - Settings.setValue('Chat_speechBubbleDuration', speechBubbleDuration); - Settings.setValue('Chat_speechBubbleTextColor', speechBubbleTextColor); - Settings.setValue('Chat_speechBubbleBackgroundColor', speechBubbleBackgroundColor); - Settings.setValue('Chat_speechBubbleOffset', speechBubbleOffset); - Settings.setValue('Chat_speechBubbleJointName', speechBubbleJointName); - Settings.setValue('Chat_speechBubbleLineHeight', speechBubbleLineHeight); - } - - // Reset the Settings and persistent variables to the defaults. - function resetSettings() { - Settings.setValue('Chat_chatName', null); - Settings.setValue('Chat_chatLogMaxSize', null); - Settings.setValue('Chat_sendTyping', null); - Settings.setValue('Chat_identifyAvatarDuration', null); - Settings.setValue('Chat_identifyAvatarLineColor', null); - Settings.setValue('Chat_identifyAvatarMyJointName', null); - Settings.setValue('Chat_identifyAvatarYourJointName', null); - Settings.setValue('Chat_speechBubbleDuration', null); - Settings.setValue('Chat_speechBubbleTextColor', null); - Settings.setValue('Chat_speechBubbleBackgroundColor', null); - Settings.setValue('Chat_speechBubbleOffset', null); - Settings.setValue('Chat_speechBubbleJointName', null); - Settings.setValue('Chat_speechBubbleLineHeight', null); - - loadSettings(); - } - - // Update anything that might depend on the settings. - function updateSettings() { - updateSpeechBubble(); - trimChatLog(); - updateChatPage(); - } - - // Trim the chat log so it is no longer than chatLogMaxSize lines. - function trimChatLog() { - if (chatLog.length > chatLogMaxSize) { - chatLog.splice(0, chatLogMaxSize - chatLog.length); - } - } - - // Clear the local chat log. - function clearChatLog() { - //print("clearChatLog"); - chatLog = []; - updateChatPage(); - } - - // We got a chat message from the channel. - // Trim the chat log, save the latest message in the chat log, - // and show the message on the tablet, if the chat page is showing. - function handleTransmitChatMessage(avatarID, displayName, message, data) { - //print("receiveChat", "avatarID", avatarID, "displayName", displayName, "message", message, "data", data); - - trimChatLog(); - chatLog.push([avatarID, displayName, message, data]); - - if (onChatPage) { - tablet.emitScriptEvent( - JSON.stringify({ - type: "ReceiveChatMessage", - avatarID: avatarID, - displayName: displayName, - message: message, - data: data - })); - } - } - - // Trim the chat log, save the latest log message in the chat log, - // and show the message on the tablet, if the chat page is showing. - function logMessage(message, data) { - //print("logMessage", message, data); - - trimChatLog(); - chatLog.push([null, null, message, data]); - - if (onChatPage) { - tablet.emitScriptEvent( - JSON.stringify({ - type: "LogMessage", - message: message, - data: data - })); - } - } - - // An empty chat message was entered. - // Hide our speech bubble. - function emptyChatMessage(data) { - popDownSpeechBubble(); - } - - // Notification that we typed a keystroke. - function type() { - //print("type"); - } - - // Notification that we began typing. - // Notify everyone that we started typing. - function beginTyping() { - //print("beginTyping"); - if (!sendTyping) { - return; - } - - Messages.sendMessage( - channelName, - JSON.stringify({ - type: 'AvatarBeginTyping', - avatarID: MyAvatar.sessionUUID, - displayName: chatName - - })); - } - - // Notification that somebody started typing. - function handleAvatarBeginTyping(avatarID, displayName) { - //print("handleAvatarBeginTyping:", "avatarID", avatarID, displayName); - } - - // Notification that we stopped typing. - // Notify everyone that we stopped typing. - function endTyping() { - //print("endTyping"); - if (!sendTyping) { - return; - } - - Messages.sendMessage( - channelName, - JSON.stringify({ - type: 'AvatarEndTyping', - avatarID: MyAvatar.sessionUUID, - displayName: chatName - })); - } - - // Notification that somebody stopped typing. - function handleAvatarEndTyping(avatarID, displayName) { - //print("handleAvatarEndTyping:", "avatarID", avatarID, displayName); - } - - // Identify an avatar by drawing a line from our head to their head. - // If the avatar is our own, then just draw a line up into the sky. - function identifyAvatar(yourAvatarID) { - //print("identifyAvatar", yourAvatarID); - - unidentifyAvatars(); - - var myAvatarID = MyAvatar.sessionUUID; - var myJointIndex = MyAvatar.getJointIndex(identifyAvatarMyJointName); - var myJointRotation = - Quat.multiply( - MyAvatar.orientation, - MyAvatar.getAbsoluteJointRotationInObjectFrame(myJointIndex)); - var myJointPosition = - Vec3.sum( - MyAvatar.position, - Vec3.multiplyQbyV( - MyAvatar.orientation, - MyAvatar.getAbsoluteJointTranslationInObjectFrame(myJointIndex))); - - var yourJointIndex = -1; - var yourJointPosition; - - if (yourAvatarID == myAvatarID) { - - // You pointed at your own name, so draw a line up from your head. - - yourJointPosition = { - x: myJointPosition.x, - y: myJointPosition.y + 1000.0, - z: myJointPosition.z - }; - - } else { - - // You pointed at somebody else's name, so draw a line from your head to their head. - - var yourAvatar = AvatarList.getAvatar(yourAvatarID); - if (!yourAvatar) { - return; - } - - yourJointIndex = yourAvatar.getJointIndex(identifyAvatarMyJointName) - - var yourJointRotation = - Quat.multiply( - yourAvatar.orientation, - yourAvatar.getAbsoluteJointRotationInObjectFrame(yourJointIndex)); - yourJointPosition = - Vec3.sum( - yourAvatar.position, - Vec3.multiplyQbyV( - yourAvatar.orientation, - yourAvatar.getAbsoluteJointTranslationInObjectFrame(yourJointIndex))); - - } - - var identifierParams = { - parentID: myAvatarID, - parentJointIndex: myJointIndex, - lifetime: identifyAvatarDuration, - start: myJointPosition, - endParentID: yourAvatarID, - endParentJointIndex: yourJointIndex, - end: yourJointPosition, - color: identifyAvatarLineColor, - alpha: 1 - }; - - avatarIdentifiers[yourAvatarID] = identifierParams; - - identifierParams.lineID = Overlays.addOverlay("line3d", identifierParams); - - //print("ADDOVERLAY lineID", lineID, "myJointPosition", JSON.stringify(myJointPosition), "yourJointPosition", JSON.stringify(yourJointPosition), "lineData", JSON.stringify(lineData)); - - identifierParams.timer = - Script.setTimeout(function() { - //print("DELETEOVERLAY lineID"); - unidentifyAvatar(yourAvatarID); - }, identifyAvatarDuration * 1000); - - } - - // Stop identifying an avatar. - function unidentifyAvatar(yourAvatarID) { - //print("unidentifyAvatar", yourAvatarID); - - var identifierParams = avatarIdentifiers[yourAvatarID]; - if (!identifierParams) { - return; - } - - if (identifierParams.timer) { - Script.clearTimeout(identifierParams.timer); - } - - if (identifierParams.lineID) { - Overlays.deleteOverlay(identifierParams.lineID); - } - - delete avatarIdentifiers[yourAvatarID]; - } - - // Stop identifying all avatars. - function unidentifyAvatars() { - var ids = []; - - for (var avatarID in avatarIdentifiers) { - ids.push(avatarID); - } - - for (var i = 0, n = ids.length; i < n; i++) { - var avatarID = ids[i]; - unidentifyAvatar(avatarID); - } - - } - - // Turn to face another avatar. - function faceAvatar(yourAvatarID, displayName) { - //print("faceAvatar:", yourAvatarID, displayName); - - var myAvatarID = MyAvatar.sessionUUID; - if (yourAvatarID == myAvatarID) { - // You clicked on yourself. - return; - } - - var yourAvatar = AvatarList.getAvatar(yourAvatarID); - if (!yourAvatar) { - logMessage(displayName + ' is not here!', null); - return; - } - - // Project avatar positions to the floor and get the direction between those points, - // then face my avatar towards your avatar. - var yourPosition = yourAvatar.position; - yourPosition.y = 0; - var myPosition = MyAvatar.position; - myPosition.y = 0; - var myOrientation = Quat.lookAtSimple(myPosition, yourPosition); - MyAvatar.orientation = myOrientation; - } - - // Make a hopefully unique random anonymous avatar name. - function randomAvatarName() { - return 'Anon_' + Math.floor(Math.random() * 1000000); - } - - // Change the avatar size to bigger. - function biggerSize() { - //print("biggerSize"); - logMessage("Increasing avatar size", null); - MyAvatar.increaseSize(); - } - - // Change the avatar size to smaller. - function smallerSize() { - //print("smallerSize"); - logMessage("Decreasing avatar size", null); - MyAvatar.decreaseSize(); - } - - // Set the avatar size to normal. - function normalSize() { - //print("normalSize"); - logMessage("Resetting avatar size to normal!", null); - MyAvatar.resetSize(); - } - - // Send out a "Who" message, including our avatarID as myAvatarID, - // which will be sent in the response, so we can tell the reply - // is to our request. - function transmitWho() { - //print("transmitWho"); - logMessage("Who is here?", null); - Messages.sendMessage( - channelName, - JSON.stringify({ - type: 'Who', - myAvatarID: MyAvatar.sessionUUID - })); - } - - // Send a reply to a "Who" message, with a friendly message, - // our avatarID and our displayName. myAvatarID is the id - // of the avatar who send the Who message, to whom we're - // responding. - function handleWho(myAvatarID) { - var avatarID = MyAvatar.sessionUUID; - if (myAvatarID == avatarID) { - // Don't reply to myself. - return; - } - - var message = "I'm here!"; - var data = {}; - - Messages.sendMessage( - channelName, - JSON.stringify({ - type: 'ReplyWho', - myAvatarID: myAvatarID, - avatarID: avatarID, - displayName: chatName, - message: message, - data: data - })); - } - - // Receive the reply to a "Who" message. Ignore it unless we were the one - // who sent it out (if myAvatarIS is our avatar's id). - function handleReplyWho(myAvatarID, avatarID, displayName, message, data) { - if (myAvatarID != MyAvatar.sessionUUID) { - return; - } - - handleTransmitChatMessage(avatarID, displayName, message, data); - } - - // Handle input form the user, possibly multiple lines separated by newlines. - // Each line may be a chat command starting with "/", or a chat message. - function handleChatMessage(message, data) { - - var messageLines = message.trim().split('\n'); - - for (var i = 0, n = messageLines.length; i < n; i++) { - var messageLine = messageLines[i]; - - if (messageLine.substr(0, 1) == '/') { - handleChatCommand(messageLine, data); - } else { - transmitChatMessage(messageLine, data); - } - } - - } - - // Handle a chat command prefixed by "/". - function handleChatCommand(message, data) { - - var commandLine = message.substr(1); - var tokens = commandLine.trim().split(' '); - var command = tokens[0]; - var rest = commandLine.substr(command.length + 1).trim(); - - //print("commandLine", commandLine, "command", command, "tokens", tokens, "rest", rest); - - switch (command) { - - case '?': - case 'help': - logMessage('Type "/?" or "/help" for help', null); - logMessage('Type "/name " to set your chat name, or "/name" to use your display name. If your display name is not defined, a random name will be used.', null); - logMessage('Type "/close" to close your overhead chat message.', null); - logMessage('Type "/say " to display a new message.', null); - logMessage('Type "/clear" to clear your chat log.', null); - logMessage('Type "/who" to ask who is in the chat session.', null); - logMessage('Type "/bigger", "/smaller" or "/normal" to change your avatar size.', null); - break; - - case 'name': - if (rest == '') { - if (MyAvatar.displayName) { - chatName = MyAvatar.displayName; - saveSettings(); - logMessage('Your chat name has been set to your display name "' + chatName + '".', null); - } else { - chatName = randomAvatarName(); - saveSettings(); - logMessage('Your avatar\'s display name is not defined, so your chat name has been set to "' + chatName + '".', null); - } - } else { - chatName = rest; - saveSettings(); - logMessage('Your chat name has been set to "' + chatName + '".', null); - } - break; - - case 'close': - popDownSpeechBubble(); - logMessage('Overhead chat message closed.', null); - break; - - case 'say': - if (rest == '') { - emptyChatMessage(data); - } else { - transmitChatMessage(rest, data); - } - break; - - case 'who': - transmitWho(); - break; - - case 'clear': - clearChatLog(); - break; - - case 'bigger': - biggerSize(); - break; - - case 'smaller': - smallerSize(); - break; - - case 'normal': - normalSize(); - break; - - case 'resetsettings': - resetSettings(); - updateSettings(); - break; - - case 'speechbubbleheight': - var y = parseInt(rest); - if (!isNaN(y)) { - speechBubbleOffset.y = y; - } - saveSettings(); - updateSettings(); - break; - - case 'speechbubbleduration': - var duration = parseFloat(rest); - if (!isNaN(duration)) { - speechBubbleDuration = duration; - } - saveSettings(); - updateSettings(); - break; - - default: - logMessage('Unknown chat command. Type "/help" or "/?" for help.', null); - break; - - } - - } - - // Send out a chat message to everyone. - function transmitChatMessage(message, data) { - //print("transmitChatMessage", 'avatarID', avatarID, 'displayName', displayName, 'message', message, 'data', data); - - popUpSpeechBubble(message, data); - - Messages.sendMessage( - channelName, - JSON.stringify({ - type: 'TransmitChatMessage', - avatarID: MyAvatar.sessionUUID, - displayName: chatName, - message: message, - data: data - })); - - } - - // Show the speech bubble. - function popUpSpeechBubble(message, data) { - //print("popUpSpeechBubble", message, data); - - popDownSpeechBubble(); - - speechBubbleShowing = true; - speechBubbleMessage = message; - speechBubbleData = data; - - updateSpeechBubble(); - - if (speechBubbleDuration > 0) { - speechBubbleTimer = Script.setTimeout( - function () { - popDownSpeechBubble(); - }, - speechBubbleDuration * 1000); - } - } - - // Update the speech bubble. - // This is factored out so we can update an existing speech bubble if any settings change. - function updateSpeechBubble() { - if (!speechBubbleShowing) { - return; - } - - var jointIndex = MyAvatar.getJointIndex(speechBubbleJointName); - var dimensions = { - x: 100.0, - y: 100.0, - z: 0.1 - }; - - speechBubbleParams = { - type: "Text", - lifetime: speechBubbleDuration, - parentID: MyAvatar.sessionUUID, - jointIndex: jointIndex, - dimensions: dimensions, - lineHeight: speechBubbleLineHeight, - leftMargin: 0, - topMargin: 0, - rightMargin: 0, - bottomMargin: 0, - faceCamera: true, - drawInFront: true, - ignoreRayIntersection: true, - text: speechBubbleMessage, - textColor: speechBubbleTextColor, - color: speechBubbleTextColor, - backgroundColor: speechBubbleBackgroundColor - }; - - // Only overlay text3d has a way to measure the text, not entities. - // So we make a temporary one just for measuring text, then delete it. - var speechBubbleTextOverlayID = Overlays.addOverlay("text3d", speechBubbleParams); - var textSize = Overlays.textSize(speechBubbleTextOverlayID, speechBubbleMessage); - try { - Overlays.deleteOverlay(speechBubbleTextOverlayID); - } catch (e) {} - - //print("updateSpeechBubble:", "speechBubbleMessage", speechBubbleMessage, "textSize", textSize.width, textSize.height); - - var fudge = 0.02; - - var width = textSize.width + fudge; - var height = speechBubbleLineHeight + fudge; - - if (textSize.width >= SPEECH_BUBBLE_MAX_WIDTH) { - var numLines = Math.ceil(width); - height = speechBubbleLineHeight * numLines + fudge; - width = SPEECH_BUBBLE_MAX_WIDTH; - } - - dimensions = { - x: width, - y: height, - z: 0.1 - }; - speechBubbleParams.dimensions = dimensions; - - var headRotation = - Quat.multiply( - MyAvatar.orientation, - MyAvatar.getAbsoluteJointRotationInObjectFrame(jointIndex)); - var headPosition = - Vec3.sum( - MyAvatar.position, - Vec3.multiplyQbyV( - MyAvatar.orientation, - MyAvatar.getAbsoluteJointTranslationInObjectFrame(jointIndex))); - var rotatedOffset = - Vec3.multiplyQbyV( - headRotation, - speechBubbleOffset); - var position = - Vec3.sum( - headPosition, - rotatedOffset); - position.y += height / 2; // offset based on half of bubble height - speechBubbleParams.position = position; - - if (!speechBubbleTextID) { - speechBubbleTextID = - Entities.addEntity(speechBubbleParams, true); - } else { - Entities.editEntity(speechBubbleTextID, speechBubbleParams); - } - - //print("speechBubbleTextID:", speechBubbleTextID, "speechBubbleParams", JSON.stringify(speechBubbleParams)); - } - - // Hide the speech bubble. - function popDownSpeechBubble() { - cancelSpeechBubbleTimer(); - - speechBubbleShowing = false; - - //print("popDownSpeechBubble speechBubbleTextID", speechBubbleTextID); - - if (speechBubbleTextID) { - try { - Entities.deleteEntity(speechBubbleTextID); - } catch (e) {} - speechBubbleTextID = null; - } - } - - // Cancel the speech bubble popup timer. - function cancelSpeechBubbleTimer() { - if (speechBubbleTimer) { - Script.clearTimeout(speechBubbleTimer); - speechBubbleTimer = null; - } - } - - // Show the tablet web page and connect the web handler. - function showTabletWebPage() { - var url = Script.resolvePath(webPageURL); - if (randomizeWebPageURL) { - url += '?rand=' + Math.random(); - } - lastWebPageURL = url; - onChatPage = true; - tablet.gotoWebScreen(lastWebPageURL); - // Connect immediately so we don't miss anything. - connectWebHandler(); - } - - // Update the tablet web page with the chat log. - function updateChatPage() { - if (!onChatPage) { - return; - } - - tablet.emitScriptEvent( - JSON.stringify({ - type: "Update", - chatLog: chatLog - })); - } - - function onChatMessageReceived(channel, message, senderID) { - - // Ignore messages to any other channel than mine. - if (channel != channelName) { - return; - } - - // Parse the message and pull out the message parameters. - var messageData = JSON.parse(message); - var messageType = messageData.type; - - //print("MESSAGE", message); - //print("MESSAGEDATA", messageData, JSON.stringify(messageData)); - - switch (messageType) { - - case 'TransmitChatMessage': - handleTransmitChatMessage(messageData.avatarID, messageData.displayName, messageData.message, messageData.data); - break; - - case 'AvatarBeginTyping': - handleAvatarBeginTyping(messageData.avatarID, messageData.displayName); - break; - - case 'AvatarEndTyping': - handleAvatarEndTyping(messageData.avatarID, messageData.displayName); - break; - - case 'Who': - handleWho(messageData.myAvatarID); - break; - - case 'ReplyWho': - handleReplyWho(messageData.myAvatarID, messageData.avatarID, messageData.displayName, messageData.message, messageData.data); - break; - - default: - print("onChatMessageReceived: unknown messageType", messageType, "message", message); - break; - - } - - } - - // Handle events from the tablet web page. - function onWebEventReceived(event) { - if (!onChatPage) { - return; - } - - //print("onWebEventReceived: event", event); - - var eventData = JSON.parse(event); - var eventType = eventData.type; - - switch (eventType) { - - case 'Ready': - updateChatPage(); - break; - - case 'Update': - updateChatPage(); - break; - - case 'HandleChatMessage': - var message = eventData.message; - var data = eventData.data; - //print("onWebEventReceived: HandleChatMessage:", 'message', message, 'data', data); - handleChatMessage(message, data); - break; - - case 'PopDownSpeechBubble': - popDownSpeechBubble(); - break; - - case 'EmptyChatMessage': - emptyChatMessage(); - break; - - case 'Type': - type(); - break; - - case 'BeginTyping': - beginTyping(); - break; - - case 'EndTyping': - endTyping(); - break; - - case 'IdentifyAvatar': - identifyAvatar(eventData.avatarID); - break; - - case 'UnidentifyAvatar': - unidentifyAvatar(eventData.avatarID); - break; - - case 'FaceAvatar': - faceAvatar(eventData.avatarID, eventData.displayName); - break; - - case 'ClearChatLog': - clearChatLog(); - break; - - case 'Who': - transmitWho(); - break; - - case 'Bigger': - biggerSize(); - break; - - case 'Smaller': - smallerSize(); - break; - - case 'Normal': - normalSize(); - break; - - default: - print("onWebEventReceived: unexpected eventType", eventType); - break; - - } - } - - function onScreenChanged(type, url) { - //print("onScreenChanged", "type", type, "url", url, "lastWebPageURL", lastWebPageURL); - - if ((type === "Web") && - (url === lastWebPageURL)) { - if (!onChatPage) { - onChatPage = true; - connectWebHandler(); - } - } else { - if (onChatPage) { - onChatPage = false; - disconnectWebHandler(); - } - } - - } - - function connectWebHandler() { - if (webHandlerConnected) { - return; - } - - try { - tablet.webEventReceived.connect(onWebEventReceived); - } catch (e) { - print("connectWebHandler: error connecting: " + e); - return; - } - - webHandlerConnected = true; - //print("connectWebHandler connected"); - - updateChatPage(); - } - - function disconnectWebHandler() { - if (!webHandlerConnected) { - return; - } - - try { - tablet.webEventReceived.disconnect(onWebEventReceived); - } catch (e) { - print("disconnectWebHandler: error disconnecting web handler: " + e); - return; - } - webHandlerConnected = false; - - //print("disconnectWebHandler: disconnected"); - } - - // Show the tablet web page when the chat button on the tablet is clicked. - function onTabletButtonClicked() { - showTabletWebPage(); - } - - // Shut down the chat application when the tablet button is destroyed. - function onTabletButtonDestroyed() { - shutDown(); - } - - // Start up the chat application. - function startUp() { - //print("startUp"); - - loadSettings(); - - tabletButton = tablet.addButton({ - icon: tabletButtonIcon, - activeIcon: tabletButtonActiveIcon, - text: tabletButtonName - }); - - Messages.subscribe(channelName); - - tablet.screenChanged.connect(onScreenChanged); - - Messages.messageReceived.connect(onChatMessageReceived); - - tabletButton.clicked.connect(onTabletButtonClicked); - - Script.scriptEnding.connect(onTabletButtonDestroyed); - - logMessage('Type "/?" or "/help" for help with chat.', null); - - //print("Added chat button to tablet."); - } - - // Shut down the chat application. - function shutDown() { - //print("shutDown"); - - popDownSpeechBubble(); - unidentifyAvatars(); - disconnectWebHandler(); - - if (onChatPage) { - tablet.gotoHomeScreen(); - onChatPage = false; - } - - tablet.screenChanged.disconnect(onScreenChanged); - - Messages.messageReceived.disconnect(onChatMessageReceived); - - // Clean up the tablet button we made. - tabletButton.clicked.disconnect(onTabletButtonClicked); - tablet.removeButton(tabletButton); - tabletButton = null; - - //print("Removed chat button from tablet."); - } - - // Kick off the chat application! - startUp(); - -}()); diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 491ac117b6..7f78d2477f 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -34,11 +34,11 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/emote.js", "system/miniTablet.js", "system/audioMuteOverlay.js", - "system/keyboardShortcuts/keyboardShortcuts.js", - "community/chat.js" + "system/keyboardShortcuts/keyboardShortcuts.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js" + //"system/chat.js" ]; if (Window.interstitialModeEnabled) { From 6e961b9f2fad7a7129f8a4b36e6c4f49d54d3e7a Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Fri, 15 Nov 2019 00:18:24 -0800 Subject: [PATCH 090/396] procedural vertex shaders Signed-off-by: Kasen IO --- interface/src/Application.cpp | 17 +++ .../src/RenderableMaterialEntityItem.cpp | 15 ++- .../src/RenderableMaterialEntityItem.h | 2 +- .../src/RenderableShapeEntityItem.cpp | 12 ++ .../src/RenderableShapeEntityItem.h | 1 + libraries/entities/src/EntityTree.cpp | 8 ++ libraries/entities/src/EntityTree.h | 4 + libraries/entities/src/MaterialEntityItem.cpp | 26 +++- libraries/entities/src/MaterialEntityItem.h | 6 + .../procedural/src/procedural/Procedural.cpp | 111 ++++++++++++++---- .../procedural/src/procedural/Procedural.h | 22 +++- .../src/procedural/ProceduralCommon.slh | 11 ++ .../render-utils/src/MeshPartPayload.cpp | 10 ++ .../render-utils/src/simple_procedural.slv | 44 ++++++- 14 files changed, 253 insertions(+), 36 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9c60139d06..492495808e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2107,6 +2107,23 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return false; }); + EntityTree::setGetUnscaledDimensionsForEntityIDOperator([this](const QUuid& id) { + if (_aboutToQuit) { + return glm::vec3(1.0f); + } + + auto entity = getEntities()->getEntity(id); + if (entity) { + return entity->getUnscaledDimensions(); + } + + auto avatarManager = DependencyManager::get(); + auto avatar = static_pointer_cast(avatarManager->getAvatarBySessionID(id)); + if (avatar) { + return avatar->getSNScale(); + } + return glm::vec3(1.0f); + }); Procedural::opaqueStencil = [](gpu::StatePointer state) { PrepareStencil::testMaskDrawShape(*state); }; Procedural::transparentStencil = [](gpu::StatePointer state) { PrepareStencil::testMask(*state); }; diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index a013ff75b7..af121f2957 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -153,13 +153,13 @@ void MaterialEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo if (urlChanged && !usingMaterialData) { _networkMaterial = DependencyManager::get()->getMaterial(_materialURL); - auto onMaterialRequestFinished = [this, oldParentID, oldParentMaterialName, newCurrentMaterialName](bool success) { + auto onMaterialRequestFinished = [this, entity, oldParentID, oldParentMaterialName, newCurrentMaterialName](bool success) { if (success) { deleteMaterial(oldParentID, oldParentMaterialName); _texturesLoaded = false; _parsedMaterials = _networkMaterial->parsedMaterials; setCurrentMaterialName(newCurrentMaterialName); - applyMaterial(); + applyMaterial(entity); } else { deleteMaterial(oldParentID, oldParentMaterialName); _retryApply = false; @@ -183,13 +183,13 @@ void MaterialEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo _parsedMaterials = NetworkMaterialResource::parseJSONMaterials(QJsonDocument::fromJson(_materialData.toUtf8()), _materialURL); // Since our material changed, the current name might not be valid anymore, so we need to update setCurrentMaterialName(newCurrentMaterialName); - applyMaterial(); + applyMaterial(entity); } else { if (deleteNeeded) { deleteMaterial(oldParentID, oldParentMaterialName); } if (addNeeded) { - applyMaterial(); + applyMaterial(entity); } } @@ -382,7 +382,7 @@ void MaterialEntityRenderer::applyTextureTransform(std::shared_ptrsetTextureTransforms(textureTransform, _materialMappingMode, _materialRepeat); } -void MaterialEntityRenderer::applyMaterial() { +void MaterialEntityRenderer::applyMaterial(const TypedEntityPointer& entity) { _retryApply = false; std::shared_ptr material = getMaterial(); @@ -396,6 +396,11 @@ void MaterialEntityRenderer::applyMaterial() { graphics::MaterialLayer materialLayer = graphics::MaterialLayer(material, _priority); + if (auto procedural = std::static_pointer_cast(material)) { + procedural->setBoundOperator([this] { return getBound(); }); + entity->setHasVertexShader(procedural->hasVertexShader()); + } + // Our parent could be an entity or an avatar std::string parentMaterialName = _parentMaterialName.toStdString(); if (EntityTreeRenderer::addMaterialToEntity(parentID, materialLayer, parentMaterialName)) { diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.h b/libraries/entities-renderer/src/RenderableMaterialEntityItem.h index ff7367a44e..3a73c988eb 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.h +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.h @@ -56,7 +56,7 @@ private: void setCurrentMaterialName(const std::string& currentMaterialName); void applyTextureTransform(std::shared_ptr& material); - void applyMaterial(); + void applyMaterial(const TypedEntityPointer& entity); void deleteMaterial(const QUuid& oldParentID, const QString& oldParentMaterialName); NetworkMaterialResourcePointer _networkMaterial; diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 88cc78b6b6..497294e45a 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -207,6 +207,18 @@ ShapeKey ShapeEntityRenderer::getShapeKey() { return builder.build(); } +Item::Bound ShapeEntityRenderer::getBound() { + auto mat = _materials.find("0"); + if (mat != _materials.end() && mat->second.top().material && mat->second.top().material->isProcedural() && + mat->second.top().material->isReady()) { + auto procedural = std::static_pointer_cast(mat->second.top().material); + if (procedural->hasVertexShader() && procedural->hasBoundOperator()) { + return procedural->getBound(); + } + } + return Parent::getBound(); +} + void ShapeEntityRenderer::doRender(RenderArgs* args) { PerformanceTimer perfTimer("RenderableShapeEntityItem::render"); Q_ASSERT(args->_batch); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.h b/libraries/entities-renderer/src/RenderableShapeEntityItem.h index 6061526f75..5bc61606ad 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.h +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.h @@ -26,6 +26,7 @@ public: protected: ShapeKey getShapeKey() override; + Item::Bound getBound() override; private: virtual bool needsRenderUpdate() const override; diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 6c12c6d019..565fb37781 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -3113,6 +3113,7 @@ std::function EntityTree::_getEntityObjectOperator = nul std::function EntityTree::_textSizeOperator = nullptr; std::function EntityTree::_areEntityClicksCapturedOperator = nullptr; std::function EntityTree::_emitScriptEventOperator = nullptr; +std::function EntityTree::_getUnscaledDimensionsForEntityIDOperator = nullptr; QObject* EntityTree::getEntityObject(const QUuid& id) { if (_getEntityObjectOperator) { @@ -3141,6 +3142,13 @@ void EntityTree::emitScriptEvent(const QUuid& id, const QVariant& message) { } } +glm::vec3 EntityTree::getUnscaledDimensionsForEntityID(const QUuid& id) { + if (_getUnscaledDimensionsForEntityIDOperator) { + return _getUnscaledDimensionsForEntityIDOperator(id); + } + return glm::vec3(1.0f); +} + void EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, MovingEntitiesOperator& moveOperator, bool force, bool tellServer) { // if the queryBox has changed, tell the entity-server diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index 9108f8d8d2..c083493e99 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -271,6 +271,9 @@ public: static void setEmitScriptEventOperator(std::function emitScriptEventOperator) { _emitScriptEventOperator = emitScriptEventOperator; } static void emitScriptEvent(const QUuid& id, const QVariant& message); + static void setGetUnscaledDimensionsForEntityIDOperator(std::function getUnscaledDimensionsForEntityIDOperator) { _getUnscaledDimensionsForEntityIDOperator = getUnscaledDimensionsForEntityIDOperator; } + static glm::vec3 getUnscaledDimensionsForEntityID(const QUuid& id); + std::map getNamedPaths() const { return _namedPaths; } void updateEntityQueryAACube(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, @@ -386,6 +389,7 @@ private: static std::function _textSizeOperator; static std::function _areEntityClicksCapturedOperator; static std::function _emitScriptEventOperator; + static std::function _getUnscaledDimensionsForEntityIDOperator; std::vector _staleProxies; diff --git a/libraries/entities/src/MaterialEntityItem.cpp b/libraries/entities/src/MaterialEntityItem.cpp index 1a7c3c601b..22143e88ba 100644 --- a/libraries/entities/src/MaterialEntityItem.cpp +++ b/libraries/entities/src/MaterialEntityItem.cpp @@ -139,10 +139,10 @@ void MaterialEntityItem::debugDump() const { void MaterialEntityItem::setUnscaledDimensions(const glm::vec3& value) { _desiredDimensions = value; - if (_materialMappingMode == MaterialMappingMode::UV) { - EntityItem::setUnscaledDimensions(ENTITY_ITEM_DEFAULT_DIMENSIONS); - } else if (_materialMappingMode == MaterialMappingMode::PROJECTED) { + if (_hasVertexShader || _materialMappingMode == MaterialMappingMode::PROJECTED) { EntityItem::setUnscaledDimensions(value); + } else if (_materialMappingMode == MaterialMappingMode::UV) { + EntityItem::setUnscaledDimensions(ENTITY_ITEM_DEFAULT_DIMENSIONS); } } @@ -264,6 +264,13 @@ void MaterialEntityItem::setMaterialRepeat(bool value) { }); } +void MaterialEntityItem::setParentID(const QUuid& parentID) { + if (parentID != getParentID()) { + EntityItem::setParentID(parentID); + _hasVertexShader = false; + } +} + AACube MaterialEntityItem::calculateInitialQueryAACube(bool& success) { AACube aaCube = EntityItem::calculateInitialQueryAACube(success); // A Material entity's queryAACube contains its parent's queryAACube @@ -278,3 +285,16 @@ AACube MaterialEntityItem::calculateInitialQueryAACube(bool& success) { } return aaCube; } + +void MaterialEntityItem::setHasVertexShader(bool hasVertexShader) { + bool prevHasVertexShader = _hasVertexShader; + _hasVertexShader = hasVertexShader; + + if (hasVertexShader && !prevHasVertexShader) { + setLocalPosition(glm::vec3(0.0f)); + setLocalOrientation(glm::quat()); + setUnscaledDimensions(EntityTree::getUnscaledDimensionsForEntityID(getParentID())); + } else if (!hasVertexShader && prevHasVertexShader) { + setUnscaledDimensions(_desiredDimensions); + } +} \ No newline at end of file diff --git a/libraries/entities/src/MaterialEntityItem.h b/libraries/entities/src/MaterialEntityItem.h index 3f32486f0b..d8de8c3bc6 100644 --- a/libraries/entities/src/MaterialEntityItem.h +++ b/libraries/entities/src/MaterialEntityItem.h @@ -64,6 +64,8 @@ public: QString getParentMaterialName() const; void setParentMaterialName(const QString& parentMaterialName); + void setParentID(const QUuid& parentID) override; + glm::vec2 getMaterialMappingPos() const; void setMaterialMappingPos(const glm::vec2& materialMappingPos); glm::vec2 getMaterialMappingScale() const; @@ -73,6 +75,8 @@ public: AACube calculateInitialQueryAACube(bool& success) override; + void setHasVertexShader(bool hasVertexShader); + private: // URL for this material. Currently, only JSON format is supported. Set to "materialData" to use the material data to live edit a material. // The following fields are supported in the JSON: @@ -108,6 +112,8 @@ private: float _materialMappingRot { 0 }; QString _materialData; + bool _hasVertexShader { false }; + }; #endif // hifi_MaterialEntityItem_h diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 43c6b25dcb..22bfc3f1ad 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -29,6 +29,7 @@ Q_LOGGING_CATEGORY(proceduralLog, "hifi.gpu.procedural") // User-data parsing constants static const QString PROCEDURAL_USER_DATA_KEY = "ProceduralEntity"; +static const QString VERTEX_URL_KEY = "vertexShaderURL"; static const QString FRAGMENT_URL_KEY = "fragmentShaderURL"; static const QString URL_KEY = "shaderUrl"; static const QString VERSION_KEY = "version"; @@ -42,6 +43,7 @@ static const std::string PROCEDURAL_VERSION = "//PROCEDURAL_VERSION"; bool operator==(const ProceduralData& a, const ProceduralData& b) { return ((a.version == b.version) && (a.fragmentShaderUrl == b.fragmentShaderUrl) && + (a.vertexShaderUrl == b.vertexShaderUrl) && (a.uniforms == b.uniforms) && (a.channels == b.channels)); } @@ -101,9 +103,9 @@ void ProceduralData::parse(const QJsonObject& proceduralData) { } } - // Empty shader URL isn't valid - if (fragmentShaderUrl.isEmpty()) { - return; + { // Vertex shader URL + auto rawShaderUrl = proceduralData[VERTEX_URL_KEY].toString(); + vertexShaderUrl = DependencyManager::get()->normalizeURL(rawShaderUrl); } uniforms = proceduralData[UNIFORMS_KEY].toObject(); @@ -172,29 +174,57 @@ void Procedural::setProceduralData(const ProceduralData& proceduralData) { if (proceduralData.fragmentShaderUrl != _data.fragmentShaderUrl) { _data.fragmentShaderUrl = proceduralData.fragmentShaderUrl; - const auto& shaderUrl = _data.fragmentShaderUrl; _shaderDirty = true; _networkFragmentShader.reset(); _fragmentShaderPath.clear(); _fragmentShaderSource.clear(); - if (shaderUrl.isEmpty() || !shaderUrl.isValid()) { + if (!_data.fragmentShaderUrl.isValid()) { + qCWarning(proceduralLog) << "Invalid fragment shader URL: " << _data.fragmentShaderUrl; return; } - if (shaderUrl.isLocalFile()) { - if (!QFileInfo(shaderUrl.toLocalFile()).exists()) { + if (_data.fragmentShaderUrl.isLocalFile()) { + if (!QFileInfo(_data.fragmentShaderUrl.toLocalFile()).exists()) { + qCWarning(proceduralLog) << "Invalid fragment shader URL, missing local file: " << _data.fragmentShaderUrl; return; } - _fragmentShaderPath = shaderUrl.toLocalFile(); - } else if (shaderUrl.scheme() == URL_SCHEME_QRC) { - _fragmentShaderPath = ":" + shaderUrl.path(); + _fragmentShaderPath = _data.fragmentShaderUrl.toLocalFile(); + } else if (_data.fragmentShaderUrl.scheme() == URL_SCHEME_QRC) { + _fragmentShaderPath = ":" + _data.fragmentShaderUrl.path(); } else { - _networkFragmentShader = ShaderCache::instance().getShader(shaderUrl); + _networkFragmentShader = ShaderCache::instance().getShader(_data.fragmentShaderUrl); } } + if (proceduralData.vertexShaderUrl != _data.vertexShaderUrl) { + _data.vertexShaderUrl = proceduralData.vertexShaderUrl; + + _shaderDirty = true; + _networkVertexShader.reset(); + _vertexShaderPath.clear(); + _vertexShaderSource.clear(); + + if (!_data.vertexShaderUrl.isValid()) { + qCWarning(proceduralLog) << "Invalid vertex shader URL: " << _data.vertexShaderUrl; + return; + } + + if (_data.vertexShaderUrl.isLocalFile()) { + if (!QFileInfo(_data.vertexShaderUrl.toLocalFile()).exists()) { + qCWarning(proceduralLog) << "Invalid vertex shader URL, missing local file: " << _data.vertexShaderUrl; + return; + } + _vertexShaderPath = _data.vertexShaderUrl.toLocalFile(); + } else if (_data.vertexShaderUrl.scheme() == URL_SCHEME_QRC) { + _vertexShaderPath = ":" + _data.vertexShaderUrl.path(); + } else { + _networkVertexShader = ShaderCache::instance().getShader(_data.vertexShaderUrl); + } + + } + _enabled = true; } @@ -213,8 +243,12 @@ bool Procedural::isReady() const { _fadeStartTime = usecTimestampNow(); } - // Do we have a network or local shader, and if so, is it loaded? - if (_fragmentShaderPath.isEmpty() && (!_networkFragmentShader || !_networkFragmentShader->isLoaded())) { + // We need to have at least one shader, and whichever ones we have need to be loaded + bool hasFragmentShader = !_fragmentShaderPath.isEmpty() || _networkFragmentShader; + bool fragmentShaderLoaded = !_fragmentShaderPath.isEmpty() || (_networkFragmentShader && _networkFragmentShader->isLoaded()); + bool hasVertexShader = !_vertexShaderPath.isEmpty() || _networkVertexShader; + bool vertexShaderLoaded = !_vertexShaderPath.isEmpty() || (_networkVertexShader && _networkVertexShader->isLoaded()); + if ((!hasFragmentShader && !hasVertexShader) || (hasFragmentShader && !fragmentShaderLoaded) || (hasVertexShader && !vertexShaderLoaded)) { return false; } @@ -258,6 +292,20 @@ void Procedural::prepare(gpu::Batch& batch, _shaderDirty = true; } + if (!_vertexShaderPath.isEmpty()) { + auto lastModified = (uint64_t)QFileInfo(_vertexShaderPath).lastModified().toMSecsSinceEpoch(); + if (lastModified > _vertexShaderModified) { + QFile file(_vertexShaderPath); + file.open(QIODevice::ReadOnly); + _vertexShaderSource = QTextStream(&file).readAll(); + _shaderDirty = true; + _vertexShaderModified = lastModified; + } + } else if (_vertexShaderSource.isEmpty() && _networkVertexShader && _networkVertexShader->isLoaded()) { + _vertexShaderSource = _networkVertexShader->_source; + _shaderDirty = true; + } + if (_shaderDirty) { _proceduralPipelines.clear(); } @@ -276,25 +324,42 @@ void Procedural::prepare(gpu::Batch& batch, gpu::Shader::Source& fragmentSource = (key.isTransparent() && _transparentFragmentSource.valid()) ? _transparentFragmentSource : _opaqueFragmentSource; - // Build the fragment shader + // Build the fragment and vertex shaders + auto versionDefine = "#define PROCEDURAL_V" + std::to_string(_data.version); fragmentSource.replacements.clear(); - fragmentSource.replacements[PROCEDURAL_VERSION] = "#define PROCEDURAL_V" + std::to_string(_data.version); - fragmentSource.replacements[PROCEDURAL_BLOCK] = _fragmentShaderSource.toStdString(); + fragmentSource.replacements[PROCEDURAL_VERSION] = versionDefine; + if (!_fragmentShaderSource.isEmpty()) { + fragmentSource.replacements[PROCEDURAL_BLOCK] = _fragmentShaderSource.toStdString(); + } + vertexSource.replacements.clear(); + vertexSource.replacements[PROCEDURAL_VERSION] = versionDefine; + if (!_vertexShaderSource.isEmpty()) { + vertexSource.replacements[PROCEDURAL_BLOCK] = _vertexShaderSource.toStdString(); + } // Set any userdata specified uniforms (if any) if (!_data.uniforms.empty()) { - // First grab all the possible dialect/variant/Reflections - std::vector allReflections; + // First grab all the possible dialect/variant/reflections + std::vector allFragmentReflections; for (auto dialectIt = fragmentSource.dialectSources.begin(); dialectIt != fragmentSource.dialectSources.end(); ++dialectIt) { for (auto variantIt = (*dialectIt).second.variantSources.begin(); variantIt != (*dialectIt).second.variantSources.end(); ++variantIt) { - allReflections.push_back(&(*variantIt).second.reflection); + allFragmentReflections.push_back(&(*variantIt).second.reflection); + } + } + std::vector allVertexReflections; + for (auto dialectIt = vertexSource.dialectSources.begin(); dialectIt != vertexSource.dialectSources.end(); ++dialectIt) { + for (auto variantIt = (*dialectIt).second.variantSources.begin(); variantIt != (*dialectIt).second.variantSources.end(); ++variantIt) { + allVertexReflections.push_back(&(*variantIt).second.reflection); } } // Then fill in every reflections the new custom bindings int customSlot = procedural::slot::uniform::Custom; for (const auto& key : _data.uniforms.keys()) { std::string uniformName = key.toLocal8Bit().data(); - for (auto reflection : allReflections) { + for (auto reflection : allFragmentReflections) { + reflection->uniforms[uniformName] = customSlot; + } + for (auto reflection : allVertexReflections) { reflection->uniforms[uniformName] = customSlot; } ++customSlot; @@ -303,6 +368,7 @@ void Procedural::prepare(gpu::Batch& batch, // Leave this here for debugging //qCDebug(proceduralLog) << "FragmentShader:\n" << fragmentSource.getSource(shader::Dialect::glsl450, shader::Variant::Mono).c_str(); + //qCDebug(proceduralLog) << "VertexShader:\n" << vertexSource.getSource(shader::Dialect::glsl450, shader::Variant::Mono).c_str(); gpu::ShaderPointer vertexShader = gpu::Shader::createVertex(vertexSource); gpu::ShaderPointer fragmentShader = gpu::Shader::createPixel(fragmentSource); @@ -453,6 +519,11 @@ glm::vec4 Procedural::getColor(const glm::vec4& entityColor) const { return entityColor; } +bool Procedural::hasVertexShader() const { + std::lock_guard lock(_mutex); + return !_data.vertexShaderUrl.isEmpty(); +} + void graphics::ProceduralMaterial::initializeProcedural() { _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural); _procedural._vertexSourceSkinned = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural_deformed); diff --git a/libraries/procedural/src/procedural/Procedural.h b/libraries/procedural/src/procedural/Procedural.h index aac353bf7c..89f21218e6 100644 --- a/libraries/procedural/src/procedural/Procedural.h +++ b/libraries/procedural/src/procedural/Procedural.h @@ -36,6 +36,8 @@ const size_t MAX_PROCEDURAL_TEXTURE_CHANNELS{ 4 }; * The data used to define a Procedural shader material. * @typedef {object} ProceduralData * @property {number} version=1 - The version of the procedural shader. + * @property {string} vertexShaderURL - A link to a vertex shader. Currently, only GLSL shaders are supported. The shader must implement a different method depending on the version. + * If a procedural material contains a vertex shader, the bounding box of the material entity is used to cull the object to which the material is applied. * @property {string} fragmentShaderURL - A link to a fragment shader. Currently, only GLSL shaders are supported. The shader must implement a different method depending on the version. * shaderUrl is an alias. * @property {string[]} channels=[] - An array of input texture URLs. Currently, up to 4 are supported. @@ -50,6 +52,7 @@ struct ProceduralData { // Rendering object descriptions, from userData uint8_t version { 0 }; QUrl fragmentShaderUrl; + QUrl vertexShaderUrl; QJsonObject uniforms; QJsonArray channels; }; @@ -110,6 +113,11 @@ public: void setIsFading(bool isFading) { _isFading = isFading; } void setDoesFade(bool doesFade) { _doesFade = doesFade; } + bool hasVertexShader() const; + void setBoundOperator(const std::function& boundOperator) { _boundOperator = boundOperator; } + bool hasBoundOperator() const { return (bool)_boundOperator; } + AABox getBound() { return _boundOperator(); } + gpu::Shader::Source _vertexSource; gpu::Shader::Source _vertexSourceSkinned; gpu::Shader::Source _vertexSourceSkinnedDQ; @@ -156,7 +164,11 @@ protected: uint64_t _firstCompile { 0 }; int32_t _frameCount { 0 }; - // Rendering object descriptions, from userData + // Rendering object descriptions + QString _vertexShaderSource; + QString _vertexShaderPath; + uint64_t _vertexShaderModified { 0 }; + NetworkShaderPointer _networkVertexShader; QString _fragmentShaderSource; QString _fragmentShaderPath; uint64_t _fragmentShaderModified { 0 }; @@ -187,6 +199,9 @@ private: mutable bool _isFading { false }; bool _doesFade { true }; ProceduralProgramKey _prevKey; + + std::function _boundOperator { nullptr }; + mutable std::mutex _mutex; }; @@ -210,6 +225,7 @@ public: bool isFading() const { return _procedural.isFading(); } void setIsFading(bool isFading) { _procedural.setIsFading(isFading); } uint64_t getFadeStartTime() const { return _procedural.getFadeStartTime(); } + bool hasVertexShader() const { return _procedural.hasVertexShader(); } void prepare(gpu::Batch& batch, const glm::vec3& position, const glm::vec3& size, const glm::quat& orientation, const uint64_t& created, const ProceduralProgramKey key = ProceduralProgramKey()) { _procedural.prepare(batch, position, size, orientation, created, key); @@ -217,6 +233,10 @@ public: void initializeProcedural(); + void setBoundOperator(const std::function& boundOperator) { _procedural.setBoundOperator(boundOperator); } + bool hasBoundOperator() const { return _procedural.hasBoundOperator(); } + AABox getBound() { return _procedural.getBound(); } + private: QString _proceduralString; Procedural _procedural; diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slh b/libraries/procedural/src/procedural/ProceduralCommon.slh index 2915f096e6..e2344dc14e 100644 --- a/libraries/procedural/src/procedural/ProceduralCommon.slh +++ b/libraries/procedural/src/procedural/ProceduralCommon.slh @@ -60,6 +60,17 @@ LAYOUT_STD140(binding=PROCEDURAL_BUFFER_INPUTS) uniform standardInputsBuffer { #define iChannelResolution standardInputs.channelResolution #define iWorldOrientation standardInputs.worldOrientation +struct ProceduralVertexData { + vec4 position; + vec4 nonSkinnedPosition; // input only + vec3 normal; + vec3 nonSkinnedNormal; // input only + vec3 tangent; // input only + vec3 nonSkinnedTangent; // input only + vec4 color; + vec2 texCoord0; +}; + struct ProceduralFragment { vec3 normal; vec3 diffuse; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 6359c14896..fb1f400a70 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -110,6 +110,13 @@ ItemKey MeshPartPayload::getKey() const { } Item::Bound MeshPartPayload::getBound() const { + graphics::MaterialPointer material = _drawMaterials.empty() ? nullptr : _drawMaterials.top().material; + if (material && material->isProcedural() && material->isReady()) { + auto procedural = std::static_pointer_cast(_drawMaterials.top().material); + if (procedural->hasVertexShader() && procedural->hasBoundOperator()) { + return procedural->getBound(); + } + } return _worldBound; } @@ -175,6 +182,9 @@ void MeshPartPayload::render(RenderArgs* args) { if (!_drawMaterials.empty() && _drawMaterials.top().material && _drawMaterials.top().material->isProcedural() && _drawMaterials.top().material->isReady()) { + if (!(enableMaterialProceduralShaders && ENABLE_MATERIAL_PROCEDURAL_SHADERS)) { + return; + } auto procedural = std::static_pointer_cast(_drawMaterials.top().material); auto& schema = _drawMaterials.getSchemaBuffer().get(); glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); diff --git a/libraries/render-utils/src/simple_procedural.slv b/libraries/render-utils/src/simple_procedural.slv index a8d494f72d..70bce451d3 100644 --- a/libraries/render-utils/src/simple_procedural.slv +++ b/libraries/render-utils/src/simple_procedural.slv @@ -20,9 +20,9 @@ <@if HIFI_USE_DEFORMED or HIFI_USE_DEFORMEDDQ@> <@include MeshDeformer.slh@> <@if HIFI_USE_DEFORMED@> - <$declareMeshDeformer(1, _SCRIBE_NULL, 1, _SCRIBE_NULL, 1)$> + <$declareMeshDeformer(1, 1, 1, _SCRIBE_NULL, 1)$> <@else@> - <$declareMeshDeformer(1, _SCRIBE_NULL, 1, 1, 1)$> + <$declareMeshDeformer(1, 1, 1, 1, 1)$> <@endif@> <$declareMeshDeformerActivation(1, 1)$> <@endif@> @@ -34,24 +34,56 @@ layout(location=RENDER_UTILS_ATTR_NORMAL_WS) out vec3 _normalWS; layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; +<@include procedural/ProceduralCommon.slh@> + +#line 1001 +//PROCEDURAL_BLOCK_BEGIN + +void getProceduralVertex(inout ProceduralVertexData proceduralData) {} + +//PROCEDURAL_BLOCK_END + +#line 2030 void main(void) { vec4 positionMS = inPosition; vec3 normalMS = inNormal.xyz; + vec3 tangentMS = inTangent.xyz; + vec4 color = color_sRGBAToLinear(inColor); + vec2 texCoord0 = inTexCoord0.st; <@if HIFI_USE_DEFORMED or HIFI_USE_DEFORMEDDQ@> - evalMeshDeformer(inPosition, positionMS, inNormal.xyz, normalMS, + evalMeshDeformer(inPosition, positionMS, inNormal.xyz, normalMS, inTangent.xyz, tangentMS, meshDeformer_doSkinning(_drawCallInfo.y), inSkinClusterIndex, inSkinClusterWeight, meshDeformer_doBlendshape(_drawCallInfo.y), gl_VertexID); <@endif@> +#if defined(PROCEDURAL_V1) || defined(PROCEDURAL_V2) || defined(PROCEDURAL_V3) + ProceduralVertexData proceduralData = ProceduralVertexData( + positionMS, + inPosition, + normalMS, + inNormal.xyz, + tangentMS, + inTangent.xyz, + color, + texCoord0 + ); + + getProceduralVertex(proceduralData); + + positionMS = proceduralData.position; + normalMS = proceduralData.normal; + color = proceduralData.color; + texCoord0 = proceduralData.texCoord0; +#endif + _positionMS = positionMS; _normalMS = normalMS; + _color = color; + _texCoord01 = vec4(texCoord0, 0.0, 0.0); TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); <$transformModelToEyeAndClipPos(cam, obj, positionMS, _positionES, gl_Position)$> <$transformModelToWorldDir(cam, obj, normalMS, _normalWS)$> - - _color = color_sRGBAToLinear(inColor); - _texCoord01 = vec4(inTexCoord0.st, 0.0, 0.0); } \ No newline at end of file From d54ca435545f04007916e9f4d4862eea0de73084 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Fri, 22 Nov 2019 00:37:27 -0800 Subject: [PATCH 091/396] properly implement alphaModes --- libraries/fbx/src/GLTFSerializer.cpp | 85 ++++++++++--------- libraries/fbx/src/GLTFSerializer.h | 20 ++--- libraries/graphics/src/graphics/Material.cpp | 3 +- .../src/graphics/MaterialTextures.slh | 17 ++-- libraries/hfm/src/hfm/HFM.h | 47 +++++----- .../render-utils/src/RenderPipelines.cpp | 4 +- libraries/render-utils/src/model.slf | 10 +-- 7 files changed, 94 insertions(+), 92 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 5d4daf53f7..34a610c921 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -225,18 +225,17 @@ int GLTFSerializer::getAccessorType(const QString& type) return GLTFAccessorType::SCALAR; } -int GLTFSerializer::getMaterialAlphaMode(const QString& type) -{ +graphics::MaterialKey::OpacityMapMode GLTFSerializer::getMaterialAlphaMode(const QString& type) { if (type == "OPAQUE") { - return GLTFMaterialAlphaMode::OPAQUE; + return graphics::MaterialKey::OPACITY_MAP_OPAQUE; } if (type == "MASK") { - return GLTFMaterialAlphaMode::MASK; + return graphics::MaterialKey::OPACITY_MAP_MASK; } if (type == "BLEND") { - return GLTFMaterialAlphaMode::BLEND; + return graphics::MaterialKey::OPACITY_MAP_BLEND; } - return GLTFMaterialAlphaMode::OPAQUE; + return graphics::MaterialKey::OPACITY_MAP_BLEND; } int GLTFSerializer::getCameraType(const QString& type) @@ -484,9 +483,9 @@ bool GLTFSerializer::addMaterial(const QJsonObject& object) { getIndexFromObject(object, "normalTexture", material.normalTexture, material.defined); getIndexFromObject(object, "occlusionTexture", material.occlusionTexture, material.defined); getBoolVal(object, "doubleSided", material.doubleSided, material.defined); - QString alphamode; - if (getStringVal(object, "alphaMode", alphamode, material.defined)) { - material.alphaMode = getMaterialAlphaMode(alphamode); + QString alphaMode; + if (getStringVal(object, "alphaMode", alphaMode, material.defined)) { + material.alphaMode = getMaterialAlphaMode(alphaMode); } getDoubleVal(object, "alphaCutoff", material.alphaCutoff, material.defined); QJsonObject jsMetallicRoughness; @@ -1764,62 +1763,68 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { return fbxtex; } -void GLTFSerializer::setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& material) { +void GLTFSerializer::setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& material) { + if (material.defined["alphaMode"]) { + hfmMat._material->setOpacityMapMode(material.alphaMode); + } else { + hfmMat._material->setOpacityMapMode(graphics::MaterialKey::OPACITY_MAP_OPAQUE); // GLTF defaults to opaque + } + if (material.defined["alphaCutoff"]) { + hfmMat._material->setOpacityCutoff(material.alphaCutoff); + } if (material.defined["emissiveFactor"] && material.emissiveFactor.size() == 3) { - glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], - material.emissiveFactor[1], - material.emissiveFactor[2]); - fbxmat._material->setEmissive(emissive); + glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]); + hfmMat._material->setEmissive(emissive); } if (material.defined["emissiveTexture"]) { - fbxmat.emissiveTexture = getHFMTexture(_file.textures[material.emissiveTexture]); - fbxmat.useEmissiveMap = true; + hfmMat.emissiveTexture = getHFMTexture(_file.textures[material.emissiveTexture]); + hfmMat.useEmissiveMap = true; } if (material.defined["normalTexture"]) { - fbxmat.normalTexture = getHFMTexture(_file.textures[material.normalTexture]); - fbxmat.useNormalMap = true; + hfmMat.normalTexture = getHFMTexture(_file.textures[material.normalTexture]); + hfmMat.useNormalMap = true; } if (material.defined["occlusionTexture"]) { - fbxmat.occlusionTexture = getHFMTexture(_file.textures[material.occlusionTexture]); - fbxmat.useOcclusionMap = true; + hfmMat.occlusionTexture = getHFMTexture(_file.textures[material.occlusionTexture]); + hfmMat.useOcclusionMap = true; } if (material.defined["pbrMetallicRoughness"]) { - fbxmat.isPBSMaterial = true; - + hfmMat.isPBSMaterial = true; + if (material.pbrMetallicRoughness.defined["metallicFactor"]) { - fbxmat.metallic = material.pbrMetallicRoughness.metallicFactor; + hfmMat.metallic = material.pbrMetallicRoughness.metallicFactor; } if (material.pbrMetallicRoughness.defined["baseColorTexture"]) { - fbxmat.opacityTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); - fbxmat.albedoTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); - fbxmat.useAlbedoMap = true; + hfmMat.opacityTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); + hfmMat.albedoTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.baseColorTexture]); + hfmMat.useAlbedoMap = true; } if (material.pbrMetallicRoughness.defined["metallicRoughnessTexture"]) { - fbxmat.roughnessTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.metallicRoughnessTexture]); - fbxmat.roughnessTexture.sourceChannel = image::ColorChannel::GREEN; - fbxmat.useRoughnessMap = true; - fbxmat.metallicTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.metallicRoughnessTexture]); - fbxmat.metallicTexture.sourceChannel = image::ColorChannel::BLUE; - fbxmat.useMetallicMap = true; + hfmMat.roughnessTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.metallicRoughnessTexture]); + hfmMat.roughnessTexture.sourceChannel = image::ColorChannel::GREEN; + hfmMat.useRoughnessMap = true; + hfmMat.metallicTexture = getHFMTexture(_file.textures[material.pbrMetallicRoughness.metallicRoughnessTexture]); + hfmMat.metallicTexture.sourceChannel = image::ColorChannel::BLUE; + hfmMat.useMetallicMap = true; } if (material.pbrMetallicRoughness.defined["roughnessFactor"]) { - fbxmat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); + hfmMat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); } if (material.pbrMetallicRoughness.defined["baseColorFactor"] && material.pbrMetallicRoughness.baseColorFactor.size() == 4) { - glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], - material.pbrMetallicRoughness.baseColorFactor[1], - material.pbrMetallicRoughness.baseColorFactor[2]); - fbxmat.diffuseColor = dcolor; - fbxmat._material->setAlbedo(dcolor); - fbxmat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); - } + glm::vec3 dcolor = + glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], material.pbrMetallicRoughness.baseColorFactor[1], + material.pbrMetallicRoughness.baseColorFactor[2]); + hfmMat.diffuseColor = dcolor; + hfmMat._material->setAlbedo(dcolor); + hfmMat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); + } } } diff --git a/libraries/fbx/src/GLTFSerializer.h b/libraries/fbx/src/GLTFSerializer.h index 4d72805863..b1020f7154 100755 --- a/libraries/fbx/src/GLTFSerializer.h +++ b/libraries/fbx/src/GLTFSerializer.h @@ -416,21 +416,13 @@ struct GLTFpbrMetallicRoughness { } }; -namespace GLTFMaterialAlphaMode { - enum Values { - OPAQUE = 0, - MASK, - BLEND - }; -}; - struct GLTFMaterial { QString name; QVector emissiveFactor; int emissiveTexture; int normalTexture; int occlusionTexture; - int alphaMode; + graphics::MaterialKey::OpacityMapMode alphaMode; double alphaCutoff; bool doubleSided; GLTFpbrMetallicRoughness pbrMetallicRoughness; @@ -451,6 +443,12 @@ struct GLTFMaterial { if (defined["emissiveFactor"]) { qCDebug(modelformat) << "emissiveFactor: " << emissiveFactor; } + if (defined["alphaMode"]) { + qCDebug(modelformat) << "alphaMode: " << alphaMode; + } + if (defined["alphaCutoff"]) { + qCDebug(modelformat) << "alphaCutoff: " << alphaCutoff; + } if (defined["pbrMetallicRoughness"]) { pbrMetallicRoughness.dump(); } @@ -800,7 +798,7 @@ private: hifi::ByteArray setGLBChunks(const hifi::ByteArray& data); - int getMaterialAlphaMode(const QString& type); + graphics::MaterialKey::OpacityMapMode getMaterialAlphaMode(const QString& type); int getAccessorType(const QString& type); int getAnimationSamplerInterpolation(const QString& interpolation); int getCameraType(const QString& type); @@ -854,7 +852,7 @@ private: bool doesResourceExist(const QString& url); - void setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& material); + void setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& material); HFMTexture getHFMTexture(const GLTFTexture& texture); void glTFDebugDump(); void hfmDebugDump(const HFMModel& hfmModel); diff --git a/libraries/graphics/src/graphics/Material.cpp b/libraries/graphics/src/graphics/Material.cpp index d80c3adfbc..1b96ed433b 100755 --- a/libraries/graphics/src/graphics/Material.cpp +++ b/libraries/graphics/src/graphics/Material.cpp @@ -209,8 +209,7 @@ bool Material::resetOpacityMap() const { } } } - auto newious = _key.getOpacityMapMode(); - if (previous != newious) { + if (previous != _key.getOpacityMapMode()) { //opacity change detected for this material return true; } diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index 2a291e5d57..534e1ae869 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -214,22 +214,19 @@ vec3 fetchLightMap(vec2 uv) { } <@endfunc@> -<@func evalMaterialOpacityMask(fetchedOpacity, materialOpacityCutoff, opacity)@> +<@func evalMaterialOpacityMask(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> { - // This path only valid for opaque or texel opaque material - <$opacity$> = step(<$materialOpacityCutoff$>, <$fetchedOpacity$>); + // This path only valid for opaque or texel opaque material + <$opacity$> = mix(<$materialOpacity$>, + step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), + float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)); } <@endfunc@> - -<@func evalMaterialOpacity(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> +<@func evalMaterialOpacity(fetchedOpacity, materialOpacity, opacity)@> { // This path only valid for transparent material - // Assert that float((<$matKey$> & (OPACITY_TRANSLUCENT_MAP_BIT | OPACITY_MASK_MAP_BIT)) != 0)) == 1.0 - <$opacity$> = mix(<$fetchedOpacity$>, - step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), - float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)) - * <$materialOpacity$>; + <$opacity$> = <$materialOpacity$> * <$fetchedOpacity$>; } <@endfunc@> diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 888e562bca..7111ad2e65 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -173,24 +173,27 @@ public: void getTextureNames(QSet& textureList) const; void setMaxNumPixelsPerTexture(int maxNumPixels); - glm::vec3 diffuseColor{ 1.0f }; - float diffuseFactor{ 1.0f }; - glm::vec3 specularColor{ 0.02f }; - float specularFactor{ 1.0f }; + glm::vec3 diffuseColor { 1.0f }; + float diffuseFactor { 1.0f }; + glm::vec3 specularColor { 0.02f }; + float specularFactor { 1.0f }; - glm::vec3 emissiveColor{ 0.0f }; - float emissiveFactor{ 0.0f }; + glm::vec3 emissiveColor { 0.0f }; + float emissiveFactor { 0.0f }; - float shininess{ 23.0f }; - float opacity{ 1.0f }; + float shininess { 23.0f }; + float opacity { 1.0f }; - float metallic{ 0.0f }; - float roughness{ 1.0f }; - float emissiveIntensity{ 1.0f }; - float ambientFactor{ 1.0f }; + float metallic { 0.0f }; + float roughness { 1.0f }; + float emissiveIntensity { 1.0f }; + float ambientFactor { 1.0f }; float bumpMultiplier { 1.0f }; // TODO: to be implemented + graphics::MaterialKey::OpacityMapMode alphaMode { graphics::MaterialKey::OPACITY_MAP_BLEND }; + float alphaCutoff { 0.5f }; + QString materialID; QString name; QString shadingModel; @@ -207,19 +210,19 @@ public: Texture occlusionTexture; Texture scatteringTexture; Texture lightmapTexture; - glm::vec2 lightmapParams{ 0.0f, 1.0f }; + glm::vec2 lightmapParams { 0.0f, 1.0f }; - bool isPBSMaterial{ false }; + bool isPBSMaterial { false }; // THe use XXXMap are not really used to drive which map are going or not, debug only - bool useNormalMap{ false }; - bool useAlbedoMap{ false }; - bool useOpacityMap{ false }; - bool useRoughnessMap{ false }; - bool useSpecularMap{ false }; - bool useMetallicMap{ false }; - bool useEmissiveMap{ false }; - bool useOcclusionMap{ false }; + bool useNormalMap { false }; + bool useAlbedoMap { false }; + bool useOpacityMap { false }; + bool useRoughnessMap { false }; + bool useSpecularMap { false }; + bool useMetallicMap { false }; + bool useEmissiveMap { false }; + bool useOcclusionMap { false }; bool needTangentSpace() const; }; diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 2b0d197819..ff2e3610c2 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -387,8 +387,10 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial std::call_once(once, [] { for (int i = 0; i < graphics::Material::NUM_TOTAL_FLAGS; i++) { // The opacity mask/map are derived from the albedo map + // FIXME: OPACITY_MAP_MODE_BIT is supposed to support fallthrough if (i != graphics::MaterialKey::OPACITY_MASK_MAP_BIT && - i != graphics::MaterialKey::OPACITY_TRANSLUCENT_MAP_BIT) { + i != graphics::MaterialKey::OPACITY_TRANSLUCENT_MAP_BIT && + i != graphics::MaterialKey::OPACITY_MAP_MODE_BIT) { allFlags.insert(i); } } diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index bacc6b0ab1..229a6b1907 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -103,14 +103,13 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> <@if HIFI_USE_TRANSLUCENT@> - float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); float opacity = 1.0; - <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity)$>; + <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; <@endif@> @@ -155,14 +154,13 @@ void main(void) { <@endif@> <@if HIFI_USE_TRANSLUCENT@> - float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); float opacity = 1.0; - <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity)$>; + <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardTransparent(opacity)$>; <@endif@> From b66fa1d57a2ad79ca686d2b056f6f843d50ad251 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Sun, 24 Nov 2019 12:44:42 -0800 Subject: [PATCH 092/396] put back stepping in translucent case --- libraries/graphics/src/graphics/MaterialTextures.slh | 7 +++++-- libraries/render-utils/src/model.slf | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index 534e1ae869..cb83f7d9cf 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -223,10 +223,13 @@ vec3 fetchLightMap(vec2 uv) { } <@endfunc@> -<@func evalMaterialOpacity(fetchedOpacity, materialOpacity, opacity)@> +<@func evalMaterialOpacity(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> { // This path only valid for transparent material - <$opacity$> = <$materialOpacity$> * <$fetchedOpacity$>; + <$opacity$> = mix(<$fetchedOpacity$>, + step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), + float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)) + * <$materialOpacity$>; } <@endfunc@> diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 229a6b1907..a6cc82e335 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -103,8 +103,9 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); @@ -154,8 +155,9 @@ void main(void) { <@endif@> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); From 3fe395ca320b5a979dd31999c3987d8238e2e8b4 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Fri, 22 Nov 2019 00:37:27 -0800 Subject: [PATCH 093/396] properly implement alphaModes --- libraries/graphics/src/graphics/MaterialTextures.slh | 7 ++----- libraries/render-utils/src/model.slf | 6 ++---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index cb83f7d9cf..534e1ae869 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -223,13 +223,10 @@ vec3 fetchLightMap(vec2 uv) { } <@endfunc@> -<@func evalMaterialOpacity(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> +<@func evalMaterialOpacity(fetchedOpacity, materialOpacity, opacity)@> { // This path only valid for transparent material - <$opacity$> = mix(<$fetchedOpacity$>, - step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), - float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)) - * <$materialOpacity$>; + <$opacity$> = <$materialOpacity$> * <$fetchedOpacity$>; } <@endfunc@> diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index a6cc82e335..229a6b1907 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -103,9 +103,8 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> <@if HIFI_USE_TRANSLUCENT@> - float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); @@ -155,9 +154,8 @@ void main(void) { <@endif@> <@if HIFI_USE_TRANSLUCENT@> - float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); From 59c67e559050478fabebaba677da0cd5e5b9d7cd Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Sun, 24 Nov 2019 12:44:42 -0800 Subject: [PATCH 094/396] put back stepping in translucent case --- libraries/graphics/src/graphics/MaterialTextures.slh | 7 +++++-- libraries/render-utils/src/model.slf | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index 534e1ae869..cb83f7d9cf 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -223,10 +223,13 @@ vec3 fetchLightMap(vec2 uv) { } <@endfunc@> -<@func evalMaterialOpacity(fetchedOpacity, materialOpacity, opacity)@> +<@func evalMaterialOpacity(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> { // This path only valid for transparent material - <$opacity$> = <$materialOpacity$> * <$fetchedOpacity$>; + <$opacity$> = mix(<$fetchedOpacity$>, + step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), + float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)) + * <$materialOpacity$>; } <@endfunc@> diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 229a6b1907..a6cc82e335 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -103,8 +103,9 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); @@ -154,8 +155,9 @@ void main(void) { <@endif@> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); From e0a29d93676ffc5e6f13280ea7df58cd70a0c517 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Tue, 26 Nov 2019 14:48:43 -0800 Subject: [PATCH 095/396] material entities support cullFaceMode and support gltf doubleSided --- interface/src/graphics/WorldBox.cpp | 2 +- .../src/avatars-renderer/Avatar.cpp | 6 +- .../src/RenderableGizmoEntityItem.cpp | 2 +- .../src/RenderableLineEntityItem.cpp | 2 +- .../src/RenderableShapeEntityItem.cpp | 3 +- libraries/fbx/src/GLTFSerializer.cpp | 4 + .../src/graphics-scripting/Forward.h | 2 + .../GraphicsScriptingInterface.cpp | 5 + .../graphics-scripting/ScriptableModel.cpp | 3 + libraries/graphics/src/graphics/Material.cpp | 21 ++- libraries/graphics/src/graphics/Material.h | 20 +++ .../procedural/ProceduralMaterialCache.cpp | 24 +++- libraries/render-utils/src/GeometryCache.cpp | 121 ++++++++++-------- libraries/render-utils/src/GeometryCache.h | 21 +-- .../render-utils/src/MeshPartPayload.cpp | 6 + libraries/render-utils/src/Model.cpp | 2 +- .../render-utils/src/RenderPipelines.cpp | 78 +++++------ libraries/render/src/render/ShapePipeline.h | 51 +++++++- 18 files changed, 256 insertions(+), 117 deletions(-) diff --git a/interface/src/graphics/WorldBox.cpp b/interface/src/graphics/WorldBox.cpp index 648d6d3177..0e15d9da86 100644 --- a/interface/src/graphics/WorldBox.cpp +++ b/interface/src/graphics/WorldBox.cpp @@ -22,7 +22,7 @@ namespace render { PerformanceTimer perfTimer("worldBox"); auto& batch = *args->_batch; - DependencyManager::get()->bindSimpleProgram(batch, false, false, true, false, false, true, args->_renderMethod == Args::RenderMethod::FORWARD); + DependencyManager::get()->bindSimpleProgram(batch, false, false, false, false, true, args->_renderMethod == Args::RenderMethod::FORWARD); WorldBoxRenderData::renderWorldBox(args, batch); } } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 9b8ce8cf34..8ceafbf5a1 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -791,7 +791,7 @@ void Avatar::render(RenderArgs* renderArgs) { pointerTransform.setTranslation(position); pointerTransform.setRotation(rotation); batch.setModelTransform(pointerTransform); - geometryCache->bindSimpleProgram(batch, false, false, true, false, false, true, renderArgs->_renderMethod == render::Args::FORWARD); + geometryCache->bindSimpleProgram(batch, false, false, false, false, true, renderArgs->_renderMethod == render::Args::FORWARD); geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, laserLength, 0.0f), laserColor, _leftPointerGeometryID); } } @@ -815,7 +815,7 @@ void Avatar::render(RenderArgs* renderArgs) { pointerTransform.setTranslation(position); pointerTransform.setRotation(rotation); batch.setModelTransform(pointerTransform); - geometryCache->bindSimpleProgram(batch, false, false, true, false, false, true, renderArgs->_renderMethod == render::Args::FORWARD); + geometryCache->bindSimpleProgram(batch, false, false, false, false, true, renderArgs->_renderMethod == render::Args::FORWARD); geometryCache->renderLine(batch, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, laserLength, 0.0f), laserColor, _rightPointerGeometryID); } } @@ -1103,7 +1103,7 @@ void Avatar::renderDisplayName(gpu::Batch& batch, const ViewFrustum& view, const { PROFILE_RANGE_BATCH(batch, __FUNCTION__":renderBevelCornersRect"); - DependencyManager::get()->bindSimpleProgram(batch, false, false, true, true, true, true, forward); + DependencyManager::get()->bindSimpleProgram(batch, false, false, true, true, true, forward); DependencyManager::get()->renderBevelCornersRect(batch, left, bottom, width, height, bevelDistance, backgroundColor, _nameRectGeometryID); } diff --git a/libraries/entities-renderer/src/RenderableGizmoEntityItem.cpp b/libraries/entities-renderer/src/RenderableGizmoEntityItem.cpp index a066107a15..9081d0727f 100644 --- a/libraries/entities-renderer/src/RenderableGizmoEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableGizmoEntityItem.cpp @@ -253,7 +253,7 @@ void GizmoEntityRenderer::doRender(RenderArgs* args) { }); bool wireframe = render::ShapeKey(args->_globalShapeKey).isWireframe() || _primitiveMode == PrimitiveMode::LINES; - geometryCache->bindSimpleProgram(batch, false, isTransparent(), false, wireframe, true, true, forward); + geometryCache->bindSimpleProgram(batch, false, isTransparent(), wireframe, true, true, forward, graphics::MaterialKey::CULL_NONE); batch.setModelTransform(transform); diff --git a/libraries/entities-renderer/src/RenderableLineEntityItem.cpp b/libraries/entities-renderer/src/RenderableLineEntityItem.cpp index aaef0b3f7d..6e2be1b41e 100644 --- a/libraries/entities-renderer/src/RenderableLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableLineEntityItem.cpp @@ -50,7 +50,7 @@ void LineEntityRenderer::doRender(RenderArgs* args) { transform.setRotation(modelTransform.getRotation()); batch.setModelTransform(transform); if (_linePoints.size() > 1) { - DependencyManager::get()->bindSimpleProgram(batch, false, false, true, false, false, true, + DependencyManager::get()->bindSimpleProgram(batch, false, false, false, false, true, _renderLayer != RenderLayer::WORLD || args->_renderMethod == Args::RenderMethod::FORWARD); DependencyManager::get()->renderVertices(batch, gpu::LINE_STRIP, _lineVerticesID); } diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 497294e45a..d5a0e22199 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -200,6 +200,7 @@ ShapeKey ShapeEntityRenderer::getShapeKey() { if (drawMaterialKey.isUnlit()) { builder.withUnlit(); } + builder.withCullFaceMode(mat->second.getCullFaceMode()); } else if (pipelineType == Pipeline::PROCEDURAL) { builder.withOwnPipeline(); } @@ -263,7 +264,7 @@ void ShapeEntityRenderer::doRender(RenderArgs* args) { // FIXME, support instanced multi-shape rendering using multidraw indirect outColor.a *= _isFading ? Interpolate::calculateFadeRatio(_fadeStartTime) : 1.0f; render::ShapePipelinePointer pipeline = geometryCache->getShapePipelinePointer(outColor.a < 1.0f, false, - renderLayer != RenderLayer::WORLD || args->_renderMethod == Args::RenderMethod::FORWARD); + renderLayer != RenderLayer::WORLD || args->_renderMethod == Args::RenderMethod::FORWARD, materials.top().material->getCullFaceMode()); if (render::ShapeKey(args->_globalShapeKey).isWireframe() || primitiveMode == PrimitiveMode::LINES) { geometryCache->renderWireShapeInstance(args, batch, geometryShape, outColor, pipeline); } else { diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 34a610c921..e117e1f211 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1774,6 +1774,10 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& mat hfmMat._material->setOpacityCutoff(material.alphaCutoff); } + if (material.defined["doubleSided"] && material.doubleSided) { + hfmMat._material->setCullFaceMode(graphics::MaterialKey::CullFaceMode::CULL_NONE); + } + if (material.defined["emissiveFactor"] && material.emissiveFactor.size() == 3) { glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]); hfmMat._material->setEmissive(emissive); diff --git a/libraries/graphics-scripting/src/graphics-scripting/Forward.h b/libraries/graphics-scripting/src/graphics-scripting/Forward.h index 9efaa0a90d..acef5a5bd4 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/Forward.h +++ b/libraries/graphics-scripting/src/graphics-scripting/Forward.h @@ -65,6 +65,7 @@ namespace scriptable { * @property {Mat4|string} texCoordTransform1 * @property {string} lightmapParams * @property {string} materialParams + * @property {string} cullFaceMode * @property {boolean} defaultFallthrough * @property {string} procedural */ @@ -99,6 +100,7 @@ namespace scriptable { QString lightMap; QString scatteringMap; std::array texCoordTransforms; + QString cullFaceMode; bool defaultFallthrough; std::unordered_map propertyFallthroughs; // not actually exposed to script diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index d76c1fcbd2..c0a2d4bf25 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -495,6 +495,11 @@ namespace scriptable { obj.setProperty("materialParams", FALLTHROUGH); } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::CULL_FACE_MODE)) { + obj.setProperty("cullFaceMode", FALLTHROUGH); + } else if (!material.cullFaceMode.isEmpty()) { + obj.setProperty("cullFaceMode", material.cullFaceMode); + } } else if (material.model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { obj.setProperty("procedural", material.procedural); } diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp index 4a56db0d04..28cd49e7c4 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp @@ -45,6 +45,7 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const occlusionMap = material.occlusionMap; lightMap = material.lightMap; scatteringMap = material.scatteringMap; + cullFaceMode = material.cullFaceMode; } else if (model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { procedural = material.procedural; } @@ -131,6 +132,8 @@ scriptable::ScriptableMaterial::ScriptableMaterial(const graphics::MaterialPoint for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { texCoordTransforms[i] = material->getTexCoordTransform(i); } + + cullFaceMode = QString(graphics::MaterialKey::getCullFaceModeName(material->getCullFaceMode()).c_str()); } else if (model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { procedural = material->getProceduralString(); } diff --git a/libraries/graphics/src/graphics/Material.cpp b/libraries/graphics/src/graphics/Material.cpp index 1b96ed433b..41cd319595 100755 --- a/libraries/graphics/src/graphics/Material.cpp +++ b/libraries/graphics/src/graphics/Material.cpp @@ -27,7 +27,7 @@ const float Material::DEFAULT_ROUGHNESS { 1.0f }; const float Material::DEFAULT_SCATTERING{ 0.0f }; const MaterialKey::OpacityMapMode Material::DEFAULT_OPACITY_MAP_MODE{ MaterialKey::OPACITY_MAP_OPAQUE }; const float Material::DEFAULT_OPACITY_CUTOFF { 0.5f }; - +const MaterialKey::CullFaceMode Material::DEFAULT_CULL_FACE_MODE { MaterialKey::CULL_BACK }; std::string MaterialKey::getOpacityMapModeName(OpacityMapMode mode) { const std::string names[3] = { "OPACITY_MAP_OPAQUE", "OPACITY_MAP_MASK", "OPACITY_MAP_BLEND" }; @@ -44,6 +44,21 @@ bool MaterialKey::getOpacityMapModeFromName(const std::string& modeName, Materia return false; } +std::string MaterialKey::getCullFaceModeName(CullFaceMode mode) { + const std::string names[3] = { "CULL_NONE", "CULL_FRONT", "CULL_BACK" }; + return names[mode]; +} + +bool MaterialKey::getCullFaceModeFromName(const std::string& modeName, CullFaceMode& mode) { + for (int i = CULL_NONE; i < NUM_CULL_FACE_MODES; i++) { + mode = (CullFaceMode)i; + if (modeName == getCullFaceModeName(mode)) { + return true; + } + } + return false; +} + const std::string Material::HIFI_PBR { "hifi_pbr" }; const std::string Material::HIFI_SHADER_SIMPLE { "hifi_shader_simple" }; @@ -67,6 +82,7 @@ Material::Material(const Material& material) : _texcoordTransforms(material._texcoordTransforms), _lightmapParams(material._lightmapParams), _materialParams(material._materialParams), + _cullFaceMode(material._cullFaceMode), _textureMaps(material._textureMaps), _defaultFallthrough(material._defaultFallthrough), _propertyFallthroughs(material._propertyFallthroughs) @@ -89,6 +105,7 @@ Material& Material::operator=(const Material& material) { _texcoordTransforms = material._texcoordTransforms; _lightmapParams = material._lightmapParams; _materialParams = material._materialParams; + _cullFaceMode = material._cullFaceMode; _textureMaps = material._textureMaps; _defaultFallthrough = material._defaultFallthrough; @@ -144,7 +161,7 @@ void Material::setOpacityMapMode(MaterialKey::OpacityMapMode opacityMapMode) { _key.setOpacityMapMode(opacityMapMode); } -MaterialKey::OpacityMapMode Material::getOpacityMapMode() const { +MaterialKey::OpacityMapMode Material::getOpacityMapMode() const { return _key.getOpacityMapMode(); } diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index 48ab8151c5..7a411e5b2c 100755 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -83,6 +83,16 @@ public: // find the enum value from a string, return true if match found static bool getOpacityMapModeFromName(const std::string& modeName, OpacityMapMode& mode); + enum CullFaceMode { + CULL_NONE = 0, + CULL_FRONT, + CULL_BACK, + + NUM_CULL_FACE_MODES + }; + static std::string getCullFaceModeName(CullFaceMode mode); + static bool getCullFaceModeFromName(const std::string& modeName, CullFaceMode& mode); + // The signature is the Flags Flags _flags; @@ -349,6 +359,10 @@ public: void setOpacityCutoff(float opacityCutoff); float getOpacityCutoff() const { return _opacityCutoff; } + static const MaterialKey::CullFaceMode DEFAULT_CULL_FACE_MODE; + void setCullFaceMode(MaterialKey::CullFaceMode cullFaceMode) { _cullFaceMode = cullFaceMode; } + MaterialKey::CullFaceMode getCullFaceMode() const { return _cullFaceMode; } + void setUnlit(bool value); bool isUnlit() const { return _key.isUnlit(); } @@ -403,6 +417,7 @@ public: TEXCOORDTRANSFORM1, LIGHTMAP_PARAMS, MATERIAL_PARAMS, + CULL_FACE_MODE, NUM_TOTAL_FLAGS }; @@ -436,6 +451,7 @@ private: std::array _texcoordTransforms; glm::vec2 _lightmapParams { 0.0, 1.0 }; glm::vec2 _materialParams { 0.0, 1.0 }; + MaterialKey::CullFaceMode _cullFaceMode { DEFAULT_CULL_FACE_MODE }; TextureMaps _textureMaps; bool _defaultFallthrough { false }; @@ -524,6 +540,9 @@ public: graphics::MaterialKey getMaterialKey() const { return graphics::MaterialKey(_schemaBuffer.get()._key); } const gpu::TextureTablePointer& getTextureTable() const { return _textureTable; } + void setCullFaceMode(graphics::MaterialKey::CullFaceMode cullFaceMode) { _cullFaceMode = cullFaceMode; } + graphics::MaterialKey::CullFaceMode getCullFaceMode() const { return _cullFaceMode; } + void setNeedsUpdate(bool needsUpdate) { _needsUpdate = needsUpdate; } void setTexturesLoading(bool value) { _texturesLoading = value; } void setInitialized() { _initialized = true; } @@ -536,6 +555,7 @@ public: private: gpu::BufferView _schemaBuffer; + graphics::MaterialKey::CullFaceMode _cullFaceMode { graphics::Material::DEFAULT_CULL_FACE_MODE }; gpu::TextureTablePointer _textureTable { std::make_shared() }; bool _needsUpdate { false }; bool _texturesLoading { false }; diff --git a/libraries/procedural/src/procedural/ProceduralMaterialCache.cpp b/libraries/procedural/src/procedural/ProceduralMaterialCache.cpp index b9611358e7..a97cb294b4 100644 --- a/libraries/procedural/src/procedural/ProceduralMaterialCache.cpp +++ b/libraries/procedural/src/procedural/ProceduralMaterialCache.cpp @@ -143,7 +143,7 @@ NetworkMaterialResource::ParsedMaterials NetworkMaterialResource::parseJSONMater * @property {string} opacityMap - The URL of the opacity texture image. Set the value the same as the albedoMap * value for transparency. * "hifi_pbr" model only. - * @property {number|string} opacityMapMode - The mode defining the interpretation of the opacity map. Values can be: + * @property {string} opacityMapMode - The mode defining the interpretation of the opacity map. Values can be: * "OPACITY_MAP_OPAQUE" for ignoring the opacity map information. * "OPACITY_MAP_MASK" for using the opacity map as a mask, where only the texel greater than opacityCutoff are visible and rendered opaque. * "OPACITY_MAP_BLEND" for using the opacity map for alpha blending the material surface with the background. @@ -151,6 +151,13 @@ NetworkMaterialResource::ParsedMaterials NetworkMaterialResource::parseJSONMater * @property {number|string} opacityCutoff - The opacity cutoff threshold used to determine the opaque texels of the Opacity map * when opacityMapMode is "OPACITY_MAP_MASK", range 0.01.0. * Set to "fallthrough" to fall through to the material below. "hifi_pbr" model only. + * @property {string} cullFaceMode - The mode defining which side of the geometry should be rendered. Values can be: + *

+ * Set to "fallthrough" to fall through to the material below. "hifi_pbr" model only. * @property {string} roughnessMap - The URL of the roughness texture image. You can use this or glossMap, but not * both. * Set to "fallthrough" to fall through to the material below. "hifi_pbr" model only. @@ -285,7 +292,20 @@ std::pair> NetworkMaterialResource } else if (value.isDouble()) { material->setOpacityCutoff(value.toDouble()); } - } else if (key == "scattering") { + } else if (key == "cullFaceMode") { + auto value = materialJSON.value(key); + if (value.isString()) { + auto valueString = value.toString(); + if (valueString == FALLTHROUGH) { + material->setPropertyDoesFallthrough(graphics::Material::ExtraFlagBit::CULL_FACE_MODE); + } else { + graphics::MaterialKey::CullFaceMode mode; + if (graphics::MaterialKey::getCullFaceModeFromName(valueString.toStdString(), mode)) { + material->setCullFaceMode(mode); + } + } + } + } else if (key == "scattering") { auto value = materialJSON.value(key); if (value.isString() && value.toString() == FALLTHROUGH) { material->setPropertyDoesFallthrough(graphics::MaterialKey::FlagBit::SCATTERING_VAL_BIT); diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 997f87b8d6..ea66ac19ec 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -723,7 +723,7 @@ gpu::ShaderPointer GeometryCache::_forwardUnlitShader; gpu::ShaderPointer GeometryCache::_forwardSimpleFadeShader; gpu::ShaderPointer GeometryCache::_forwardUnlitFadeShader; -std::map, render::ShapePipelinePointer> GeometryCache::_shapePipelines; +std::map, render::ShapePipelinePointer> GeometryCache::_shapePipelines; GeometryCache::GeometryCache() : _nextID(0) { @@ -776,15 +776,18 @@ void GeometryCache::initializeShapePipelines() { bool transparent = i & 1; bool unlit = i & 2; bool forward = i & 4; - _shapePipelines[std::make_tuple(transparent, unlit, forward)] = getShapePipeline(false, transparent, true, unlit, false, forward); + for (int cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_NONE; cullFaceMode < graphics::MaterialKey::CullFaceMode::NUM_CULL_FACE_MODES; cullFaceMode++) { + auto cullMode = (graphics::MaterialKey::CullFaceMode)cullFaceMode; + _shapePipelines[std::make_tuple(transparent, unlit, forward, cullMode)] = getShapePipeline(false, transparent, unlit, false, forward, cullMode); + } } } } -render::ShapePipelinePointer GeometryCache::getShapePipeline(bool textured, bool transparent, bool culled, - bool unlit, bool depthBias, bool forward) { +render::ShapePipelinePointer GeometryCache::getShapePipeline(bool textured, bool transparent, bool unlit, bool depthBias, bool forward, + graphics::MaterialKey::CullFaceMode cullFaceMode) { - return std::make_shared(getSimplePipeline(textured, transparent, culled, unlit, depthBias, false, true, forward), nullptr, + return std::make_shared(getSimplePipeline(textured, transparent, unlit, depthBias, false, true, forward, cullFaceMode), nullptr, [](const render::ShapePipeline& pipeline, gpu::Batch& batch, render::Args* args) { batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); DependencyManager::get()->setupKeyLightBatch(args, batch); @@ -792,12 +795,12 @@ render::ShapePipelinePointer GeometryCache::getShapePipeline(bool textured, bool ); } -render::ShapePipelinePointer GeometryCache::getFadingShapePipeline(bool textured, bool transparent, bool culled, - bool unlit, bool depthBias, bool forward) { +render::ShapePipelinePointer GeometryCache::getFadingShapePipeline(bool textured, bool transparent, bool unlit, bool depthBias, bool forward, + graphics::MaterialKey::CullFaceMode cullFaceMode) { auto fadeEffect = DependencyManager::get(); auto fadeBatchSetter = fadeEffect->getBatchSetter(); auto fadeItemSetter = fadeEffect->getItemUniformSetter(); - return std::make_shared(getSimplePipeline(textured, transparent, culled, unlit, depthBias, true, true, forward), nullptr, + return std::make_shared(getSimplePipeline(textured, transparent, unlit, depthBias, true, true, forward, cullFaceMode), nullptr, [fadeBatchSetter, fadeItemSetter](const render::ShapePipeline& shapePipeline, gpu::Batch& batch, render::Args* args) { batch.setResourceTexture(gr::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); fadeBatchSetter(shapePipeline, batch, args); @@ -2049,54 +2052,60 @@ void GeometryCache::useGridPipeline(gpu::Batch& batch, GridBuffer gridBuffer, bo class SimpleProgramKey { public: enum FlagBit { - IS_TEXTURED_FLAG = 0, - IS_TRANSPARENT_FLAG, - IS_CULLED_FLAG, - IS_UNLIT_FLAG, - HAS_DEPTH_BIAS_FLAG, - IS_FADING_FLAG, - IS_ANTIALIASED_FLAG, - IS_FORWARD_FLAG, + IS_TEXTURED_BIT = 0, + IS_TRANSPARENT_BIT, + IS_UNLIT_BIT, + IS_DEPTH_BIASED_BIT, + IS_FADING_BIT, + IS_ANTIALIASED_BIT, + IS_FORWARD_BIT, + IS_CULL_FACE_NONE_BIT, // if neither of these are set, we're CULL_FACE_BACK + IS_CULL_FACE_FRONT_BIT, NUM_FLAGS, }; + typedef std::bitset Flags; - enum Flag { - IS_TEXTURED = (1 << IS_TEXTURED_FLAG), - IS_TRANSPARENT = (1 << IS_TRANSPARENT_FLAG), - IS_CULLED = (1 << IS_CULLED_FLAG), - IS_UNLIT = (1 << IS_UNLIT_FLAG), - HAS_DEPTH_BIAS = (1 << HAS_DEPTH_BIAS_FLAG), - IS_FADING = (1 << IS_FADING_FLAG), - IS_ANTIALIASED = (1 << IS_ANTIALIASED_FLAG), - IS_FORWARD = (1 << IS_FORWARD_FLAG), - }; - typedef unsigned short Flags; - - bool isFlag(short flagNum) const { return bool((_flags & flagNum) != 0); } - - bool isTextured() const { return isFlag(IS_TEXTURED); } - bool isTransparent() const { return isFlag(IS_TRANSPARENT); } - bool isCulled() const { return isFlag(IS_CULLED); } - bool isUnlit() const { return isFlag(IS_UNLIT); } - bool hasDepthBias() const { return isFlag(HAS_DEPTH_BIAS); } - bool isFading() const { return isFlag(IS_FADING); } - bool isAntiAliased() const { return isFlag(IS_ANTIALIASED); } - bool isForward() const { return isFlag(IS_FORWARD); } + bool isTextured() const { return _flags[IS_TEXTURED_BIT]; } + bool isTransparent() const { return _flags[IS_TRANSPARENT_BIT]; } + bool isUnlit() const { return _flags[IS_UNLIT_BIT]; } + bool hasDepthBias() const { return _flags[IS_DEPTH_BIASED_BIT]; } + bool isFading() const { return _flags[IS_FADING_BIT]; } + bool isAntiAliased() const { return _flags[IS_ANTIALIASED_BIT]; } + bool isForward() const { return _flags[IS_FORWARD_BIT]; } + bool isCullFaceNone() const { return _flags[IS_CULL_FACE_NONE_BIT]; } + bool isCullFaceFront() const { return _flags[IS_CULL_FACE_FRONT_BIT]; } Flags _flags = 0; -#if defined(__clang__) - __attribute__((unused)) -#endif - short _spare = 0; // Padding - int getRaw() const { return *reinterpret_cast(this); } + unsigned long getRaw() const { return _flags.to_ulong(); } + SimpleProgramKey(bool textured = false, bool transparent = false, bool unlit = false, bool depthBias = false, bool fading = false, + bool isAntiAliased = true, bool forward = false, graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CULL_BACK) { + _flags.set(IS_TEXTURED_BIT, textured); + _flags.set(IS_TRANSPARENT_BIT, transparent); + _flags.set(IS_UNLIT_BIT, unlit); + _flags.set(IS_DEPTH_BIASED_BIT, depthBias); + _flags.set(IS_FADING_BIT, fading); + _flags.set(IS_ANTIALIASED_BIT, isAntiAliased); + _flags.set(IS_FORWARD_BIT, forward); - SimpleProgramKey(bool textured = false, bool transparent = false, bool culled = true, - bool unlit = false, bool depthBias = false, bool fading = false, bool isAntiAliased = true, bool forward = false) { - _flags = (textured ? IS_TEXTURED : 0) | (transparent ? IS_TRANSPARENT : 0) | (culled ? IS_CULLED : 0) | - (unlit ? IS_UNLIT : 0) | (depthBias ? HAS_DEPTH_BIAS : 0) | (fading ? IS_FADING : 0) | (isAntiAliased ? IS_ANTIALIASED : 0) | (forward ? IS_FORWARD : 0); + switch (cullFaceMode) { + case graphics::MaterialKey::CullFaceMode::CULL_NONE: + _flags.set(IS_CULL_FACE_NONE_BIT); + _flags.reset(IS_CULL_FACE_FRONT_BIT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_FRONT: + _flags.reset(IS_CULL_FACE_NONE_BIT); + _flags.set(IS_CULL_FACE_FRONT_BIT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_BACK: + _flags.reset(IS_CULL_FACE_NONE_BIT); + _flags.reset(IS_CULL_FACE_FRONT_BIT); + break; + default: + break; + } } SimpleProgramKey(int bitmask) : _flags(bitmask) {} @@ -2141,8 +2150,9 @@ gpu::PipelinePointer GeometryCache::getWebBrowserProgram(bool transparent, bool return _webPipelines[{ transparent, forward }]; } -void GeometryCache::bindSimpleProgram(gpu::Batch& batch, bool textured, bool transparent, bool culled, bool unlit, bool depthBiased, bool isAntiAliased, bool forward) { - batch.setPipeline(getSimplePipeline(textured, transparent, culled, unlit, depthBiased, false, isAntiAliased, forward)); +void GeometryCache::bindSimpleProgram(gpu::Batch& batch, bool textured, bool transparent, bool unlit, bool depthBiased, bool isAntiAliased, + bool forward, graphics::MaterialKey::CullFaceMode cullFaceMode) { + batch.setPipeline(getSimplePipeline(textured, transparent, unlit, depthBiased, false, isAntiAliased, forward, cullFaceMode)); // If not textured, set a default albedo map if (!textured) { @@ -2151,8 +2161,9 @@ void GeometryCache::bindSimpleProgram(gpu::Batch& batch, bool textured, bool tra } } -gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transparent, bool culled, bool unlit, bool depthBiased, bool fading, bool isAntiAliased, bool forward) { - SimpleProgramKey config { textured, transparent, culled, unlit, depthBiased, fading, isAntiAliased, forward }; +gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transparent, bool unlit, bool depthBiased, bool fading, bool isAntiAliased, + bool forward, graphics::MaterialKey::CullFaceMode cullFaceMode) { + SimpleProgramKey config { textured, transparent, unlit, depthBiased, fading, isAntiAliased, forward, cullFaceMode }; // If the pipeline already exists, return it auto it = _simplePrograms.find(config); @@ -2189,10 +2200,12 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp // If the pipeline did not exist, make it auto state = std::make_shared(); - if (config.isCulled()) { - state->setCullMode(gpu::State::CULL_BACK); - } else { + if (config.isCullFaceNone()) { state->setCullMode(gpu::State::CULL_NONE); + } else if (config.isCullFaceFront()) { + state->setCullMode(gpu::State::CULL_FRONT); + } else { + state->setCullMode(gpu::State::CULL_BACK); } state->setDepthTest(true, true, gpu::LESS_EQUAL); if (config.hasDepthBias()) { diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index b474e6c712..179d49c076 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -162,18 +162,19 @@ public: static const int UNKNOWN_ID; // Bind the pipeline and get the state to render static geometry - void bindSimpleProgram(gpu::Batch& batch, bool textured = false, bool transparent = false, bool culled = true, - bool unlit = false, bool depthBias = false, bool isAntiAliased = true, bool forward = false); + void bindSimpleProgram(gpu::Batch& batch, bool textured = false, bool transparent = false, bool unlit = false, bool depthBias = false, + bool isAntiAliased = true, bool forward = false, graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_BACK); // Get the pipeline to render static geometry - static gpu::PipelinePointer getSimplePipeline(bool textured = false, bool transparent = false, bool culled = true, - bool unlit = false, bool depthBias = false, bool fading = false, bool isAntiAliased = true, bool forward = false); + static gpu::PipelinePointer getSimplePipeline(bool textured = false, bool transparent = false, bool unlit = false, bool depthBias = false, + bool fading = false, bool isAntiAliased = true, bool forward = false, graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_BACK); void bindWebBrowserProgram(gpu::Batch& batch, bool transparent, bool forward); gpu::PipelinePointer getWebBrowserProgram(bool transparent, bool forward); static std::map, gpu::PipelinePointer> _webPipelines; static void initializeShapePipelines(); - render::ShapePipelinePointer getShapePipelinePointer(bool transparent, bool unlit, bool forward) { return _shapePipelines[std::make_tuple(transparent, unlit, forward)]; } + render::ShapePipelinePointer getShapePipelinePointer(bool transparent, bool unlit, bool forward, + graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CULL_BACK) { return _shapePipelines[std::make_tuple(transparent, unlit, forward, cullFaceMode)]; } // Static (instanced) geometry void renderShapeInstances(gpu::Batch& batch, Shape shape, size_t count, gpu::BufferPointer& colorBuffer); @@ -456,13 +457,13 @@ private: static gpu::ShaderPointer _forwardSimpleFadeShader; static gpu::ShaderPointer _forwardUnlitFadeShader; - static std::map, render::ShapePipelinePointer> _shapePipelines; + static std::map, render::ShapePipelinePointer> _shapePipelines; static QHash _simplePrograms; - static render::ShapePipelinePointer getShapePipeline(bool textured = false, bool transparent = false, bool culled = true, - bool unlit = false, bool depthBias = false, bool forward = false); - static render::ShapePipelinePointer getFadingShapePipeline(bool textured = false, bool transparent = false, bool culled = true, - bool unlit = false, bool depthBias = false, bool forward = false); + static render::ShapePipelinePointer getShapePipeline(bool textured = false, bool transparent = false, bool unlit = false, + bool depthBias = false, bool forward = false, graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_BACK); + static render::ShapePipelinePointer getFadingShapePipeline(bool textured = false, bool transparent = false, bool unlit = false, + bool depthBias = false, bool forward = false, graphics::MaterialKey::CullFaceMode cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_BACK); }; #endif // hifi_GeometryCache_h diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index fb1f400a70..947c53d546 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -143,6 +143,9 @@ ShapeKey MeshPartPayload::getShapeKey() const { if (drawMaterialKey.isUnlit()) { builder.withUnlit(); } + if (material) { + builder.withCullFaceMode(material->getCullFaceMode()); + } } return builder.build(); @@ -434,6 +437,9 @@ void ModelMeshPartPayload::setShapeKey(bool invalidateShapeKey, PrimitiveMode pr if (isUnlit) { builder.withUnlit(); } + if (material) { + builder.withCullFaceMode(material->getCullFaceMode()); + } } _shapeKey = builder.build(); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 3a2e450d4b..182bc535bf 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1040,7 +1040,7 @@ void Model::renderDebugMeshBoxes(gpu::Batch& batch, bool forward) { Transform meshToWorld(meshToWorldMatrix); batch.setModelTransform(meshToWorld); - DependencyManager::get()->bindSimpleProgram(batch, false, false, false, true, true, forward); + DependencyManager::get()->bindSimpleProgram(batch, false, false, true, true, forward, graphics::MaterialKey::CULL_NONE); for (auto& meshTriangleSets : _modelSpaceMeshTriangleSets) { for (auto &partTriangleSet : meshTriangleSets) { diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index ff2e3610c2..7f1ca4bd71 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -259,46 +259,44 @@ void addPlumberPipeline(ShapePlumber& plumber, gpu::ShaderPointer program = gpu::Shader::createProgram(programId); - for (int i = 0; i < 8; i++) { - bool isCulled = (i & 1); - bool isBiased = (i & 2); - bool isWireframed = (i & 4); + for (int i = 0; i < 4; i++) { + bool isBiased = (i & 1); + bool isWireframed = (i & 2); + for (int cullFaceMode = graphics::MaterialKey::CullFaceMode::CULL_NONE; cullFaceMode < graphics::MaterialKey::CullFaceMode::NUM_CULL_FACE_MODES; cullFaceMode++) { + auto state = std::make_shared(); + key.isTranslucent() ? PrepareStencil::testMask(*state) : PrepareStencil::testMaskDrawShape(*state); - auto state = std::make_shared(); - key.isTranslucent() ? PrepareStencil::testMask(*state) : PrepareStencil::testMaskDrawShape(*state); + // Depth test depends on transparency + state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); + state->setBlendFunction(key.isTranslucent(), + gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, + gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); - // Depth test depends on transparency - state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); - state->setBlendFunction(key.isTranslucent(), - gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, - gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + ShapeKey::Builder builder(key); + builder.withCullFaceMode((graphics::MaterialKey::CullFaceMode)cullFaceMode); + state->setCullMode((gpu::State::CullMode)cullFaceMode); + if (isWireframed) { + builder.withWireframe(); + state->setFillMode(gpu::State::FILL_LINE); + } + if (isBiased) { + builder.withDepthBias(); + state->setDepthBias(1.0f); + state->setDepthBiasSlopeScale(1.0f); + } - ShapeKey::Builder builder(key); - if (!isCulled) { - builder.withoutCullFace(); + auto baseBatchSetter = (forceLightBatchSetter || key.isTranslucent()) ? &lightBatchSetter : &batchSetter; + render::ShapePipeline::BatchSetter finalBatchSetter; + if (extraBatchSetter) { + finalBatchSetter = [baseBatchSetter, extraBatchSetter](const ShapePipeline& pipeline, gpu::Batch& batch, render::Args* args) { + baseBatchSetter(pipeline, batch, args); + extraBatchSetter(pipeline, batch, args); + }; + } else { + finalBatchSetter = baseBatchSetter; + } + plumber.addPipeline(builder.build(), program, state, finalBatchSetter, itemSetter); } - state->setCullMode(isCulled ? gpu::State::CULL_BACK : gpu::State::CULL_NONE); - if (isWireframed) { - builder.withWireframe(); - state->setFillMode(gpu::State::FILL_LINE); - } - if (isBiased) { - builder.withDepthBias(); - state->setDepthBias(1.0f); - state->setDepthBiasSlopeScale(1.0f); - } - - auto baseBatchSetter = (forceLightBatchSetter || key.isTranslucent()) ? &lightBatchSetter : &batchSetter; - render::ShapePipeline::BatchSetter finalBatchSetter; - if (extraBatchSetter) { - finalBatchSetter = [baseBatchSetter, extraBatchSetter](const ShapePipeline& pipeline, gpu::Batch& batch, render::Args* args) { - baseBatchSetter(pipeline, batch, args); - extraBatchSetter(pipeline, batch, args); - }; - } else { - finalBatchSetter = baseBatchSetter; - } - plumber.addPipeline(builder.build(), program, state, finalBatchSetter, itemSetter); } } @@ -644,6 +642,12 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial wasSet = true; } break; + case graphics::Material::CULL_FACE_MODE: + if (!fallthrough) { + multiMaterial.setCullFaceMode(material->getCullFaceMode()); + wasSet = true; + } + break; default: break; } @@ -685,6 +689,8 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial case graphics::Material::MATERIAL_PARAMS: // these are initialized to the correct default values in Schema() break; + case graphics::Material::CULL_FACE_MODE: + multiMaterial.setCullFaceMode(graphics::Material::DEFAULT_CULL_FACE_MODE); case graphics::MaterialKey::ALBEDO_MAP_BIT: if (schemaKey.isAlbedoMap()) { drawMaterialTextures->setTexture(gr::Texture::MaterialAlbedo, textureCache->getWhiteTexture()); diff --git a/libraries/render/src/render/ShapePipeline.h b/libraries/render/src/render/ShapePipeline.h index cf41c85dd9..04b9919140 100644 --- a/libraries/render/src/render/ShapePipeline.h +++ b/libraries/render/src/render/ShapePipeline.h @@ -15,6 +15,7 @@ #include #include +#include #include "Args.h" @@ -34,8 +35,9 @@ public: DUAL_QUAT_SKINNED, DEPTH_BIAS, WIREFRAME, - NO_CULL_FACE, FADE, + CULL_FACE_NONE, // if neither of these are set, we're CULL_FACE_BACK + CULL_FACE_FRONT, OWN_PIPELINE, INVALID, @@ -81,9 +83,29 @@ public: Builder& withDualQuatSkinned() { _flags.set(DUAL_QUAT_SKINNED); return (*this); } Builder& withDepthBias() { _flags.set(DEPTH_BIAS); return (*this); } Builder& withWireframe() { _flags.set(WIREFRAME); return (*this); } - Builder& withoutCullFace() { _flags.set(NO_CULL_FACE); return (*this); } Builder& withFade() { _flags.set(FADE); return (*this); } + Builder& withoutCullFace() { return withCullFaceMode(graphics::MaterialKey::CullFaceMode::CULL_NONE); } + Builder& withCullFaceMode(graphics::MaterialKey::CullFaceMode cullFaceMode) { + switch (cullFaceMode) { + case graphics::MaterialKey::CullFaceMode::CULL_NONE: + _flags.set(CULL_FACE_NONE); + _flags.reset(CULL_FACE_FRONT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_FRONT: + _flags.reset(CULL_FACE_NONE); + _flags.set(CULL_FACE_FRONT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_BACK: + _flags.reset(CULL_FACE_NONE); + _flags.reset(CULL_FACE_FRONT); + break; + default: + break; + } + return (*this); + } + Builder& withOwnPipeline() { _flags.set(OWN_PIPELINE); return (*this); } Builder& invalidate() { _flags.set(INVALID); return (*this); } @@ -137,8 +159,27 @@ public: Builder& withWireframe() { _flags.set(WIREFRAME); _mask.set(WIREFRAME); return (*this); } Builder& withoutWireframe() { _flags.reset(WIREFRAME); _mask.set(WIREFRAME); return (*this); } - Builder& withCullFace() { _flags.reset(NO_CULL_FACE); _mask.set(NO_CULL_FACE); return (*this); } - Builder& withoutCullFace() { _flags.set(NO_CULL_FACE); _mask.set(NO_CULL_FACE); return (*this); } + Builder& withCullFaceMode(graphics::MaterialKey::CullFaceMode cullFaceMode) { + switch (cullFaceMode) { + case graphics::MaterialKey::CullFaceMode::CULL_NONE: + _flags.set(CULL_FACE_NONE); + _flags.reset(CULL_FACE_FRONT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_FRONT: + _flags.reset(CULL_FACE_NONE); + _flags.set(CULL_FACE_FRONT); + break; + case graphics::MaterialKey::CullFaceMode::CULL_BACK: + _flags.reset(CULL_FACE_NONE); + _flags.reset(CULL_FACE_FRONT); + break; + default: + break; + } + _mask.set(CULL_FACE_NONE); + _mask.set(CULL_FACE_FRONT); + return (*this); + } Builder& withFade() { _flags.set(FADE); _mask.set(FADE); return (*this); } Builder& withoutFade() { _flags.reset(FADE); _mask.set(FADE); return (*this); } @@ -168,7 +209,7 @@ public: bool isDualQuatSkinned() const { return _flags[DUAL_QUAT_SKINNED]; } bool isDepthBiased() const { return _flags[DEPTH_BIAS]; } bool isWireframe() const { return _flags[WIREFRAME]; } - bool isCullFace() const { return !_flags[NO_CULL_FACE]; } + bool isCullFace() const { return !_flags[CULL_FACE_NONE] && !_flags[CULL_FACE_FRONT]; } bool isFaded() const { return _flags[FADE]; } bool hasOwnPipeline() const { return _flags[OWN_PIPELINE]; } From 398562321da5887d2d13edd20c4b271b2efc1be7 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 29 Apr 2019 11:07:36 -0700 Subject: [PATCH 096/396] fix wearables not disappearing with avatar --- .../src/avatars-renderer/Avatar.cpp | 19 ++++++++++++++++++- .../src/avatars-renderer/Avatar.h | 2 +- libraries/render/src/render/Item.cpp | 6 +++++- libraries/render/src/render/Item.h | 8 +++++++- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 8ceafbf5a1..ce559a7729 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -2121,6 +2121,7 @@ void Avatar::updateAttachmentRenderIDs() { void Avatar::updateDescendantRenderIDs() { _subItemLock.withWriteLock([&] { + auto oldDescendantRenderIDs = _descendantRenderIDs; _descendantRenderIDs.clear(); auto entityTreeRenderer = DependencyManager::get(); EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr; @@ -2135,13 +2136,29 @@ void Avatar::updateDescendantRenderIDs() { render::ItemIDs renderableSubItems; uint32_t numRenderableSubItems = renderer->metaFetchMetaSubItems(renderableSubItems); if (numRenderableSubItems > 0) { - _descendantRenderIDs.insert(_descendantRenderIDs.end(), renderableSubItems.begin(), renderableSubItems.end()); + for (auto& renderID : renderableSubItems) { + _descendantRenderIDs.insert(renderID); + oldDescendantRenderIDs.erase(renderID); + } } } } } }); }); + + render::Transaction transaction; + for (auto& oldDescendantRenderID : oldDescendantRenderIDs) { + transaction.updateItem(oldDescendantRenderID, [](render::PayloadProxyInterface& self) { + self.setOverrideSubMetaCulled(false); + }); + } + for (auto& descendantRenderIDs : _descendantRenderIDs) { + transaction.updateItem(descendantRenderIDs, [](render::PayloadProxyInterface& self) { + self.setOverrideSubMetaCulled(true); + }); + } + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); } }); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 031b2f1309..235a04f109 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -781,7 +781,7 @@ protected: void updateAttachmentRenderIDs(); render::ItemIDs _attachmentRenderIDs; void updateDescendantRenderIDs(); - render::ItemIDs _descendantRenderIDs; + render::ItemIDSet _descendantRenderIDs; uint32_t _lastAncestorChainRenderableVersion { 0 }; }; diff --git a/libraries/render/src/render/Item.cpp b/libraries/render/src/render/Item.cpp index 532964777f..d5dde7f86b 100644 --- a/libraries/render/src/render/Item.cpp +++ b/libraries/render/src/render/Item.cpp @@ -123,7 +123,11 @@ namespace render { if (!payload) { return ItemKey::Builder::opaqueShape().withTypeMeta(); } - return payload->getKey(); + if (payload->overrideSubMetaCulled()) { + return ItemKey::Builder(payload->getKey()).withSubMetaCulled(); + } else { + return payload->getKey(); + } } template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload) { diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index 6b66e844c0..e28a88f6dd 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -614,7 +614,13 @@ public: virtual ShapeKey getShapeKey() = 0; virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; - virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0; + virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) = 0; + + bool overrideSubMetaCulled() const { return _overrideSubMetaCulled; } + void setOverrideSubMetaCulled(bool overrideSubMetaCulled) { _overrideSubMetaCulled = overrideSubMetaCulled; } + +protected: + bool _overrideSubMetaCulled { false }; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); From 1736252f0de6ab85bb8f5f1df0bc6b0a9bc64416 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 30 Apr 2019 10:31:09 -0700 Subject: [PATCH 097/396] trying and failing to fix models --- .../src/avatars-renderer/Avatar.cpp | 35 +++++++++---------- .../src/avatars-renderer/Avatar.h | 3 +- .../src/RenderableEntityItem.cpp | 14 ++++---- .../src/RenderableEntityItem.h | 11 ++++++ .../src/RenderableMaterialEntityItem.cpp | 3 +- .../src/RenderableModelEntityItem.cpp | 12 ++++++- .../src/RenderableModelEntityItem.h | 1 + .../RenderableParticleEffectEntityItem.cpp | 14 +++++--- .../src/RenderablePolyLineEntityItem.cpp | 11 ++++-- .../src/RenderablePolyVoxEntityItem.cpp | 10 ++++++ .../src/RenderablePolyVoxEntityItem.h | 2 +- libraries/entities/src/EntityItem.cpp | 11 ++++++ libraries/entities/src/EntityItem.h | 5 ++- .../render-utils/src/MeshPartPayload.cpp | 8 +++++ libraries/render-utils/src/MeshPartPayload.h | 8 ++--- libraries/render-utils/src/Model.cpp | 16 ++++++++- libraries/render-utils/src/Model.h | 3 ++ libraries/render/src/render/Item.cpp | 6 +--- libraries/render/src/render/Item.h | 8 +---- 19 files changed, 126 insertions(+), 55 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index ce559a7729..868d49bb5c 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -2121,7 +2121,8 @@ void Avatar::updateAttachmentRenderIDs() { void Avatar::updateDescendantRenderIDs() { _subItemLock.withWriteLock([&] { - auto oldDescendantRenderIDs = _descendantRenderIDs; + auto oldRenderingDescendantEntityIDs = _renderingDescendantEntityIDs; + _renderingDescendantEntityIDs.clear(); _descendantRenderIDs.clear(); auto entityTreeRenderer = DependencyManager::get(); EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr; @@ -2131,34 +2132,30 @@ void Avatar::updateDescendantRenderIDs() { if (object && object->getNestableType() == NestableType::Entity) { EntityItemPointer entity = std::static_pointer_cast(object); if (entity->isVisible()) { - auto renderer = entityTreeRenderer->renderableForEntityId(object->getID()); + auto id = object->getID(); + _renderingDescendantEntityIDs.insert(id); + oldRenderingDescendantEntityIDs.erase(id); + entity->setCullWithParent(true); + + auto renderer = entityTreeRenderer->renderableForEntityId(id); if (renderer) { render::ItemIDs renderableSubItems; uint32_t numRenderableSubItems = renderer->metaFetchMetaSubItems(renderableSubItems); if (numRenderableSubItems > 0) { - for (auto& renderID : renderableSubItems) { - _descendantRenderIDs.insert(renderID); - oldDescendantRenderIDs.erase(renderID); - } + _descendantRenderIDs.insert(_descendantRenderIDs.end(), renderableSubItems.begin(), renderableSubItems.end()); } } } } }); - }); - render::Transaction transaction; - for (auto& oldDescendantRenderID : oldDescendantRenderIDs) { - transaction.updateItem(oldDescendantRenderID, [](render::PayloadProxyInterface& self) { - self.setOverrideSubMetaCulled(false); - }); - } - for (auto& descendantRenderIDs : _descendantRenderIDs) { - transaction.updateItem(descendantRenderIDs, [](render::PayloadProxyInterface& self) { - self.setOverrideSubMetaCulled(true); - }); - } - AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + for (auto& oldRenderingDescendantEntityID : oldRenderingDescendantEntityIDs) { + auto entity = entityTree->findEntityByEntityItemID(oldRenderingDescendantEntityID); + if (entity) { + entity->setCullWithParent(false); + } + } + }); } }); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 235a04f109..6a740a793d 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -781,7 +781,8 @@ protected: void updateAttachmentRenderIDs(); render::ItemIDs _attachmentRenderIDs; void updateDescendantRenderIDs(); - render::ItemIDSet _descendantRenderIDs; + render::ItemIDs _descendantRenderIDs; + std::unordered_set _renderingDescendantEntityIDs; uint32_t _lastAncestorChainRenderableVersion { 0 }; }; diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index fb3d2f1bf5..a1c5a5b432 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -168,19 +168,20 @@ render::hifi::Layer EntityRenderer::getHifiRenderLayer() const { } ItemKey EntityRenderer::getKey() { - ItemKey::Builder builder = ItemKey::Builder().withTypeShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); - + auto builder = ItemKey::Builder().withTypeShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); if (isTransparent()) { builder.withTransparent(); - } else if (_canCastShadow) { + } + + if (_canCastShadow) { builder.withShadowCaster(); } - if (!_visible) { - builder.withInvisible(); + if (_cullWithParent) { + builder.withSubMetaCulled(); } - return builder; + return builder.build(); } uint32_t EntityRenderer::metaFetchMetaSubItems(ItemIDs& subItems) const { @@ -419,6 +420,7 @@ void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transa setRenderLayer(entity->getRenderLayer()); setPrimitiveMode(entity->getPrimitiveMode()); _canCastShadow = entity->getCanCastShadow(); + setCullWithParent(entity->getCullWithParent()); _cauterized = entity->getCauterized(); entity->setNeedsRenderUpdate(false); }); diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h index d11f6dd6f4..227eb6a018 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.h +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -108,6 +108,16 @@ protected: virtual void setIsVisibleInSecondaryCamera(bool value) { _isVisibleInSecondaryCamera = value; } virtual void setRenderLayer(RenderLayer value) { _renderLayer = value; } virtual void setPrimitiveMode(PrimitiveMode value) { _primitiveMode = value; } + virtual void setCullWithParent(bool value) { _cullWithParent = value; } + + template + T withReadLockResult(const std::function& f) { + T result; + withReadLock([&] { + result = f(); + }); + return result; + } signals: void requestRenderUpdate(); @@ -130,6 +140,7 @@ protected: bool _visible { false }; bool _isVisibleInSecondaryCamera { false }; bool _canCastShadow { false }; + bool _cullWithParent { false }; RenderLayer _renderLayer { RenderLayer::WORLD }; PrimitiveMode _primitiveMode { PrimitiveMode::SOLID }; bool _cauterized { false }; diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index af121f2957..4c75a25962 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -210,8 +210,7 @@ void MaterialEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo } ItemKey MaterialEntityRenderer::getKey() { - ItemKey::Builder builder; - builder.withTypeShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + auto builder = ItemKey::Builder().withTypeShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); if (!_visible) { builder.withInvisible(); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 1f2be0c488..1ea0d9d4c7 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1057,8 +1057,10 @@ ModelEntityRenderer::ModelEntityRenderer(const EntityItemPointer& entity) : Pare void ModelEntityRenderer::setKey(bool didVisualGeometryRequestSucceed) { auto builder = ItemKey::Builder().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); - if (_model && _model->isGroupCulled()) { + if (!_cullWithParent && _model && _model->isGroupCulled()) { builder.withMetaCullGroup(); + } else if (_cullWithParent) { + builder.withoutSubMetaCulled(); } if (didVisualGeometryRequestSucceed) { @@ -1497,6 +1499,14 @@ void ModelEntityRenderer::setPrimitiveMode(PrimitiveMode value) { } } +void ModelEntityRenderer::setCullWithParent(bool value) { + Parent::setCullWithParent(value); + setKey(_didLastVisualGeometryRequestSucceed); + if (_model) { + _model->setCullWithParent(_cullWithParent); + } +} + // NOTE: this only renders the "meta" portion of the Model, namely it renders debugging items void ModelEntityRenderer::doRender(RenderArgs* args) { DETAILED_PROFILE_RANGE(render_detail, "MetaModelRender"); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index c32dad901f..0119c7bc26 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -164,6 +164,7 @@ protected: void setIsVisibleInSecondaryCamera(bool value) override; void setRenderLayer(RenderLayer value) override; void setPrimitiveMode(PrimitiveMode value) override; + void setCullWithParent(bool value) override; private: void animate(const TypedEntityPointer& entity); diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index e3528e2291..f34eb85230 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -151,11 +151,17 @@ void ParticleEffectEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEn ItemKey ParticleEffectEntityRenderer::getKey() { // FIXME: implement isTransparent() for particles and an opaque pipeline - if (_visible) { - return ItemKey::Builder::transparentShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); - } else { - return ItemKey::Builder().withInvisible().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()).build(); + auto builder = ItemKey::Builder::transparentShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (!_visible) { + builder.withInvisible(); } + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); } ShapeKey ParticleEffectEntityRenderer::getShapeKey() { diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 9a762b3b3a..ae4654a21a 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -97,9 +97,14 @@ void PolyLineEntityRenderer::buildPipelines() { } ItemKey PolyLineEntityRenderer::getKey() { - return isTransparent() ? - ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()) : - ItemKey::Builder::opaqueShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + // FIXME: implement isTransparent() for polylines and an opaque pipeline + auto builder = ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); } ShapeKey PolyLineEntityRenderer::getShapeKey() { diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 853e36b45b..1555604604 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -1783,6 +1783,16 @@ PolyVoxEntityRenderer::PolyVoxEntityRenderer(const EntityItemPointer& entity) : _params = std::make_shared(sizeof(glm::vec4), nullptr); } +ItemKey PolyVoxEntityRenderer::getKey() { + auto builder = ItemKey::Builder::opaqueShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); +} + ShapeKey PolyVoxEntityRenderer::getShapeKey() { auto builder = ShapeKey::Builder().withCustom(CUSTOM_PIPELINE_NUMBER); if (_primitiveMode == PrimitiveMode::LINES) { diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h index c322959f86..825b4429cd 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h @@ -209,7 +209,7 @@ public: } protected: - virtual ItemKey getKey() override { return ItemKey::Builder::opaqueShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); } + virtual ItemKey getKey() override; virtual ShapeKey getShapeKey() override; virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override; virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override; diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 598ac17510..bbc9ff1991 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3025,6 +3025,17 @@ void EntityItem::setCanCastShadow(bool value) { }); } +bool EntityItem::getCullWithParent() const { + return _cullWithParent; +} + +void EntityItem::setCullWithParent(bool value) { + if (_cullWithParent != value) { + _cullWithParent = value; + emit requestRenderUpdate(); + } +} + bool EntityItem::isChildOfMyAvatar() const { QUuid ancestorID = findAncestorOfType(NestableType::Avatar); return !ancestorID.isNull() && (ancestorID == Physics::getSessionUUID() || ancestorID == AVATAR_SELF_ID); diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 3274379ee9..16ce9985bf 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -305,6 +305,9 @@ public: bool getCanCastShadow() const; void setCanCastShadow(bool value); + bool getCullWithParent() const; + void setCullWithParent(bool value); + void setCauterized(bool value); bool getCauterized() const; @@ -762,7 +765,7 @@ protected: QHash _grabActions; - mutable bool _needsRenderUpdate { false }; + bool _cullWithParent { false }; private: static std::function _getBillboardRotationOperator; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 947c53d546..d7983bbe50 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -102,6 +102,10 @@ void MeshPartPayload::updateKey(const render::ItemKey& key) { builder.withTransparent(); } + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + _itemKey = builder.build(); } @@ -383,6 +387,10 @@ void ModelMeshPartPayload::updateKey(const render::ItemKey& key) { builder.withTransparent(); } + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + _itemKey = builder.build(); } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 4d9510e4a2..e7415c6b8d 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -43,7 +43,7 @@ public: // Render Item interface virtual render::ItemKey getKey() const; virtual render::Item::Bound getBound() const; - virtual render::ShapeKey getShapeKey() const; // shape interface + virtual render::ShapeKey getShapeKey() const; virtual void render(RenderArgs* args); // ModelMeshPartPayload functions to perform render @@ -73,11 +73,11 @@ public: void addMaterial(graphics::MaterialLayer material); void removeMaterial(graphics::MaterialPointer material); - static bool enableMaterialProceduralShaders; + void setCullWithParent(bool value) { _cullWithParent = value; } protected: render::ItemKey _itemKey{ render::ItemKey::Builder::opaqueShape().build() }; - uint64_t _created; + bool _cullWithParent { false }; }; namespace render { @@ -106,7 +106,7 @@ public: void updateTransformForSkinnedMesh(const Transform& renderTransform, const Transform& boundTransform); // Render Item interface - render::ShapeKey getShapeKey() const override; // shape interface + render::ShapeKey getShapeKey() const override; void render(RenderArgs* args) override; void setShapeKey(bool invalidateShapeKey, PrimitiveMode primitiveMode, bool useDualQuaternionSkinning); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 182bc535bf..32e44c5cbf 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -154,7 +154,7 @@ void Model::setOffset(const glm::vec3& offset) { } void Model::calculateTextureInfo() { - if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItemsMap.isEmpty()) { + if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItems.isEmpty()) { size_t textureSize = 0; int textureCount = 0; bool allTexturesLoaded = true; @@ -960,6 +960,20 @@ void Model::setCauterized(bool cauterized, const render::ScenePointer& scene) { } } +void Model::setCullWithParent(bool cullWithParent) { + if (_cullWithParent != cullWithParent) { + _cullWithParent = cullWithParent; + + render::Transaction transaction; + foreach(auto item, _modelMeshRenderItemsMap.keys()) { + transaction.updateItem(item, [cullWithParent](ModelMeshPartPayload& data) { + data.setCullWithParent(cullWithParent); + }); + } + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + } +} + const render::ItemKey Model::getRenderItemKeyGlobalFlags() const { return _renderItemKeyGlobalFlags; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 597fe552f7..b677861e9f 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -129,6 +129,8 @@ public: bool isCauterized() const { return _cauterized; } void setCauterized(bool value, const render::ScenePointer& scene); + void setCullWithParent(bool value); + // Access the current RenderItemKey Global Flags used by the model and applied to the render items representing the parts of the model. const render::ItemKey getRenderItemKeyGlobalFlags() const; @@ -503,6 +505,7 @@ protected: // render::ItemKey _renderItemKeyGlobalFlags; bool _cauterized { false }; + bool _cullWithParent { false }; bool shouldInvalidatePayloadShapeKey(int meshIndex); diff --git a/libraries/render/src/render/Item.cpp b/libraries/render/src/render/Item.cpp index d5dde7f86b..532964777f 100644 --- a/libraries/render/src/render/Item.cpp +++ b/libraries/render/src/render/Item.cpp @@ -123,11 +123,7 @@ namespace render { if (!payload) { return ItemKey::Builder::opaqueShape().withTypeMeta(); } - if (payload->overrideSubMetaCulled()) { - return ItemKey::Builder(payload->getKey()).withSubMetaCulled(); - } else { - return payload->getKey(); - } + return payload->getKey(); } template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload) { diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index e28a88f6dd..c94732eafe 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -615,12 +615,6 @@ public: virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) = 0; - - bool overrideSubMetaCulled() const { return _overrideSubMetaCulled; } - void setOverrideSubMetaCulled(bool overrideSubMetaCulled) { _overrideSubMetaCulled = overrideSubMetaCulled; } - -protected: - bool _overrideSubMetaCulled { false }; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); @@ -631,7 +625,7 @@ template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer typedef Item::PayloadPointer PayloadPointer; -typedef std::vector< PayloadPointer > Payloads; +typedef std::vector Payloads; // A map of items by ShapeKey to optimize rendering pipeline assignments using ShapeBounds = std::unordered_map; From 615649534573520d643095ac1007ce46d068410d Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Tue, 26 Nov 2019 22:28:06 -0800 Subject: [PATCH 098/396] stupid, shadows still broken --- .../entities-renderer/src/RenderableModelEntityItem.cpp | 2 +- libraries/render-utils/src/Model.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 1ea0d9d4c7..5fbbdfa0b8 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1060,7 +1060,7 @@ void ModelEntityRenderer::setKey(bool didVisualGeometryRequestSucceed) { if (!_cullWithParent && _model && _model->isGroupCulled()) { builder.withMetaCullGroup(); } else if (_cullWithParent) { - builder.withoutSubMetaCulled(); + builder.withSubMetaCulled(); } if (didVisualGeometryRequestSucceed) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 32e44c5cbf..d8172112ff 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -965,9 +965,11 @@ void Model::setCullWithParent(bool cullWithParent) { _cullWithParent = cullWithParent; render::Transaction transaction; - foreach(auto item, _modelMeshRenderItemsMap.keys()) { - transaction.updateItem(item, [cullWithParent](ModelMeshPartPayload& data) { + auto renderItemsKey = _renderItemKeyGlobalFlags; + for(auto item : _modelMeshRenderItemIDs) { + transaction.updateItem(item, [cullWithParent, renderItemsKey](ModelMeshPartPayload& data) { data.setCullWithParent(cullWithParent); + data.updateKey(renderItemsKey); }); } AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); From 204c7a73914a4c340758d2478f367a9f69b272e6 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Thu, 5 Dec 2019 01:29:11 -0800 Subject: [PATCH 099/396] fix shadows!! --- .../src/RenderablePolyLineEntityItem.cpp | 7 +- .../render-utils/src/RenderShadowTask.cpp | 6 +- libraries/render/src/render/CullTask.cpp | 70 +------------------ libraries/render/src/render/CullTask.h | 28 +++----- .../src/render/RenderFetchCullSortTask.cpp | 2 +- 5 files changed, 20 insertions(+), 93 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index ae4654a21a..e75f8593d6 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -97,8 +97,11 @@ void PolyLineEntityRenderer::buildPipelines() { } ItemKey PolyLineEntityRenderer::getKey() { - // FIXME: implement isTransparent() for polylines and an opaque pipeline - auto builder = ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + auto builder = ItemKey::Builder::opaqueShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (isTransparent()) { + builder.withTransparent(); + } if (_cullWithParent) { builder.withSubMetaCulled(); diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 60e11f5301..fe005df2d4 100755 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -61,12 +61,12 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende const auto currentKeyLight = setupOutput.getN(4); // Fetch and cull the items from the scene - static const auto shadowCasterReceiverFilter = ItemFilter::Builder::visibleWorldItems().withTypeShape().withOpaque().withoutLayered().withTagBits(tagBits, tagMask); + static const auto shadowCasterReceiverFilter = ItemFilter::Builder::visibleWorldItems().withOpaque().withoutLayered().withTagBits(tagBits, tagMask); const auto fetchInput = FetchSpatialTree::Inputs(shadowCasterReceiverFilter, queryResolution).asVarying(); const auto shadowSelection = task.addJob("FetchShadowTree", fetchInput); - const auto selectionInputs = FilterSpatialSelection::Inputs(shadowSelection, shadowCasterReceiverFilter).asVarying(); - const auto shadowItems = task.addJob("FilterShadowSelection", selectionInputs); + const auto selectionInputs = CullSpatialSelection::Inputs(shadowSelection, shadowCasterReceiverFilter).asVarying(); + const auto shadowItems = task.addJob("FilterShadowSelection", selectionInputs, nullptr, true, RenderDetails::SHADOW); // Cull objects that are not visible in camera view. Hopefully the cull functor only performs LOD culling, not // frustum culling or this will make shadow casters out of the camera frustum disappear. diff --git a/libraries/render/src/render/CullTask.cpp b/libraries/render/src/render/CullTask.cpp index 5e5c6b4c6e..068d6f9851 100644 --- a/libraries/render/src/render/CullTask.cpp +++ b/libraries/render/src/render/CullTask.cpp @@ -172,7 +172,7 @@ void FetchSpatialTree::run(const RenderContextPointer& renderContext, const Inpu void CullSpatialSelection::configure(const Config& config) { _justFrozeFrustum = _justFrozeFrustum || (config.freezeFrustum && !_freezeFrustum); _freezeFrustum = config.freezeFrustum; - _skipCulling = config.skipCulling; + _overrideSkipCulling = config.skipCulling; } void CullSpatialSelection::run(const RenderContextPointer& renderContext, @@ -209,7 +209,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, // filter individually against the _filter // visibility cull if partially selected ( octree cell contianing it was partial) // distance cull if was a subcell item ( octree cell is way bigger than the item bound itself, so now need to test per item) - if (_skipCulling) { + if (_skipCulling || _overrideSkipCulling) { // inside & fit items: filter only, culling is disabled { PerformanceTimer perfTimer("insideFitItems"); @@ -444,69 +444,3 @@ void ApplyCullFunctorOnItemBounds::run(const RenderContextPointer& renderContext args->popViewFrustum(); } } - -void FilterSpatialSelection::run(const RenderContextPointer& renderContext, - const Inputs& inputs, ItemBounds& outItems) { - assert(renderContext->args); - auto& scene = renderContext->_scene; - auto& inSelection = inputs.get0(); - - // Now we have a selection of items to render - outItems.clear(); - outItems.reserve(inSelection.numItems()); - - const auto filter = inputs.get1(); - if (!filter.selectsNothing()) { - // Now get the bound, and - // filter individually against the _filter - - // inside & fit items: filter only - { - PerformanceTimer perfTimer("insideFitItems"); - for (auto id : inSelection.insideItems) { - auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { - ItemBound itemBound(id, item.getBound()); - outItems.emplace_back(itemBound); - } - } - } - - // inside & subcell items: filter only - { - PerformanceTimer perfTimer("insideSmallItems"); - for (auto id : inSelection.insideSubcellItems) { - auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { - ItemBound itemBound(id, item.getBound()); - outItems.emplace_back(itemBound); - - } - } - } - - // partial & fit items: filter only - { - PerformanceTimer perfTimer("partialFitItems"); - for (auto id : inSelection.partialItems) { - auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { - ItemBound itemBound(id, item.getBound()); - outItems.emplace_back(itemBound); - } - } - } - - // partial & subcell items: filter only - { - PerformanceTimer perfTimer("partialSmallItems"); - for (auto id : inSelection.partialSubcellItems) { - auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { - ItemBound itemBound(id, item.getBound()); - outItems.emplace_back(itemBound); - } - } - } - } -} diff --git a/libraries/render/src/render/CullTask.h b/libraries/render/src/render/CullTask.h index 99ca7abe6c..e67edd6666 100644 --- a/libraries/render/src/render/CullTask.h +++ b/libraries/render/src/render/CullTask.h @@ -100,26 +100,25 @@ namespace render { }; class CullSpatialSelection { - bool _freezeFrustum{ false }; // initialized by Config - bool _justFrozeFrustum{ false }; - bool _skipCulling{ false }; - ViewFrustum _frozenFrustum; public: using Config = CullSpatialSelectionConfig; using Inputs = render::VaryingSet2; using JobModel = Job::ModelIO; - CullSpatialSelection(CullFunctor cullFunctor, RenderDetails::Type type) : - _cullFunctor{ cullFunctor }, + CullSpatialSelection(CullFunctor cullFunctor, bool skipCulling, RenderDetails::Type type) : + _cullFunctor(cullFunctor), + _skipCulling(skipCulling), _detailType(type) {} - CullSpatialSelection(CullFunctor cullFunctor) : - _cullFunctor{ cullFunctor } { - } - CullFunctor _cullFunctor; + bool _skipCulling { false }; RenderDetails::Type _detailType{ RenderDetails::OTHER }; + bool _freezeFrustum { false }; // initialized by Config + bool _justFrozeFrustum { false }; + bool _overrideSkipCulling { false }; + ViewFrustum _frozenFrustum; + void configure(const Config& config); void run(const RenderContextPointer& renderContext, const Inputs& inputs, ItemBounds& outItems); }; @@ -147,15 +146,6 @@ namespace render { }; - class FilterSpatialSelection { - public: - using Inputs = render::VaryingSet2; - using JobModel = Job::ModelIO; - - FilterSpatialSelection() {} - void run(const RenderContextPointer& renderContext, const Inputs& inputs, ItemBounds& outItems); - }; - class ApplyCullFunctorOnItemBounds { public: using Inputs = render::VaryingSet2; diff --git a/libraries/render/src/render/RenderFetchCullSortTask.cpp b/libraries/render/src/render/RenderFetchCullSortTask.cpp index 6b1a57ed88..ebcf5a432b 100644 --- a/libraries/render/src/render/RenderFetchCullSortTask.cpp +++ b/libraries/render/src/render/RenderFetchCullSortTask.cpp @@ -27,7 +27,7 @@ void RenderFetchCullSortTask::build(JobModel& task, const Varying& input, Varyin const auto fetchInput = FetchSpatialTree::Inputs(filter, glm::ivec2(0,0)).asVarying(); const auto spatialSelection = task.addJob("FetchSceneSelection", fetchInput); const auto cullInputs = CullSpatialSelection::Inputs(spatialSelection, spatialFilter).asVarying(); - const auto culledSpatialSelection = task.addJob("CullSceneSelection", cullInputs, cullFunctor, RenderDetails::ITEM); + const auto culledSpatialSelection = task.addJob("CullSceneSelection", cullInputs, cullFunctor, false, RenderDetails::ITEM); // Layered objects are not culled const ItemFilter layeredFilter = ItemFilter::Builder::visibleWorldItems().withTagBits(tagBits, tagMask); From 1ef45b703c0b1dbca9bb5e63ce56138962bcf048 Mon Sep 17 00:00:00 2001 From: Maki Date: Tue, 19 Nov 2019 12:35:06 +0000 Subject: [PATCH 100/396] Added environment variables to change domain server ports Signed-off-by: Kasen IO --- libraries/networking/src/DomainHandler.h | 37 +++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index fb18866001..a71be7be21 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -12,6 +12,8 @@ #ifndef hifi_DomainHandler_h #define hifi_DomainHandler_h +#include + #include #include #include @@ -30,10 +32,37 @@ #include "ReceivedMessage.h" #include "NetworkingConstants.h" -const unsigned short DEFAULT_DOMAIN_SERVER_PORT = 40102; -const unsigned short DEFAULT_DOMAIN_SERVER_DTLS_PORT = 40103; -const quint16 DOMAIN_SERVER_HTTP_PORT = 40100; -const quint16 DOMAIN_SERVER_HTTPS_PORT = 40101; +const unsigned short DEFAULT_DOMAIN_SERVER_PORT = + QProcessEnvironment::systemEnvironment() + .contains("HIFI_DOMAIN_SERVER_PORT") + ? QProcessEnvironment::systemEnvironment() + .value("HIFI_DOMAIN_SERVER_PORT") + .toShort() + : 40102; + +const unsigned short DEFAULT_DOMAIN_SERVER_DTLS_PORT = + QProcessEnvironment::systemEnvironment() + .contains("HIFI_DOMAIN_SERVER_DTLS_PORT") + ? QProcessEnvironment::systemEnvironment() + .value("HIFI_DOMAIN_SERVER_DTLS_PORT") + .toShort() + : 40103; + +const quint16 DOMAIN_SERVER_HTTP_PORT = + QProcessEnvironment::systemEnvironment() + .contains("HIFI_DOMAIN_SERVER_HTTP_PORT") + ? QProcessEnvironment::systemEnvironment() + .value("HIFI_DOMAIN_SERVER_HTTP_PORT") + .toShort() + : 40100; + +const quint16 DOMAIN_SERVER_HTTPS_PORT = + QProcessEnvironment::systemEnvironment() + .contains("HIFI_DOMAIN_SERVER_HTTPS_PORT") + ? QProcessEnvironment::systemEnvironment() + .value("HIFI_DOMAIN_SERVER_HTTPS_PORT") + .toShort() + : 40101; const int MAX_SILENT_DOMAIN_SERVER_CHECK_INS = 5; From a7851c9205940a60298bde76510e79d1e110e24b Mon Sep 17 00:00:00 2001 From: Maki Date: Wed, 20 Nov 2019 09:13:08 +0000 Subject: [PATCH 101/396] Fixed type conversions for environmental domain ports Signed-off-by: Kasen IO --- libraries/networking/src/DomainHandler.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index a71be7be21..505bbb94b5 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -37,7 +37,7 @@ const unsigned short DEFAULT_DOMAIN_SERVER_PORT = .contains("HIFI_DOMAIN_SERVER_PORT") ? QProcessEnvironment::systemEnvironment() .value("HIFI_DOMAIN_SERVER_PORT") - .toShort() + .toUShort() : 40102; const unsigned short DEFAULT_DOMAIN_SERVER_DTLS_PORT = @@ -45,7 +45,7 @@ const unsigned short DEFAULT_DOMAIN_SERVER_DTLS_PORT = .contains("HIFI_DOMAIN_SERVER_DTLS_PORT") ? QProcessEnvironment::systemEnvironment() .value("HIFI_DOMAIN_SERVER_DTLS_PORT") - .toShort() + .toUShort() : 40103; const quint16 DOMAIN_SERVER_HTTP_PORT = @@ -53,7 +53,7 @@ const quint16 DOMAIN_SERVER_HTTP_PORT = .contains("HIFI_DOMAIN_SERVER_HTTP_PORT") ? QProcessEnvironment::systemEnvironment() .value("HIFI_DOMAIN_SERVER_HTTP_PORT") - .toShort() + .toUInt() : 40100; const quint16 DOMAIN_SERVER_HTTPS_PORT = @@ -61,7 +61,7 @@ const quint16 DOMAIN_SERVER_HTTPS_PORT = .contains("HIFI_DOMAIN_SERVER_HTTPS_PORT") ? QProcessEnvironment::systemEnvironment() .value("HIFI_DOMAIN_SERVER_HTTPS_PORT") - .toShort() + .toUInt() : 40101; const int MAX_SILENT_DOMAIN_SERVER_CHECK_INS = 5; From 0bd5e15b47b4a2de8153b00083ef74661587db7b Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Wed, 11 Dec 2019 00:42:59 -0800 Subject: [PATCH 102/396] fix non-procedural material entity crash Signed-off-by: Kasen IO --- interface/src/Application.cpp | 2 +- .../src/RenderableMaterialEntityItem.cpp | 3 ++- libraries/entities/src/EntityTree.cpp | 8 ++++---- libraries/entities/src/EntityTree.h | 6 +++--- libraries/entities/src/MaterialEntityItem.cpp | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 492495808e..dd9a10a237 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2107,7 +2107,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } return false; }); - EntityTree::setGetUnscaledDimensionsForEntityIDOperator([this](const QUuid& id) { + EntityTree::setGetUnscaledDimensionsForIDOperator([this](const QUuid& id) { if (_aboutToQuit) { return glm::vec3(1.0f); } diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index 4c75a25962..c1b024a478 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -395,7 +395,8 @@ void MaterialEntityRenderer::applyMaterial(const TypedEntityPointer& entity) { graphics::MaterialLayer materialLayer = graphics::MaterialLayer(material, _priority); - if (auto procedural = std::static_pointer_cast(material)) { + if (material->isProcedural()) { + auto procedural = std::static_pointer_cast(material); procedural->setBoundOperator([this] { return getBound(); }); entity->setHasVertexShader(procedural->hasVertexShader()); } diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 565fb37781..41008625e8 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -3113,7 +3113,7 @@ std::function EntityTree::_getEntityObjectOperator = nul std::function EntityTree::_textSizeOperator = nullptr; std::function EntityTree::_areEntityClicksCapturedOperator = nullptr; std::function EntityTree::_emitScriptEventOperator = nullptr; -std::function EntityTree::_getUnscaledDimensionsForEntityIDOperator = nullptr; +std::function EntityTree::_getUnscaledDimensionsForIDOperator = nullptr; QObject* EntityTree::getEntityObject(const QUuid& id) { if (_getEntityObjectOperator) { @@ -3142,9 +3142,9 @@ void EntityTree::emitScriptEvent(const QUuid& id, const QVariant& message) { } } -glm::vec3 EntityTree::getUnscaledDimensionsForEntityID(const QUuid& id) { - if (_getUnscaledDimensionsForEntityIDOperator) { - return _getUnscaledDimensionsForEntityIDOperator(id); +glm::vec3 EntityTree::getUnscaledDimensionsForID(const QUuid& id) { + if (_getUnscaledDimensionsForIDOperator) { + return _getUnscaledDimensionsForIDOperator(id); } return glm::vec3(1.0f); } diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index c083493e99..a0fcbd3244 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -271,8 +271,8 @@ public: static void setEmitScriptEventOperator(std::function emitScriptEventOperator) { _emitScriptEventOperator = emitScriptEventOperator; } static void emitScriptEvent(const QUuid& id, const QVariant& message); - static void setGetUnscaledDimensionsForEntityIDOperator(std::function getUnscaledDimensionsForEntityIDOperator) { _getUnscaledDimensionsForEntityIDOperator = getUnscaledDimensionsForEntityIDOperator; } - static glm::vec3 getUnscaledDimensionsForEntityID(const QUuid& id); + static void setGetUnscaledDimensionsForIDOperator(std::function getUnscaledDimensionsForIDOperator) { _getUnscaledDimensionsForIDOperator = getUnscaledDimensionsForIDOperator; } + static glm::vec3 getUnscaledDimensionsForID(const QUuid& id); std::map getNamedPaths() const { return _namedPaths; } @@ -389,7 +389,7 @@ private: static std::function _textSizeOperator; static std::function _areEntityClicksCapturedOperator; static std::function _emitScriptEventOperator; - static std::function _getUnscaledDimensionsForEntityIDOperator; + static std::function _getUnscaledDimensionsForIDOperator; std::vector _staleProxies; diff --git a/libraries/entities/src/MaterialEntityItem.cpp b/libraries/entities/src/MaterialEntityItem.cpp index 22143e88ba..73bebfc403 100644 --- a/libraries/entities/src/MaterialEntityItem.cpp +++ b/libraries/entities/src/MaterialEntityItem.cpp @@ -293,7 +293,7 @@ void MaterialEntityItem::setHasVertexShader(bool hasVertexShader) { if (hasVertexShader && !prevHasVertexShader) { setLocalPosition(glm::vec3(0.0f)); setLocalOrientation(glm::quat()); - setUnscaledDimensions(EntityTree::getUnscaledDimensionsForEntityID(getParentID())); + setUnscaledDimensions(EntityTree::getUnscaledDimensionsForID(getParentID())); } else if (!hasVertexShader && prevHasVertexShader) { setUnscaledDimensions(_desiredDimensions); } From 9839b23061534e3deb69108c0f463ab82ff0695d Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Fri, 13 Dec 2019 02:38:14 -0500 Subject: [PATCH 103/396] Made Sam's graphics patches work with 86 K2. --- libraries/entities/src/EntityItem.h | 3 +++ libraries/render-utils/src/MeshPartPayload.cpp | 2 +- libraries/render-utils/src/MeshPartPayload.h | 3 +++ libraries/render/src/render/Item.h | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 16ce9985bf..2c04614a1c 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -579,6 +579,7 @@ public: signals: void spaceUpdate(std::pair data); + void requestRenderUpdate(); protected: QHash _changeHandlers; @@ -766,6 +767,8 @@ protected: QHash _grabActions; bool _cullWithParent { false }; + + mutable bool _needsRenderUpdate { false }; private: static std::function _getBillboardRotationOperator; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index d7983bbe50..e82af5395f 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -189,7 +189,7 @@ void MeshPartPayload::render(RenderArgs* args) { if (!_drawMaterials.empty() && _drawMaterials.top().material && _drawMaterials.top().material->isProcedural() && _drawMaterials.top().material->isReady()) { - if (!(enableMaterialProceduralShaders && ENABLE_MATERIAL_PROCEDURAL_SHADERS)) { + if (!enableMaterialProceduralShaders) { return; } auto procedural = std::static_pointer_cast(_drawMaterials.top().material); diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index e7415c6b8d..ee205bd778 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -75,9 +75,12 @@ public: void setCullWithParent(bool value) { _cullWithParent = value; } + static bool enableMaterialProceduralShaders; + protected: render::ItemKey _itemKey{ render::ItemKey::Builder::opaqueShape().build() }; bool _cullWithParent { false }; + uint64_t _created; }; namespace render { diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index c94732eafe..3383101b5b 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -614,7 +614,7 @@ public: virtual ShapeKey getShapeKey() = 0; virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; - virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) = 0; + virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); From bbf0a92be287258fa60b790c20eeb1c6c9af23db Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Fri, 13 Dec 2019 09:45:46 -0500 Subject: [PATCH 104/396] Update BUILD_WIN.md Changed link from HiFi repo to ours. --- BUILD_WIN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index bc6e5c8386..636d53c4e1 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -97,7 +97,7 @@ Note: You can also run Interface by launching it from command line or File Explo For any problems after Step #6, first try this: * Delete your locally cloned copy of the highfidelity repository * Restart your computer -* Redownload the [repository](https://github.com/highfidelity/hifi) +* Redownload the [repository](https://github.com/kasenvr/hificommunity) * Restart directions from Step #6 #### CMake gives you the same error message repeatedly after the build fails From 1f01beba70a03f8e8017f7bdc3305f315637782b Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Fri, 13 Dec 2019 12:29:08 -0500 Subject: [PATCH 105/396] Fixed patch issues --- .../entities-renderer/src/RenderableEntityItem.cpp | 14 +++++++++----- libraries/entities/src/EntityItem.cpp | 6 +++--- libraries/entities/src/EntityItem.h | 1 - 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index a1c5a5b432..ae56a8fc47 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -168,12 +168,12 @@ render::hifi::Layer EntityRenderer::getHifiRenderLayer() const { } ItemKey EntityRenderer::getKey() { - auto builder = ItemKey::Builder().withTypeShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + ItemKey::Builder builder = + ItemKey::Builder().withTypeShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + if (isTransparent()) { builder.withTransparent(); - } - - if (_canCastShadow) { + } else if (_canCastShadow) { builder.withShadowCaster(); } @@ -181,7 +181,11 @@ ItemKey EntityRenderer::getKey() { builder.withSubMetaCulled(); } - return builder.build(); + if (!_visible) { + builder.withInvisible(); + } + + return builder; } uint32_t EntityRenderer::metaFetchMetaSubItems(ItemIDs& subItems) const { diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index bbc9ff1991..cc215d3528 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3030,10 +3030,10 @@ bool EntityItem::getCullWithParent() const { } void EntityItem::setCullWithParent(bool value) { - if (_cullWithParent != value) { + withWriteLock([&] { + _needsRenderUpdate |= _cullWithParent != value; _cullWithParent = value; - emit requestRenderUpdate(); - } + }); } bool EntityItem::isChildOfMyAvatar() const { diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 2c04614a1c..14b8b259cc 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -579,7 +579,6 @@ public: signals: void spaceUpdate(std::pair data); - void requestRenderUpdate(); protected: QHash _changeHandlers; From 82dc6d197ace627d69168ba18f917b77e17e834d Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Sat, 14 Dec 2019 03:02:13 +0000 Subject: [PATCH 106/396] New feature --- interface/src/Application.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9c60139d06..783cb46dab 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3182,13 +3182,37 @@ static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://content.highfidelity void Application::initializeUi() { + // Allow remote QML content from trusted sources ONLY { auto defaultUrlValidator = OffscreenQmlSurface::getUrlValidator(); - auto newValidator = [=](const QUrl& url)->bool { - if (AUTHORIZED_EXTERNAL_QML_SOURCE.isParentOf(url)) { - return true; + auto newValidator = [=](const QUrl& url) -> bool { + QString whitelistPrefix = "[WHITELIST ENTITY SCRIPTS]"; + QList safeURLS = { "" }; + safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); + + // PULL SAFEURLS FROM INTERFACE.JSON Settings + + QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); + QStringList settingsSafeURLS = raw.toString().trimmed().split(QRegExp("\\s*[,\r\n]+\\s*"), QString::SkipEmptyParts); + safeURLS += settingsSafeURLS; + + // END PULL SAFEURLS FROM INTERFACE.JSON Settings + + bool isInWhitelist = false; // assume unsafe + for (const auto& str : safeURLS) { + qDebug() << "url.toString().startsWith(str) = " << url.toString().startsWith(str); + qDebug() << "str.endsWith('.qml ') = " << str.endsWith(".qml"); + if (!str.isEmpty() && str.endsWith(".qml") && url.toString().endsWith(".qml") && + url.toString().startsWith(str)) { + qDebug() << "found matching url!" << url.host(); + isInWhitelist = true; + return true; + break; // bail early since we found a match + } } + + qDebug() << "no matching url :c" << url.host(); return defaultUrlValidator(url); }; OffscreenQmlSurface::setUrlValidator(newValidator); From d4c3504c8db2b74e381e1c7a542ef9f1fc8e386e Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 14 Dec 2019 23:12:54 -0500 Subject: [PATCH 107/396] Updated about dialog (old logo still there), application name, and readme.md --- README.md | 34 +++++++++++++------ .../qml/hifi/dialogs/TabletAboutDialog.qml | 13 +------ interface/src/Application.cpp | 2 +- interface/src/Menu.cpp | 3 +- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 34c05867a7..41e8dcdd77 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# HiFi Community Edition +# Project Athena -### [Download v0.86.0 K1 (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) +### [Download ALPHA-DEV v0.86.0 K1 (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) + +This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. #### Changes for **v0.86.0** consist of: @@ -15,13 +17,23 @@ #### Added in K2 (TBD) -* QML Interface to access and save whitelist live to interface.json. -* Add "VideoDecodeStats" to .gitignore. -* Fix VCPKG SDL2 to port files from 2.0.8 to 2.0.10 to fix CMake build issues. -* Added Github link to "About High Fidelity". +##### Features * Removed environment variable requirement for "procedural shader materials". +* QML Interface to access, save, and load whitelist live from interface.json. +* QML whitelist now allows external QML scripts when full URL to the file is given in the list. +* Added procedural vertex shader support. https://github.com/kasenvr/hifi-community/pull/15 +* glTF AlphaModes are now supported. https://github.com/kasenvr/hifi-community/pull/15 +* Material entities can specify face culling method. https://github.com/kasenvr/hifi-community/pull/15 +* gLTF double-sided property is now supported. https://github.com/kasenvr/hifi-community/pull/15 -This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. +##### Bugs and Housekeeping +* Add "VideoDecodeStats" to .gitignore. +* Added Github link to "About High Fidelity" and removed High Fidelity's link, updated the support link. +* Fix VCPKG SDL2 to port files from 2.0.8 to 2.0.10 to fix CMake build issues. +* Fix wearables not disappearing with avatar. https://github.com/kasenvr/hifi-community/pull/15 + +##### Server +* Added custom support selection which allows for multi-server deployment on the same operating system. https://github.com/kasenvr/hifi-community/pull/15 ### Whitelist Instructions @@ -58,7 +70,7 @@ Too many of us have our own personal combinations of High Fidelity from C++ modi The goal of this repo is to give a common area to PR the very best of our findings and creations so that we may effectively take each necessary step towards our common goal of living in a true metaverse. -### Why High Fidelity? +### Why High Fidelity's Engine? Because of all the options, it is the only starting point that is open-source, cross-platform, fully VR integrated + fully desktop integrated with an aim for quality visuals and performance. It also does us the service of providing a foundation to start from such as entity management, full body IK, etc. @@ -68,6 +80,8 @@ Platforms like NeosVR or VRChat are unusable from go due to their fundamental cl So the necessary desire is to use High Fidelity as our foundation as a community of one, of all to build a metaverse worth living in. -### Contributors +### Contribution -A special thanks to the contributors of the community edition. +A special thanks to the contributors of the Project Athena. + +[Contribution & Governance Model](CONTRIBUTING.md) diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 4d57d7074c..91e40aa608 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -53,18 +53,7 @@ Rectangle { textFormat: Text.StyledText linkColor: "#00B4EF" color: "white" - text: "www.highfidelity.com." - size: 20 - onLinkActivated: { - HiFiAbout.openUrl("https:/www.highfidelity.com"); - } - - } - RalewayRegular { - textFormat: Text.StyledText - linkColor: "#00B4EF" - color: "white" - text: "HiFi Community Github." + text: "Project Athena Github." size: 20 onLinkActivated: { HiFiAbout.openUrl("https:/github.com/kasenvr/hifi-community"); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9c60139d06..d49520cb87 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7029,7 +7029,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Kasen Community Edition v0.86.0 K2 - " + QString buildVersion = " - Project Athena v0.86.0 K2 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 9bc1dae56e..b57675fb62 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -772,6 +772,7 @@ Menu::Menu() { // Help > About High Fidelity action = addActionToQMenuAndActionHash(helpMenu, "About High Fidelity"); connect(action, &QAction::triggered, [] { + DependencyManager::get()->clearCache(); qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); }); @@ -808,7 +809,7 @@ Menu::Menu() { // Help > Report a Bug! action = addActionToQMenuAndActionHash(helpMenu, "Report a Bug!"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("mailto:support@highfidelity.com")); + QDesktopServices::openUrl(QUrl("https://github.com/kasenvr/hifi-community/issues")); }); } From 669c01c5a335162da1792d5b3ec5db4b283d6b4b Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Mon, 16 Dec 2019 17:21:16 -0600 Subject: [PATCH 108/396] Update SDL2 CONTROL file to fix linux build --- cmake/ports/sdl2/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ports/sdl2/CONTROL b/cmake/ports/sdl2/CONTROL index 3f96bc71f1..cdce552169 100644 --- a/cmake/ports/sdl2/CONTROL +++ b/cmake/ports/sdl2/CONTROL @@ -1,6 +1,6 @@ Source: sdl2 Version: 2.0.10-2 -Homepage: https://github.com/SDL-Mirror/SDL + Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. Feature: vulkan From 51332b8437cc9e01b90fe3b0feace1a6655c85cb Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Mon, 16 Dec 2019 18:22:01 -0600 Subject: [PATCH 109/396] Fix the fix for SDL2 --- cmake/ports/sdl2/CONTROL | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/ports/sdl2/CONTROL b/cmake/ports/sdl2/CONTROL index cdce552169..ec60fc09ba 100644 --- a/cmake/ports/sdl2/CONTROL +++ b/cmake/ports/sdl2/CONTROL @@ -1,6 +1,5 @@ Source: sdl2 Version: 2.0.10-2 - Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. Feature: vulkan From fd051445901f43c893b256328dec97ae5eaf6d80 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Tue, 17 Dec 2019 14:10:10 -0600 Subject: [PATCH 110/396] fix sdl2 on sam+domains branch --- cmake/ports/sdl2/CONTROL | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/ports/sdl2/CONTROL b/cmake/ports/sdl2/CONTROL index 3f96bc71f1..ec60fc09ba 100644 --- a/cmake/ports/sdl2/CONTROL +++ b/cmake/ports/sdl2/CONTROL @@ -1,6 +1,5 @@ Source: sdl2 Version: 2.0.10-2 -Homepage: https://github.com/SDL-Mirror/SDL Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. Feature: vulkan From ac5a70fca031d322270f5a927bfa41b8b8838180 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Mon, 16 Dec 2019 22:55:50 +0100 Subject: [PATCH 111/396] Change asset URLs to Athena S3 bucket. This uses a variable that can be overriden with an environment variable. This makes it easy for the community to create alternate asset hosts. Due to vcpkg using a clean environment, variables can't be easily passed to cmake scripts run by vcpkg. This was worked around by writing the data that needs to be passed into temporary files and reading it from the vcpkg ports. --- CMakeLists.txt | 34 ++++++++++++++++++ cmake/externals/GifCreator/CMakeLists.txt | 4 +-- cmake/externals/LibOVR/CMakeLists.txt | 4 +-- cmake/externals/LibOVRPlatform/CMakeLists.txt | 2 +- cmake/externals/crashpad/CMakeLists.txt | 4 +-- cmake/externals/glad32es/CMakeLists.txt | 2 +- cmake/externals/glad41/CMakeLists.txt | 2 +- cmake/externals/glad45/CMakeLists.txt | 2 +- cmake/externals/hifiAudioCodec/CMakeLists.txt | 8 ++--- cmake/externals/neuron/CMakeLists.txt | 2 +- cmake/externals/polyvox/CMakeLists.txt | 2 +- cmake/externals/quazip/CMakeLists.txt | 2 +- cmake/externals/sixense/CMakeLists.txt | 6 ++-- cmake/externals/steamworks/CMakeLists.txt | 2 +- cmake/externals/tbb/CMakeLists.txt | 6 ++-- cmake/externals/vhacd/CMakeLists.txt | 2 +- cmake/externals/wasapi/CMakeLists.txt | 2 +- cmake/ports/openssl-android/portfile.cmake | 4 ++- cmake/ports/webrtc/portfile.cmake | 8 +++-- hifi_vcpkg.py | 35 ++++++++++++++----- launchers/qt/CMakeLists.txt | 4 +-- 21 files changed, 97 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f8fd5b7637..476164b845 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,40 @@ else() cmake_minimum_required(VERSION 3.2) endif() + +# Passing of variables to vcpkg +# +# vcpkg runs cmake scripts in an isolated environment, see this for details: +# https://github.com/Microsoft/vcpkg/issues/3712 +# +# Here's how this works and how we work around this issue: +# +# 1. This file (CMakeLists.txt) runs first and is authoritative. It is the one +# that reads the environment, sets variables and sets a default value. +# 2. It writes the contents of the variables to +# $CMAKE_CURRENT_BINARY_DIR/_env/$VARNAME +# 3. hifi_vcpkg.py takes the _env directory, and copies it to the vcpkg dir. +# This solves the issue of CMakeLists.txt not knowing where the vcpkg dir is. +# 4. cmake/ports/*/portfile.cmake does know where the vcpkg dir is, and can +# read the _env that was copied there to obtain the variable's name. +# +# To ensure no old data could be accidentally read, the _env directories are +# deleted on each execution and fully recreated. + +# Ensure nothing is kept from any previous run +file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/_env") +file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_env") + +# Base URL for externally downloaded files +set(EXTERNAL_BUILD_ASSETS "https://athena-public.s3.amazonaws.com") + +if( DEFINED ENV{EXTERNAL_BUILD_ASSETS} ) + set(EXTERNAL_BUILD_ASSETS "$ENV{EXTERNAL_BUILD_ASSETS}") +endif() + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" "${EXTERNAL_BUILD_ASSETS}") +MESSAGE(STATUS "EXTERNAL_BUILD_ASSETS: ${EXTERNAL_BUILD_ASSETS}") + include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/macros/TargetPython.cmake") target_python() diff --git a/cmake/externals/GifCreator/CMakeLists.txt b/cmake/externals/GifCreator/CMakeLists.txt index 094f5612a9..bacfefd48b 100644 --- a/cmake/externals/GifCreator/CMakeLists.txt +++ b/cmake/externals/GifCreator/CMakeLists.txt @@ -3,7 +3,7 @@ set(EXTERNAL_NAME GifCreator) include(ExternalProject) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/GifCreator.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/GifCreator.zip" URL_MD5 8ac8ef5196f47c658dce784df5ecdb70 CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -17,4 +17,4 @@ set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) -set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${INSTALL_DIR}/src/${EXTERNAL_NAME} CACHE PATH "List of GifCreator include directories") \ No newline at end of file +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${INSTALL_DIR}/src/${EXTERNAL_NAME} CACHE PATH "List of GifCreator include directories") diff --git a/cmake/externals/LibOVR/CMakeLists.txt b/cmake/externals/LibOVR/CMakeLists.txt index 53c4c2976c..872d0e5fef 100644 --- a/cmake/externals/LibOVR/CMakeLists.txt +++ b/cmake/externals/LibOVR/CMakeLists.txt @@ -17,7 +17,7 @@ if (WIN32) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://hifi-public.s3.amazonaws.com/dependencies/ovr_sdk_win_1.35.0.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/ovr_sdk_win_1.35.0.zip" URL_MD5 1e3e8b2101387af07ff9c841d0ea285e CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= PATCH_COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/LibOVRCMakeLists.txt" /CMakeLists.txt @@ -38,7 +38,7 @@ elseif(APPLE) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/ovr_sdk_macos_0.5.0.1.tar.gz + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/ovr_sdk_macos_0.5.0.1.tar.gz" URL_MD5 0a0785a04fb285f64f62267388344ad6 CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/cmake/externals/LibOVRPlatform/CMakeLists.txt b/cmake/externals/LibOVRPlatform/CMakeLists.txt index adf89823f2..40e6ae123c 100644 --- a/cmake/externals/LibOVRPlatform/CMakeLists.txt +++ b/cmake/externals/LibOVRPlatform/CMakeLists.txt @@ -9,7 +9,7 @@ if (WIN32) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/OVRPlatformSDK_v1.10.0.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/OVRPlatformSDK_v1.10.0.zip" URL_MD5 e6c8264af16d904e6506acd5172fa0a9 CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/cmake/externals/crashpad/CMakeLists.txt b/cmake/externals/crashpad/CMakeLists.txt index 34348b6418..e519ead0ee 100644 --- a/cmake/externals/crashpad/CMakeLists.txt +++ b/cmake/externals/crashpad/CMakeLists.txt @@ -6,7 +6,7 @@ string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (WIN32) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/crashpad_062317.1.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/crashpad_062317.1.zip" URL_MD5 9c84b77f5f23daf939da1371825ed2b1 CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -25,7 +25,7 @@ if (WIN32) elseif (APPLE) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/crashpad_mac_070318.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/crashpad_mac_070318.zip" URL_MD5 ba1501dc163591ac2d1be74946967e2a CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/cmake/externals/glad32es/CMakeLists.txt b/cmake/externals/glad32es/CMakeLists.txt index 04000b4cfe..8487e5aaaf 100644 --- a/cmake/externals/glad32es/CMakeLists.txt +++ b/cmake/externals/glad32es/CMakeLists.txt @@ -5,7 +5,7 @@ include(SelectLibraryConfigurations) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/glad/glad32es.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/glad/glad32es.zip" URL_MD5 6a641d8c49dee4c895fa59315f5682a6 CONFIGURE_COMMAND CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_POSITION_INDEPENDENT_CODE=ON LOG_DOWNLOAD 1 diff --git a/cmake/externals/glad41/CMakeLists.txt b/cmake/externals/glad41/CMakeLists.txt index 0c99a03025..76382dd05d 100644 --- a/cmake/externals/glad41/CMakeLists.txt +++ b/cmake/externals/glad41/CMakeLists.txt @@ -5,7 +5,7 @@ include(SelectLibraryConfigurations) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/glad/glad41.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/glad/glad41.zip" URL_MD5 1324eeec33abe91e67d19ae551ba624d CONFIGURE_COMMAND CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_POSITION_INDEPENDENT_CODE=ON LOG_DOWNLOAD 1 diff --git a/cmake/externals/glad45/CMakeLists.txt b/cmake/externals/glad45/CMakeLists.txt index 112f6f3592..477a5f79d5 100644 --- a/cmake/externals/glad45/CMakeLists.txt +++ b/cmake/externals/glad45/CMakeLists.txt @@ -5,7 +5,7 @@ include(SelectLibraryConfigurations) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/glad/glad45.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/glad/glad45.zip" URL_MD5 cfb19b3cb5b2f8f1d1669fb3150e5f05 CONFIGURE_COMMAND CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_POSITION_INDEPENDENT_CODE=ON LOG_DOWNLOAD 1 diff --git a/cmake/externals/hifiAudioCodec/CMakeLists.txt b/cmake/externals/hifiAudioCodec/CMakeLists.txt index 5d439cd519..31454ace50 100644 --- a/cmake/externals/hifiAudioCodec/CMakeLists.txt +++ b/cmake/externals/hifiAudioCodec/CMakeLists.txt @@ -6,16 +6,16 @@ set(EXTERNAL_NAME hifiAudioCodec) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (WIN32) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/codecSDK-win-2.0.zip) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/codecSDK-win-2.0.zip") set(DOWNLOAD_MD5 9199d4dbd6b16bed736b235efe980e67) elseif (APPLE) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/codecSDK-mac-2.0.zip) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/codecSDK-mac-2.0.zip") set(DOWNLOAD_MD5 21649881e7d5dc94f922179be96f76ba) elseif (ANDROID) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/codecSDK-android-2.0.zip) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/codecSDK-android-2.0.zip") set(DOWNLOAD_MD5 aef2a852600d498d58aa586668191683) elseif (UNIX) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/codecSDK-linux-2.0.zip) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/codecSDK-linux-2.0.zip") set(DOWNLOAD_MD5 67fb7755f9bcafb98a9fceea53bc7481) else() return() diff --git a/cmake/externals/neuron/CMakeLists.txt b/cmake/externals/neuron/CMakeLists.txt index 049e175354..45b18f86cd 100644 --- a/cmake/externals/neuron/CMakeLists.txt +++ b/cmake/externals/neuron/CMakeLists.txt @@ -4,7 +4,7 @@ set(EXTERNAL_NAME neuron) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) -set(NEURON_URL "https://public.highfidelity.com/dependencies/neuron_datareader_b.12.2.zip") +set(NEURON_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/neuron_datareader_b.12.2.zip") set(NEURON_URL_MD5 "84273ad2200bf86a9279d1f412a822ca") ExternalProject_Add(${EXTERNAL_NAME} diff --git a/cmake/externals/polyvox/CMakeLists.txt b/cmake/externals/polyvox/CMakeLists.txt index e5c3521b63..63a4bee043 100644 --- a/cmake/externals/polyvox/CMakeLists.txt +++ b/cmake/externals/polyvox/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_BUILD_TYPE Release) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/polyvox-master-2015-7-15.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/polyvox-master-2015-7-15.zip" URL_MD5 9ec6323b87e849ae36e562ae1c7494a9 CMAKE_ARGS -DENABLE_EXAMPLES=OFF -DENABLE_BINDINGS=OFF -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build diff --git a/cmake/externals/quazip/CMakeLists.txt b/cmake/externals/quazip/CMakeLists.txt index f99d995a0c..8190a35988 100644 --- a/cmake/externals/quazip/CMakeLists.txt +++ b/cmake/externals/quazip/CMakeLists.txt @@ -18,7 +18,7 @@ endif () ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/quazip-0.7.3.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/quazip-0.7.3.zip" URL_MD5 ed03754d39b9da1775771819b8001d45 BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build CMAKE_ARGS ${QUAZIP_CMAKE_ARGS} diff --git a/cmake/externals/sixense/CMakeLists.txt b/cmake/externals/sixense/CMakeLists.txt index 35f7758820..c2fb8ad8f9 100644 --- a/cmake/externals/sixense/CMakeLists.txt +++ b/cmake/externals/sixense/CMakeLists.txt @@ -4,15 +4,15 @@ set(EXTERNAL_NAME sixense) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) -#set(SIXENSE_URL "https://public.highfidelity.com/dependencies/SixenseSDK_062612.zip") +#set(SIXENSE_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/SixenseSDK_062612.zip") #set(SIXENSE_URL_MD5 "10cc8dc470d2ac1244a88cf04bc549cc") #set(SIXENSE_NEW_LAYOUT 0) -set(SIXENSE_URL "https://public.highfidelity.com/dependencies/SixenseSDK_071615.zip") +set(SIXENSE_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/SixenseSDK_071615.zip") set(SIXENSE_URL_MD5 "752a3901f334124e9cffc2ba4136ef7d") set(SIXENSE_NEW_LAYOUT 1) -#set(SIXENSE_URL "https://public.highfidelity.com/dependencies/SixenseSDK_102215.zip") +#set(SIXENSE_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/SixenseSDK_102215.zip") #set(SIXENSE_URL_MD5 "93c3a6795cce777a0f472b09532935f1") #set(SIXENSE_NEW_LAYOUT 1) diff --git a/cmake/externals/steamworks/CMakeLists.txt b/cmake/externals/steamworks/CMakeLists.txt index eb61d22f8b..1ec72d7d28 100644 --- a/cmake/externals/steamworks/CMakeLists.txt +++ b/cmake/externals/steamworks/CMakeLists.txt @@ -4,7 +4,7 @@ set(EXTERNAL_NAME steamworks) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) -set(STEAMWORKS_URL "https://public.highfidelity.com/dependencies/steamworks_sdk_137.zip") +set(STEAMWORKS_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/steamworks_sdk_137.zip") set(STEAMWORKS_URL_MD5 "95ba9d0e3ddc04f8a8be17d2da806cbb") ExternalProject_Add( diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt index 1788922ef2..8f8f2d3030 100644 --- a/cmake/externals/tbb/CMakeLists.txt +++ b/cmake/externals/tbb/CMakeLists.txt @@ -3,13 +3,13 @@ set(EXTERNAL_NAME tbb) include(ExternalProject) if (WIN32) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/tbb2017_20170604oss_win_slim.zip) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/tbb2017_20170604oss_win_slim.zip") set(DOWNLOAD_MD5 065934458e3db88397f3d10e7eea536c) elseif (APPLE) - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/tbb2017_20170604oss_mac_slim.tar.gz) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/tbb2017_20170604oss_mac_slim.tar.gz") set(DOWNLOAD_MD5 62bde626b396f8e1a85c6a8ded1d8105) else () - set(DOWNLOAD_URL https://public.highfidelity.com/dependencies/tbb2017_20170604oss_lin_slim.tar.gz) + set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/tbb2017_20170604oss_lin_slim.tar.gz") set(DOWNLOAD_MD5 2a5c721f40fa3503ffc12c18dd00011c) endif () diff --git a/cmake/externals/vhacd/CMakeLists.txt b/cmake/externals/vhacd/CMakeLists.txt index fe19f7ac7a..5fb89b7e9b 100644 --- a/cmake/externals/vhacd/CMakeLists.txt +++ b/cmake/externals/vhacd/CMakeLists.txt @@ -7,7 +7,7 @@ endif () include(ExternalProject) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/v-hacd-master.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/v-hacd-master.zip" URL_MD5 3bfc94f8dd3dfbfe8f4dc088f4820b3e CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build diff --git a/cmake/externals/wasapi/CMakeLists.txt b/cmake/externals/wasapi/CMakeLists.txt index 286d18e2b5..bc8148c278 100644 --- a/cmake/externals/wasapi/CMakeLists.txt +++ b/cmake/externals/wasapi/CMakeLists.txt @@ -6,7 +6,7 @@ if (WIN32) include(ExternalProject) ExternalProject_Add( ${EXTERNAL_NAME} - URL https://public.highfidelity.com/dependencies/qtaudio_wasapi13.zip + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/qtaudio_wasapi13.zip" URL_MD5 aa56a45f19c18caee13d29a40d1d7d28 CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/cmake/ports/openssl-android/portfile.cmake b/cmake/ports/openssl-android/portfile.cmake index 54936d254d..372a9fceef 100644 --- a/cmake/ports/openssl-android/portfile.cmake +++ b/cmake/ports/openssl-android/portfile.cmake @@ -2,10 +2,12 @@ include(vcpkg_common_functions) set(OPENSSL_VERSION 1.1.0g) set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) + message("MASTER_COPY_SOURCE_PATH ${MASTER_COPY_SOURCE_PATH}") vcpkg_download_distfile( OPENSSL_SOURCE_ARCHIVE - URLS https://hifi-public.s3.amazonaws.com/dependencies/android/openssl-1.1.0g_armv8.tgz?versionId=AiiPjmgUZTgNj7YV1EEx2lL47aDvvvAW + URLS "${EXTERNAL_BUILD_ASSETS}/dependencies/android/openssl-1.1.0g_armv8.tgz?versionId=AiiPjmgUZTgNj7YV1EEx2lL47aDvvvAW" SHA512 5d7bb6e5d3db2340449e2789bcd72da821f0e57483bac46cf06f735dffb5d73c1ca7cc53dd48f3b3979d0fe22b3ae61997c516fc0c4611af4b4b7f480e42b992 FILENAME openssl-1.1.0g_armv8.tgz ) diff --git a/cmake/ports/webrtc/portfile.cmake b/cmake/ports/webrtc/portfile.cmake index b5b46723bd..fdc653d6a5 100644 --- a/cmake/ports/webrtc/portfile.cmake +++ b/cmake/ports/webrtc/portfile.cmake @@ -2,19 +2,21 @@ include(vcpkg_common_functions) set(WEBRTC_VERSION 20190626) set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) + if (ANDROID) # this is handled by hifi_android.py elseif (WIN32) vcpkg_download_distfile( WEBRTC_SOURCE_ARCHIVE - URLS https://hifi-public.s3.amazonaws.com/seth/webrtc-20190626-windows.zip + URLS "${EXTERNAL_BUILD_ASSETS}/seth/webrtc-20190626-windows.zip" SHA512 c0848eddb1579b3bb0496b8785e24f30470f3c477145035fd729264a326a467b9467ae9f426aa5d72d168ad9e9bf2c279150744832736bdf39064d24b04de1a3 FILENAME webrtc-20190626-windows.zip ) elseif (APPLE) vcpkg_download_distfile( WEBRTC_SOURCE_ARCHIVE - URLS https://hifi-public.s3.amazonaws.com/seth/webrtc-m78-osx.tar.gz + URLS "${EXTERNAL_BUILD_ASSETS}/seth/webrtc-m78-osx.tar.gz" SHA512 8b547da921cc96f5c22b4253a1c9e707971bb627898fbdb6b238ef1318c7d2512e878344885c936d4bd6a66005cc5b63dfc3fa5ddd14f17f378dcaa17b5e25df FILENAME webrtc-m78-osx.tar.gz ) @@ -22,7 +24,7 @@ else () # else Linux desktop vcpkg_download_distfile( WEBRTC_SOURCE_ARCHIVE - URLS https://hifi-public.s3.amazonaws.com/seth/webrtc-20190626-linux.tar.gz + URLS "${EXTERNAL_BUILD_ASSETS}/seth/webrtc-20190626-linux.tar.gz" SHA512 07d7776551aa78cb09a3ef088a8dee7762735c168c243053b262083d90a1d258cec66dc386f6903da5c4461921a3c2db157a1ee106a2b47e7756cb424b66cc43 FILENAME webrtc-20190626-linux.tar.gz ) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 6ec2184d45..94cac9afa2 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -9,6 +9,7 @@ import tempfile import json import xml.etree.ElementTree as ET import functools +from os import path print = functools.partial(print, flush=True) @@ -36,6 +37,7 @@ endif() self.sourcePortsPath = args.ports_path self.id = hifi_utils.hashFolder(self.sourcePortsPath)[:8] self.configFilePath = os.path.join(args.build_root, 'vcpkg.cmake') + self.assets_url = self.readVar('EXTERNAL_BUILD_ASSETS') # OS dependent information system = platform.system() @@ -72,19 +74,19 @@ endif() if 'Windows' == system: self.exe = os.path.join(self.path, 'vcpkg.exe') self.bootstrapCmd = 'bootstrap-vcpkg.bat' - self.vcpkgUrl = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/vcpkg-win32.tar.gz?versionId=YZYkDejDRk7L_hrK_WVFthWvisAhbDzZ' + self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/vcpkg-win32.tar.gz%3FversionId=YZYkDejDRk7L_hrK_WVFthWvisAhbDzZ' self.vcpkgHash = '3e0ff829a74956491d57666109b3e6b5ce4ed0735c24093884317102387b2cb1b2cd1ff38af9ed9173501f6e32ffa05cc6fe6d470b77a71ca1ffc3e0aa46ab9e' self.hostTriplet = 'x64-windows' elif 'Darwin' == system: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmd = 'bootstrap-vcpkg.sh' - self.vcpkgUrl = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/vcpkg-osx.tar.gz?versionId=_fhqSxjfrtDJBvEsQ8L_ODcdUjlpX9cc' + self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/vcpkg-osx.tar.gz%3FversionId=_fhqSxjfrtDJBvEsQ8L_ODcdUjlpX9cc' self.vcpkgHash = '519d666d02ef22b87c793f016ca412e70f92e1d55953c8f9bd4ee40f6d9f78c1df01a6ee293907718f3bbf24075cc35492fb216326dfc50712a95858e9cbcb4d' self.hostTriplet = 'x64-osx' else: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmd = 'bootstrap-vcpkg.sh' - self.vcpkgUrl = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/vcpkg-linux.tar.gz?versionId=97Nazh24etEVKWz33XwgLY0bvxEfZgMU' + self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/vcpkg-linux.tar.gz%3FversionId=97Nazh24etEVKWz33XwgLY0bvxEfZgMU' self.vcpkgHash = '6a1ce47ef6621e699a4627e8821ad32528c82fce62a6939d35b205da2d299aaa405b5f392df4a9e5343dd6a296516e341105fbb2dd8b48864781d129d7fba10d' self.hostTriplet = 'x64-linux' @@ -94,6 +96,10 @@ endif() else: self.triplet = self.hostTriplet + def readVar(self, var): + with open(os.path.join(self.args.build_root, '_env', var + ".txt")) as fp: + return fp.read() + def upToDate(self): # Prevent doing a clean if we've explcitly set a directory for vcpkg if self.args.vcpkg_root is not None: @@ -115,6 +121,17 @@ endif() return False return True + def copyEnv(self): + print("Passing on variables to vcpkg") + srcEnv = os.path.join(self.args.build_root, "_env") + destEnv = os.path.join(self.path, "_env") + + if path.exists(destEnv): + shutil.rmtree(destEnv) + + shutil.copytree(srcEnv, destEnv) + + def clean(self): print("Cleaning vcpkg installation at {}".format(self.path)) if os.path.isdir(self.path): @@ -124,6 +141,7 @@ endif() # Make sure the VCPKG prerequisites are all there. def bootstrap(self): if self.upToDate(): + self.copyEnv() return self.clean() @@ -160,6 +178,7 @@ endif() if (os.path.isdir(portsPath)): shutil.rmtree(portsPath, ignore_errors=True) shutil.copytree(self.sourcePortsPath, portsPath) + self.copyEnv() def run(self, commands): actualCommands = [self.exe, '--vcpkg-root', self.path] @@ -199,7 +218,7 @@ endif() # vcpkg prebuilt if not os.path.isdir(os.path.join(self.path, 'installed', 'arm64-android')): dest = os.path.join(self.path, 'installed') - url = "https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/vcpkg-arm64-android.tar.gz" + url = self.assets_url + "/dependencies/vcpkg/vcpkg-arm64-android.tar.gz" # FIXME I don't know why the hash check frequently fails here. If you examine the file later it has the right hash #hash = "832f82a4d090046bdec25d313e20f56ead45b54dd06eee3798c5c8cbdd64cce4067692b1c3f26a89afe6ff9917c10e4b601c118bea06d23f8adbfe5c0ec12bc3" #hifi_utils.downloadAndExtract(url, dest, hash) @@ -263,14 +282,14 @@ endif() url = 'NOT DEFINED' if platform.system() == 'Windows': - url = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/qt5-install-5.12.3-windows3.tar.gz' + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-windows3.tar.gz' elif platform.system() == 'Darwin': - url = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/qt5-install-5.12.3-macos.tar.gz?versionId=bLAgnoJ8IMKpqv8NFDcAu8hsyQy3Rwwz' + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-macos.tar.gz%3FversionId=bLAgnoJ8IMKpqv8NFDcAu8hsyQy3Rwwz' elif platform.system() == 'Linux': if platform.linux_distribution()[1][:3] == '16.': - url = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-16.04-with-symbols.tar.gz' + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-16.04-with-symbols.tar.gz' elif platform.linux_distribution()[1][:3] == '18.': - url = 'https://hifi-public.s3.amazonaws.com/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-18.04.tar.gz' + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-18.04.tar.gz' else: print('UNKNOWN LINUX VERSION!!!') return; diff --git a/launchers/qt/CMakeLists.txt b/launchers/qt/CMakeLists.txt index 8155400f45..596f3b7d5c 100644 --- a/launchers/qt/CMakeLists.txt +++ b/launchers/qt/CMakeLists.txt @@ -45,7 +45,7 @@ if (WIN32) ExternalProject_Add( qtlite - URL "https://public.highfidelity.com/dependencies/qtlite/qt-lite-5.9.9-win-oct-15-2019.zip" + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-win-oct-15-2019.zip" URL_HASH MD5=0176277bca37d219e83738caf3a698eb CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -78,7 +78,7 @@ endif () if (APPLE) ExternalProject_Add( qtlite - URL "https://public.highfidelity.com/dependencies/qtlite/qt-lite-5.9.9-mac.zip" + URL "${EXTERNAL_BUILD_ASSETS}/dependencies/qtlite/qt-lite-5.9.9-mac.zip" URL_HASH MD5=0cd78d40e5f539a7e314cf99b6cae0d0 CONFIGURE_COMMAND "" BUILD_COMMAND "" From 7858b29fbff6ba1a87acb2be4995649aed54bba1 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 18 Dec 2019 11:16:41 -0600 Subject: [PATCH 112/396] Removed trailing whitespace in CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 476164b845..d45081570b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ endif() # # 1. This file (CMakeLists.txt) runs first and is authoritative. It is the one # that reads the environment, sets variables and sets a default value. -# 2. It writes the contents of the variables to +# 2. It writes the contents of the variables to # $CMAKE_CURRENT_BINARY_DIR/_env/$VARNAME # 3. hifi_vcpkg.py takes the _env directory, and copies it to the vcpkg dir. # This solves the issue of CMakeLists.txt not knowing where the vcpkg dir is. From 0f3e8d21016511695009049180856d314b621cb8 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 18 Dec 2019 20:08:20 +0000 Subject: [PATCH 113/396] Made requested changes --- interface/src/Application.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 783cb46dab..5aaae6986c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3182,7 +3182,6 @@ static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://content.highfidelity void Application::initializeUi() { - // Allow remote QML content from trusted sources ONLY { auto defaultUrlValidator = OffscreenQmlSurface::getUrlValidator(); @@ -3201,18 +3200,15 @@ void Application::initializeUi() { bool isInWhitelist = false; // assume unsafe for (const auto& str : safeURLS) { - qDebug() << "url.toString().startsWith(str) = " << url.toString().startsWith(str); - qDebug() << "str.endsWith('.qml ') = " << str.endsWith(".qml"); if (!str.isEmpty() && str.endsWith(".qml") && url.toString().endsWith(".qml") && url.toString().startsWith(str)) { - qDebug() << "found matching url!" << url.host(); + qCDebug(interfaceapp) << "Found matching url!" << url.host(); isInWhitelist = true; return true; - break; // bail early since we found a match } } - qDebug() << "no matching url :c" << url.host(); + qCDebug(interfaceapp) << "No matching url" << url.host(); return defaultUrlValidator(url); }; OffscreenQmlSurface::setUrlValidator(newValidator); From b923c3f7f1e88a702ee7aa70dd8a000151eaeb19 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 18 Dec 2019 17:33:35 -0600 Subject: [PATCH 114/396] Update Primary CMakeLists project name to Athena Having a "hifi.sln" file feels wrong. Let's fix that. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d45081570b..b2dc89d105 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,7 +82,7 @@ if(NOT EXISTS "${CMAKE_BINARY_DIR}/vcpkg.cmake") endif() include("${CMAKE_BINARY_DIR}/vcpkg.cmake") -project(hifi) +project(athena) include("cmake/init.cmake") include("cmake/compiler.cmake") From 7d402f4baeafa1ec1ee67858c53bec5b712bc6ca Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Thu, 19 Dec 2019 23:19:05 +0000 Subject: [PATCH 115/396] Changed so it will fail to load VR straight away instead of trying so much it causes audio failures --- plugins/openvr/src/OpenVrHelpers.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index 108431a8ac..f00b5d184f 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -108,9 +108,11 @@ QString getVrSettingString(const char* section, const char* setting) { return result; } +int headsetNotConnected = -1; + vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); - if (hmdPresent) { + if (hmdPresent && (headsetNotConnected <= 0)) { Lock lock(mutex); if (!activeHmd) { #if DEV_BUILD @@ -122,6 +124,14 @@ vr::IVRSystem* acquireOpenVrSystem() { #if DEV_BUILD qCDebug(displayplugins) << "OpenVR display: HMD is " << activeHmd << " error is " << eError; #endif + + if (eError == 108) { // vr::HmdError_Init_HmdNotFound + headsetNotConnected = 1; + activeHmd = nullptr; + #if DEV_BUILD + qCDebug(displayplugins) << "OpenVR: No HMD connected, setting nullptr!"; + #endif + } } if (activeHmd) { #if DEV_BUILD From 83e9b891d87774e631f27a5b3261332a4e874d6f Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Thu, 19 Dec 2019 23:31:10 +0000 Subject: [PATCH 116/396] Workaround for Secondary camera crash --- libraries/render/src/render/CullTask.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/render/src/render/CullTask.cpp b/libraries/render/src/render/CullTask.cpp index 068d6f9851..8cedbc7f3e 100644 --- a/libraries/render/src/render/CullTask.cpp +++ b/libraries/render/src/render/CullTask.cpp @@ -130,6 +130,10 @@ void FetchSpatialTree::configure(const Config& config) { } void FetchSpatialTree::run(const RenderContextPointer& renderContext, const Inputs& inputs, ItemSpatialTree::ItemSelection& outSelection) { + if (!renderContext){ + return; + } + // start fresh outSelection.clear(); @@ -142,6 +146,10 @@ void FetchSpatialTree::run(const RenderContextPointer& renderContext, const Inpu RenderArgs* args = renderContext->args; auto& scene = renderContext->_scene; + if (!args) { + return; + } + auto queryFrustum = args->getViewFrustum(); // Eventually use a frozen frustum if (_freezeFrustum) { From 95c7998720eb2d061792e738f20262400c039454 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Thu, 19 Dec 2019 23:34:29 +0000 Subject: [PATCH 117/396] Changed code to correct type --- plugins/openvr/src/OpenVrHelpers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index f00b5d184f..d184f715e8 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -108,11 +108,11 @@ QString getVrSettingString(const char* section, const char* setting) { return result; } -int headsetNotConnected = -1; +bool isHMDConnected = false; vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); - if (hmdPresent && (headsetNotConnected <= 0)) { + if (hmdPresent && (!isHMDConnected)) { Lock lock(mutex); if (!activeHmd) { #if DEV_BUILD @@ -126,7 +126,7 @@ vr::IVRSystem* acquireOpenVrSystem() { #endif if (eError == 108) { // vr::HmdError_Init_HmdNotFound - headsetNotConnected = 1; + isHMDConnected = true; activeHmd = nullptr; #if DEV_BUILD qCDebug(displayplugins) << "OpenVR: No HMD connected, setting nullptr!"; From a9ce336f6ca8fb6be02f33c7d35181ebd6e93da5 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins <31552479+FluffyJenkins@users.noreply.github.com> Date: Thu, 19 Dec 2019 23:52:49 +0000 Subject: [PATCH 118/396] Made thoys happy by renaming a varible --- plugins/openvr/src/OpenVrHelpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index d184f715e8..dafb3c4928 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -108,7 +108,7 @@ QString getVrSettingString(const char* section, const char* setting) { return result; } -bool isHMDConnected = false; +bool isHMDInErrorState = false; vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); From 9f3772093a678da77597f0fe313322a158e6e348 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins <31552479+FluffyJenkins@users.noreply.github.com> Date: Thu, 19 Dec 2019 23:54:34 +0000 Subject: [PATCH 119/396] Its late --- plugins/openvr/src/OpenVrHelpers.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index dafb3c4928..c05f546a62 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -112,7 +112,7 @@ bool isHMDInErrorState = false; vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); - if (hmdPresent && (!isHMDConnected)) { + if (hmdPresent && (!isHMDInErrorState)) { Lock lock(mutex); if (!activeHmd) { #if DEV_BUILD @@ -126,7 +126,7 @@ vr::IVRSystem* acquireOpenVrSystem() { #endif if (eError == 108) { // vr::HmdError_Init_HmdNotFound - isHMDConnected = true; + isHMDInErrorState = true; activeHmd = nullptr; #if DEV_BUILD qCDebug(displayplugins) << "OpenVR: No HMD connected, setting nullptr!"; From ac9adc3dfff963277f50f4c14e1e0f9d9b07fce2 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins <31552479+FluffyJenkins@users.noreply.github.com> Date: Fri, 20 Dec 2019 00:00:17 +0000 Subject: [PATCH 120/396] Update plugins/openvr/src/OpenVrHelpers.cpp I screm Co-Authored-By: Thijs Wenker --- plugins/openvr/src/OpenVrHelpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index c05f546a62..bf857ecc41 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -112,7 +112,7 @@ bool isHMDInErrorState = false; vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); - if (hmdPresent && (!isHMDInErrorState)) { + if (hmdPresent && !isHMDInErrorState) { Lock lock(mutex); if (!activeHmd) { #if DEV_BUILD From 6563d32395ac02a820563ddb53290aaf8266436d Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Fri, 20 Dec 2019 00:57:38 +0000 Subject: [PATCH 121/396] Fixed something thats for sure --- plugins/openvr/src/OpenVrHelpers.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index d184f715e8..ce60719d67 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -108,11 +108,11 @@ QString getVrSettingString(const char* section, const char* setting) { return result; } -bool isHMDConnected = false; +bool isHMDInErrorState = false; vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); - if (hmdPresent && (!isHMDConnected)) { + if (hmdPresent && !isHMDInErrorState) { Lock lock(mutex); if (!activeHmd) { #if DEV_BUILD @@ -125,8 +125,8 @@ vr::IVRSystem* acquireOpenVrSystem() { qCDebug(displayplugins) << "OpenVR display: HMD is " << activeHmd << " error is " << eError; #endif - if (eError == 108) { // vr::HmdError_Init_HmdNotFound - isHMDConnected = true; + if (eError == vr::VRInitError_Init_HmdNotFound) { + isHMDInErrorState = true; activeHmd = nullptr; #if DEV_BUILD qCDebug(displayplugins) << "OpenVR: No HMD connected, setting nullptr!"; From 74de0c2f2c199ed677294628b7461cf1241d4040 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Fri, 20 Dec 2019 01:09:31 +0000 Subject: [PATCH 122/396] Creating communityModules folder with notificationCore.js --- .../notificationCore/notificationCore.js | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 scripts/communityModules/notificationCore/notificationCore.js diff --git a/scripts/communityModules/notificationCore/notificationCore.js b/scripts/communityModules/notificationCore/notificationCore.js new file mode 100644 index 0000000000..41405eefeb --- /dev/null +++ b/scripts/communityModules/notificationCore/notificationCore.js @@ -0,0 +1,161 @@ +var notificationList = []; + +var sizeData = {30: {widthMul: 1.8, heightMul: 2.05, split: 35, size: 30}}; + +var offset = 10; + + +init(); + +function init(){ + Messages.messageReceived.connect(messageReceived); +} + +function messageReceived(channel, message, sender, local) { + if (local) { + if (channel === "Floof-Notif") { + var cmd = {FAILED: true}; + try { + cmd = JSON.parse(message); + } catch (e) { + // + } + if (!cmd.FAILED) { + if (cmd.type === "options") { + if (cmd.offset) { + notifCore.setOffset(cmd.offset); + } + } else { + notifCore.add(cmd.text, cmd.sender, cmd.colour); + } + } + } + } +} + +var notifCore = { + setOffset: function (offsetHeight) { + if (offsetHeight === -1) { + offset = 10; + } else { + offset = offsetHeight; + } + }, + add: function (text, sender, colour) { + sender = sender ? sender : "NoName"; + colour = colour ? colour : {}; + colour.text = colour.text ? colour.text : {red: 255, green: 255, blue: 255}; + colour.bg = colour.bg ? colour.bg : {red: 10, green: 10, blue: 10}; + var lines = text.split("\n"); + for (var i = lines.length - 1; i >= 0; i--) { + if (i === 0) { + notif("[" + time() + "] " + sender + ": " + lines[i], colour); + } else { + notif(lines[i], colour); + } + } + } +}; + +function time() { + var d = new Date(); + var h = (d.getHours()).toString(); + var m = (d.getMinutes()).toString(); + var s = (d.getSeconds()).toString(); + var h2 = ("0" + h).slice(-2); + var m2 = ("0" + m).slice(-2); + var s2 = ("0" + s).slice(-2); + s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1); + return h2 + ":" + m2 + ":" + s2; +} + +function findIndex(id) { + var index = -1; + notificationList.forEach(function (noti, i) { + if (noti.id === id) { + index = i; + } + }); + return index; +} + +function cleanUp() { + try { + Messages.messageReceived.disconnect(messageReceived); + } catch (e) { + // empty + } + notificationList.forEach(function (noti) { + Overlays.deleteOverlay(noti.id); + }); +} + +function notif(text, colour) { + + var noti = { + text: " " + text + " ", + time: 10 * 1000, + timeout: null, + timer: null, + fade: null, + colour: colour, + alpha: {text: 1, bg: 0.9} + }; + noti.id = Overlays.addOverlay("text", { + text: '', + font: {size: sizeData[30].size}, + x: 0, + y: Window.innerHeight, + color: colour.text, + backgroundColor: colour.bg, + backgroundAlpha: noti.alpha.bg, + alpha: noti.alpha.text + }); + var ts = Overlays.textSize(noti.id, noti.text); + ts.height *= sizeData[30].heightMul; + ts.width *= sizeData[30].widthMul; + ts.y = Window.innerHeight - (sizeData[30].split * (notificationList.length)) - offset; + ts.text = noti.text; + Overlays.editOverlay(noti.id, ts); + console.log("added overlay"); + + noti.update = function () { + var i = notificationList.length - findIndex(noti.id); + Overlays.editOverlay(noti.id, { + y: Window.innerHeight - (sizeData[30].split * (i)) - offset + }); + }; + + noti.startFade = function () { + noti.fade = Script.setInterval(noti.fadeOut, 50); + }; + + noti.fadeOut = function () { + noti.alpha.text -= 0.1; + noti.alpha.bg -= 0.1; + Overlays.editOverlay(noti.id, { + alpha: noti.alpha.text, + backgroundAlpha: noti.alpha.bg + }); + + if (Math.max(noti.alpha.text, noti.alpha.bg) <= 0) { + Script.clearInterval(noti.fade); + noti.end(); + } + }; + + noti.end = function () { + console.log("removed overlay"); + Script.clearInterval(noti.timer); + Script.clearTimeout(noti.timeout); + Overlays.deleteOverlay(noti.id); + notificationList.splice(findIndex(noti.id), 1); + }; + + noti.timer = Script.setInterval(noti.update, 10); + noti.timeout = Script.setTimeout(noti.startFade, noti.time); + + notificationList.push(noti); +} + +Script.scriptEnding.connect(cleanUp); \ No newline at end of file From 7d0343966afbdcbfcd8f0c38e3f62d6285c3b471 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Fri, 20 Dec 2019 01:19:04 +0000 Subject: [PATCH 123/396] Made some changes to hopefully pass code review --- .../notificationCore/notificationCore.js | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/scripts/communityModules/notificationCore/notificationCore.js b/scripts/communityModules/notificationCore/notificationCore.js index 41405eefeb..b3edfa52df 100644 --- a/scripts/communityModules/notificationCore/notificationCore.js +++ b/scripts/communityModules/notificationCore/notificationCore.js @@ -2,8 +2,10 @@ var notificationList = []; var sizeData = {30: {widthMul: 1.8, heightMul: 2.05, split: 35, size: 30}}; -var offset = 10; +var DEFAULT_SIZE = 30; +var DEFAULT_OFFSET = 10; +var offset = DEFAULT_OFFSET; init(); @@ -23,20 +25,20 @@ function messageReceived(channel, message, sender, local) { if (!cmd.FAILED) { if (cmd.type === "options") { if (cmd.offset) { - notifCore.setOffset(cmd.offset); + notificationCore.setOffset(cmd.offset); } } else { - notifCore.add(cmd.text, cmd.sender, cmd.colour); + notificationCore.add(cmd.text, cmd.sender, cmd.colour); } } } } } -var notifCore = { +var notificationCore = { setOffset: function (offsetHeight) { if (offsetHeight === -1) { - offset = 10; + offset = DEFAULT_OFFSET; } else { offset = offsetHeight; } @@ -103,7 +105,7 @@ function notif(text, colour) { }; noti.id = Overlays.addOverlay("text", { text: '', - font: {size: sizeData[30].size}, + font: {size: sizeData[DEFAULT_SIZE].size}, x: 0, y: Window.innerHeight, color: colour.text, @@ -111,18 +113,18 @@ function notif(text, colour) { backgroundAlpha: noti.alpha.bg, alpha: noti.alpha.text }); + var ts = Overlays.textSize(noti.id, noti.text); - ts.height *= sizeData[30].heightMul; - ts.width *= sizeData[30].widthMul; - ts.y = Window.innerHeight - (sizeData[30].split * (notificationList.length)) - offset; + ts.height *= sizeData[DEFAULT_SIZE].heightMul; + ts.width *= sizeData[DEFAULT_SIZE].widthMul; + ts.y = Window.innerHeight - (sizeData[DEFAULT_SIZE].split * (notificationList.length)) - offset; ts.text = noti.text; Overlays.editOverlay(noti.id, ts); - console.log("added overlay"); noti.update = function () { var i = notificationList.length - findIndex(noti.id); Overlays.editOverlay(noti.id, { - y: Window.innerHeight - (sizeData[30].split * (i)) - offset + y: Window.innerHeight - (sizeData[DEFAULT_SIZE].split * (i)) - offset }); }; From c34cd996dfe7ae8763f900b8d8d5dab23e3afd49 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 17 Dec 2019 00:03:59 +0100 Subject: [PATCH 124/396] change Metaverse API from setting --- assignment-client/src/avatars/MixerAvatar.cpp | 3 +- .../src/entities/EntityServer.cpp | 1 + domain-server/src/DomainServer.cpp | 9 +++-- ice-server/src/IceServer.cpp | 3 +- interface/src/Application.cpp | 5 ++- interface/src/commerce/Ledger.cpp | 16 ++++++-- interface/src/commerce/QmlCommerce.cpp | 4 +- interface/src/networking/CloseEventSender.cpp | 3 +- interface/src/ui/AddressBarDialog.h | 3 +- .../ui/overlays/ContextOverlayInterface.cpp | 3 +- .../src/RenderableWebEntityItem.cpp | 1 + libraries/entities/src/EntityItem.cpp | 3 +- libraries/entities/src/EntityTree.cpp | 5 ++- .../src/material-networking/TextureCache.cpp | 5 ++- libraries/networking/src/AccountManager.h | 5 ++- libraries/networking/src/AssetUtils.cpp | 1 + libraries/networking/src/DomainHandler.h | 1 + .../networking/src/FileResourceRequest.cpp | 1 + libraries/networking/src/MetaverseAPI.cpp | 38 +++++++++++++++++++ libraries/networking/src/MetaverseAPI.h | 22 +++++++++++ .../networking/src/NetworkingConstants.cpp | 24 ------------ .../networking/src/NetworkingConstants.h | 5 +-- .../src/OAuthNetworkAccessManager.cpp | 3 +- .../procedural/src/procedural/Procedural.cpp | 1 + libraries/qml/src/qml/OffscreenSurface.cpp | 1 + .../script-engine/src/XMLHttpRequestClass.cpp | 5 ++- libraries/ui/src/ui/types/RequestFilters.cpp | 3 +- tools/ac-client/src/ACClientApp.cpp | 3 +- tools/atp-client/src/ATPClientApp.cpp | 3 +- 29 files changed, 123 insertions(+), 57 deletions(-) create mode 100644 libraries/networking/src/MetaverseAPI.cpp create mode 100644 libraries/networking/src/MetaverseAPI.h delete mode 100644 libraries/networking/src/NetworkingConstants.cpp diff --git a/assignment-client/src/avatars/MixerAvatar.cpp b/assignment-client/src/avatars/MixerAvatar.cpp index 5203d25af6..f3d7bb8995 100644 --- a/assignment-client/src/avatars/MixerAvatar.cpp +++ b/assignment-client/src/avatars/MixerAvatar.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include "ClientTraitsHandler.h" @@ -235,7 +236,7 @@ void MixerAvatar::requestCurrentOwnership() { QNetworkRequest networkRequest; networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath(POP_MARKETPLACE_API); networkRequest.setUrl(requestURL); diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index 6bbf4a0e3b..a6ab382781 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "../AssignmentDynamicFactory.h" diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index ceb4679137..a9bc24c483 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -121,7 +122,7 @@ bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection, root.insert(requestSubobjectKey, subobject); QJsonDocument doc { root }; - QUrl url { NetworkingConstants::METAVERSE_SERVER_URL().toString() + metaversePath }; + QUrl url{ MetaverseAPI::getCurrentMetaverseServerURL().toString() + metaversePath }; QNetworkRequest req(url); req.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); @@ -516,7 +517,7 @@ bool DomainServer::optionallySetupOAuth() { // if we don't have an oauth provider URL then we default to the default node auth url if (_oauthProviderURL.isEmpty()) { - _oauthProviderURL = NetworkingConstants::METAVERSE_SERVER_URL(); + _oauthProviderURL = MetaverseAPI::getCurrentMetaverseServerURL(); } _oauthClientSecret = QProcessEnvironment::systemEnvironment().value(OAUTH_CLIENT_SECRET_ENV); @@ -2222,7 +2223,7 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url return true; } else if (url.path() == URI_API_METAVERSE_INFO) { QJsonObject rootJSON { - { "metaverse_url", NetworkingConstants::METAVERSE_SERVER_URL().toString() } + { "metaverse_url", MetaverseAPI::getCurrentMetaverseServerURL().toString() } }; QJsonDocument docJSON{ rootJSON }; @@ -2449,7 +2450,7 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url QJsonDocument doc(root); - QUrl url { NetworkingConstants::METAVERSE_SERVER_URL().toString() + "/api/v1/places/" + place_id }; + QUrl url { MetaverseAPI::getCurrentMetaverseServerURL().toString() + "/api/v1/places/" + place_id }; url.setQuery("access_token=" + accessTokenVariant.toString()); diff --git a/ice-server/src/IceServer.cpp b/ice-server/src/IceServer.cpp index 6896c7a9c9..2d601048be 100644 --- a/ice-server/src/IceServer.cpp +++ b/ice-server/src/IceServer.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -209,7 +210,7 @@ void IceServer::requestDomainPublicKey(const QUuid& domainID) { // send a request to the metaverse API for the public key for this domain auto& networkAccessManager = NetworkAccessManager::getInstance(); - QUrl publicKeyURL { NetworkingConstants::METAVERSE_SERVER_URL() }; + QUrl publicKeyURL{ MetaverseAPI::getCurrentMetaverseServerURL() }; QString publicKeyPath = QString("/api/v1/domains/%1/public_key").arg(uuidStringWithoutCurlyBraces(domainID)); publicKeyURL.setPath(publicKeyPath); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9c60139d06..3eb83afe73 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -111,6 +111,7 @@ #include #include #include +#include #include #include #include @@ -1216,7 +1217,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // set the account manager's root URL and trigger a login request if we don't have the access token accountManager->setIsAgent(true); - accountManager->setAuthURL(NetworkingConstants::METAVERSE_SERVER_URL()); + accountManager->setAuthURL(MetaverseAPI::getCurrentMetaverseServerURL()); if (!accountManager->hasKeyPair()) { accountManager->generateNewUserKeypair(); } @@ -8466,7 +8467,7 @@ void Application::loadAddAvatarBookmarkDialog() const { void Application::loadAvatarBrowser() const { auto tablet = dynamic_cast(DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system")); // construct the url to the marketplace item - QString url = NetworkingConstants::METAVERSE_SERVER_URL().toString() + "/marketplace?category=avatars"; + QString url = MetaverseAPI::getCurrentMetaverseServerURL().toString() + "/marketplace?category=avatars"; QString MARKETPLACES_INJECT_SCRIPT_PATH = "file:///" + qApp->applicationDirPath() + "/scripts/system/html/js/marketplacesInject.js"; tablet->gotoWebScreen(url, MARKETPLACES_INJECT_SCRIPT_PATH); diff --git a/interface/src/commerce/Ledger.cpp b/interface/src/commerce/Ledger.cpp index 60fefa5878..4a41374ba3 100644 --- a/interface/src/commerce/Ledger.cpp +++ b/interface/src/commerce/Ledger.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include "Wallet.h" @@ -181,21 +182,28 @@ QString hfcString(const QJsonValue& sentValue, const QJsonValue& receivedValue) } return result; } -static const QString USER_PAGE_BASE_URL = NetworkingConstants::METAVERSE_SERVER_URL().toString() + "/users/"; -static const QString PLACE_PAGE_BASE_URL = NetworkingConstants::METAVERSE_SERVER_URL().toString() + "/places/"; + +QString getUserPageBaseUrl() { + return MetaverseAPI::getCurrentMetaverseServerURL().toString() + "/users/"; +} + +QString getPlacePageBaseUrl() { + return MetaverseAPI::getCurrentMetaverseServerURL().toString() + "/places/"; +} + static const QStringList KNOWN_USERS(QStringList() << "highfidelity" << "marketplace"); QString userLink(const QString& username, const QString& placename) { if (username.isEmpty()) { if (placename.isEmpty()) { return QString("someone"); } else { - return QString("someone nearby").arg(PLACE_PAGE_BASE_URL, placename); + return QString("someone nearby").arg(getPlacePageBaseUrl(), placename); } } if (KNOWN_USERS.contains(username)) { return username; } - return QString("%2").arg(USER_PAGE_BASE_URL, username); + return QString("%2").arg(getUserPageBaseUrl(), username); } QString transactionString(const QJsonObject& valueObject) { diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index c8ea044f4b..47105e0f3a 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -72,11 +72,11 @@ void QmlCommerce::openSystemApp(const QString& appName) { else if (appPathIter->contains(".html", Qt::CaseInsensitive)) { QMap::const_iterator injectIter = systemInject.find(appName); if (appPathIter == systemInject.end()) { - tablet->gotoWebScreen(NetworkingConstants::METAVERSE_SERVER_URL().toString() + *appPathIter); + tablet->gotoWebScreen(MetaverseAPI::getCurrentMetaverseServerURL().toString() + *appPathIter); } else { QString inject = "file:///" + qApp->applicationDirPath() + *injectIter; - tablet->gotoWebScreen(NetworkingConstants::METAVERSE_SERVER_URL().toString() + *appPathIter, inject); + tablet->gotoWebScreen(MetaverseAPI::getCurrentMetaverseServerURL().toString() + *appPathIter, inject); } } else { diff --git a/interface/src/networking/CloseEventSender.cpp b/interface/src/networking/CloseEventSender.cpp index 16549d5510..5397c221ad 100644 --- a/interface/src/networking/CloseEventSender.cpp +++ b/interface/src/networking/CloseEventSender.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -28,7 +29,7 @@ QNetworkRequest createNetworkRequest() { QNetworkRequest request; - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath(USER_ACTIVITY_URL); request.setUrl(requestURL); diff --git a/interface/src/ui/AddressBarDialog.h b/interface/src/ui/AddressBarDialog.h index 1254fabbd2..aa3c11e810 100644 --- a/interface/src/ui/AddressBarDialog.h +++ b/interface/src/ui/AddressBarDialog.h @@ -15,6 +15,7 @@ #include #include +#include class AddressBarDialog : public OffscreenQmlDialog { Q_OBJECT @@ -30,7 +31,7 @@ public: bool forwardEnabled() { return _forwardEnabled; } bool useFeed() { return _useFeed; } void setUseFeed(bool useFeed) { if (_useFeed != useFeed) { _useFeed = useFeed; emit useFeedChanged(); } } - QString metaverseServerUrl() { return NetworkingConstants::METAVERSE_SERVER_URL().toString(); } + QString metaverseServerUrl() { return MetaverseAPI::getCurrentMetaverseServerURL().toString(); } signals: void backEnabledChanged(); diff --git a/interface/src/ui/overlays/ContextOverlayInterface.cpp b/interface/src/ui/overlays/ContextOverlayInterface.cpp index 1c8a9019ea..0f1c8978f0 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.cpp +++ b/interface/src/ui/overlays/ContextOverlayInterface.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -305,7 +306,7 @@ void ContextOverlayInterface::requestOwnershipVerification(const QUuid& entityID QNetworkRequest networkRequest; networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath("/api/v1/commerce/proof_of_purchase_status/transfer"); QJsonObject request; request["certificate_id"] = entityProperties.getCertificateID(); diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index b1feddfd47..1da4999bad 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -28,6 +28,7 @@ #include "EntitiesRendererLogging.h" #include +#include using namespace render; using namespace render::entities; diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 598ac17510..fbbfc8b626 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -3207,7 +3208,7 @@ void EntityItem::retrieveMarketplacePublicKey() { QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest networkRequest; networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath("/api/v1/commerce/marketplace_key"); QJsonObject request; networkRequest.setUrl(requestURL); diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 6c12c6d019..a7416eac79 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "AccountManager.h" #include #include @@ -1464,7 +1465,7 @@ void EntityTree::startDynamicDomainVerificationOnServer(float minimumAgeToRemove QNetworkRequest networkRequest; networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath("/api/v1/commerce/proof_of_purchase_status/location"); QJsonObject request; request["certificate_id"] = certificateID; @@ -1687,7 +1688,7 @@ void EntityTree::validatePop(const QString& certID, const EntityItemID& entityIt QNetworkRequest networkRequest; networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); + QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL(); requestURL.setPath("/api/v1/commerce/proof_of_purchase_status/transfer"); QJsonObject request; request["certificate_id"] = certID; diff --git a/libraries/material-networking/src/material-networking/TextureCache.cpp b/libraries/material-networking/src/material-networking/TextureCache.cpp index 8ffcad0c69..4831223fe9 100644 --- a/libraries/material-networking/src/material-networking/TextureCache.cpp +++ b/libraries/material-networking/src/material-networking/TextureCache.cpp @@ -43,9 +43,10 @@ #include #include -#include "NetworkLogging.h" +#include #include "MaterialNetworkingLogging.h" -#include "NetworkingConstants.h" +#include +#include #include #include diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index 2e94ccf0ea..37cb548b7e 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -24,8 +24,9 @@ #include "AccountSettings.h" #include "DataServerAccountInfo.h" #include "NetworkingConstants.h" +#include "MetaverseAPI.h" #include "NetworkAccessManager.h" -#include "SharedUtil.h" +#include class JSONCallbackParameters { public: @@ -97,7 +98,7 @@ public: void setTemporaryDomain(const QUuid& domainID, const QString& key); const QString& getTemporaryDomainKey(const QUuid& domainID) { return _accountInfo.getTemporaryDomainKey(domainID); } - QUrl getMetaverseServerURL() { return NetworkingConstants::METAVERSE_SERVER_URL(); } + QUrl getMetaverseServerURL() { return MetaverseAPI::getCurrentMetaverseServerURL(); } void removeAccountFromFile(); diff --git a/libraries/networking/src/AssetUtils.cpp b/libraries/networking/src/AssetUtils.cpp index 6fb914a8b2..b0eb19bb73 100644 --- a/libraries/networking/src/AssetUtils.cpp +++ b/libraries/networking/src/AssetUtils.cpp @@ -21,6 +21,7 @@ #include "NetworkAccessManager.h" #include "NetworkLogging.h" #include "NetworkingConstants.h" +#include "MetaverseAPI.h" #include "ResourceManager.h" diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index fb18866001..27dd7cd95d 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -29,6 +29,7 @@ #include "Node.h" #include "ReceivedMessage.h" #include "NetworkingConstants.h" +#include "MetaverseAPI.h" const unsigned short DEFAULT_DOMAIN_SERVER_PORT = 40102; const unsigned short DEFAULT_DOMAIN_SERVER_DTLS_PORT = 40103; diff --git a/libraries/networking/src/FileResourceRequest.cpp b/libraries/networking/src/FileResourceRequest.cpp index 11489f13bd..f9ec7797be 100644 --- a/libraries/networking/src/FileResourceRequest.cpp +++ b/libraries/networking/src/FileResourceRequest.cpp @@ -22,6 +22,7 @@ #include "NetworkLogging.h" #include "ResourceManager.h" #include "NetworkingConstants.h" +#include "MetaverseAPI.h" void FileResourceRequest::doSend() { auto statTracker = DependencyManager::get(); diff --git a/libraries/networking/src/MetaverseAPI.cpp b/libraries/networking/src/MetaverseAPI.cpp new file mode 100644 index 0000000000..0fb0bcecad --- /dev/null +++ b/libraries/networking/src/MetaverseAPI.cpp @@ -0,0 +1,38 @@ +// +// MetaverseAPI.cpp +// libraries/networking/src +// +// Created by Kalila (kasenvr) on 2019-12-16. +// Copyright 2019 Project Athena +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "MetaverseAPI.h" + +#include +#include +#include "NetworkingConstants.h" +#include + + +namespace MetaverseAPI { + // You can change the return of this function if you want to use a custom metaverse URL at compile time + // or you can pass a custom URL via the env variable + QUrl getCurrentMetaverseServerURL() { + QUrl selectedMetaverseURL; + Setting::Handle selectedMetaverseURLSetting("private/selectedMetaverseURL", + NetworkingConstants::METAVERSE_SERVER_URL_STABLE); + + selectedMetaverseURL = selectedMetaverseURLSetting.get(); + + const QString HIFI_METAVERSE_URL_ENV = "HIFI_METAVERSE_URL"; + + if (QProcessEnvironment::systemEnvironment().contains(HIFI_METAVERSE_URL_ENV)) { + return QUrl(QProcessEnvironment::systemEnvironment().value(HIFI_METAVERSE_URL_ENV)); + } + + return selectedMetaverseURL; + }; +} diff --git a/libraries/networking/src/MetaverseAPI.h b/libraries/networking/src/MetaverseAPI.h new file mode 100644 index 0000000000..423f465229 --- /dev/null +++ b/libraries/networking/src/MetaverseAPI.h @@ -0,0 +1,22 @@ +// +// MetaverseAPI.h +// libraries/networking/src +// +// Created by Kalila (kasenvr) on 2019-12-16. +// Copyright 2019 Project Athena +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef athena_MetaverseAPI_h +#define athena_MetaverseAPI_h + +#include +#include + +namespace MetaverseAPI { + QUrl getCurrentMetaverseServerURL(); +} + +#endif // athena_MetaverseAPI_h diff --git a/libraries/networking/src/NetworkingConstants.cpp b/libraries/networking/src/NetworkingConstants.cpp deleted file mode 100644 index 622c307efa..0000000000 --- a/libraries/networking/src/NetworkingConstants.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// NetworkingConstants.cpp -// libraries/networking/src -// -// Created by Seth Alves on 2018-2-28. -// Copyright 2018 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "NetworkingConstants.h" - -namespace NetworkingConstants { - // You can change the return of this function if you want to use a custom metaverse URL at compile time - // or you can pass a custom URL via the env variable - QUrl METAVERSE_SERVER_URL() { - const QString HIFI_METAVERSE_URL_ENV = "HIFI_METAVERSE_URL"; - const QUrl serverURL = QProcessEnvironment::systemEnvironment().contains(HIFI_METAVERSE_URL_ENV) - ? QUrl(QProcessEnvironment::systemEnvironment().value(HIFI_METAVERSE_URL_ENV)) - : METAVERSE_SERVER_URL_STABLE; - return serverURL; - }; -} diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index 117a41c976..d5dae658c9 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -25,9 +25,8 @@ namespace NetworkingConstants { // if you manually generate a personal access token for the domains scope // at https://staging.highfidelity.com/user/tokens/new?for_domain_server=true - const QUrl METAVERSE_SERVER_URL_STABLE { "https://metaverse.highfidelity.com" }; - const QUrl METAVERSE_SERVER_URL_STAGING { "https://staging.highfidelity.com" }; - QUrl METAVERSE_SERVER_URL(); + const QUrl METAVERSE_SERVER_URL_STABLE { "https://metaverse.projectathena.io" }; + const QUrl METAVERSE_SERVER_URL_STAGING { "https://staging.projectathena.io" }; } const QString HIFI_URL_SCHEME_ABOUT = "about"; diff --git a/libraries/networking/src/OAuthNetworkAccessManager.cpp b/libraries/networking/src/OAuthNetworkAccessManager.cpp index 272ff47a49..b1e04da4b6 100644 --- a/libraries/networking/src/OAuthNetworkAccessManager.cpp +++ b/libraries/networking/src/OAuthNetworkAccessManager.cpp @@ -18,6 +18,7 @@ #include "AccountManager.h" #include "LimitedNodeList.h" #include "NetworkingConstants.h" +#include "MetaverseAPI.h" #include "SharedUtil.h" QThreadStorage oauthNetworkAccessManagers; @@ -35,7 +36,7 @@ QNetworkReply* OAuthNetworkAccessManager::createRequest(QNetworkAccessManager::O auto accountManager = DependencyManager::get(); if (accountManager->hasValidAccessToken() - && req.url().host() == NetworkingConstants::METAVERSE_SERVER_URL().host()) { + && req.url().host() == MetaverseAPI::getCurrentMetaverseServerURL().host()) { QNetworkRequest authenticatedRequest(req); authenticatedRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); authenticatedRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index 43c6b25dcb..10f46f8efd 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "ShaderConstants.h" diff --git a/libraries/qml/src/qml/OffscreenSurface.cpp b/libraries/qml/src/qml/OffscreenSurface.cpp index d9fc8117bd..2678cb5591 100644 --- a/libraries/qml/src/qml/OffscreenSurface.cpp +++ b/libraries/qml/src/qml/OffscreenSurface.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "Logging.h" #include "impl/SharedObject.h" diff --git a/libraries/script-engine/src/XMLHttpRequestClass.cpp b/libraries/script-engine/src/XMLHttpRequestClass.cpp index 571c0e2a0e..e62726f5d0 100644 --- a/libraries/script-engine/src/XMLHttpRequestClass.cpp +++ b/libraries/script-engine/src/XMLHttpRequestClass.cpp @@ -20,12 +20,11 @@ #include #include #include +#include #include "ResourceRequestObserver.h" #include "ScriptEngine.h" -const QString METAVERSE_API_URL = NetworkingConstants::METAVERSE_SERVER_URL().toString() + "/api/"; - Q_DECLARE_METATYPE(QByteArray*) XMLHttpRequestClass::XMLHttpRequestClass(QScriptEngine* engine) : @@ -126,6 +125,8 @@ void XMLHttpRequestClass::open(const QString& method, const QString& url, bool a _url.setUrl(url); _async = async; + const QString METAVERSE_API_URL = MetaverseAPI::getCurrentMetaverseServerURL().toString() + "/api/"; + if (url.toLower().left(METAVERSE_API_URL.length()) == METAVERSE_API_URL) { auto accountManager = DependencyManager::get(); diff --git a/libraries/ui/src/ui/types/RequestFilters.cpp b/libraries/ui/src/ui/types/RequestFilters.cpp index 3fa1cd0bd9..14fcc7a781 100644 --- a/libraries/ui/src/ui/types/RequestFilters.cpp +++ b/libraries/ui/src/ui/types/RequestFilters.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include "ContextAwareProfile.h" @@ -25,7 +26,7 @@ namespace { bool isAuthableHighFidelityURL(const QUrl& url) { - auto metaverseServerURL = NetworkingConstants::METAVERSE_SERVER_URL(); + auto metaverseServerURL = MetaverseAPI::getCurrentMetaverseServerURL(); static const QStringList HF_HOSTS = { "highfidelity.com", "highfidelity.io", metaverseServerURL.toString(), "metaverse.highfidelity.io" diff --git a/tools/ac-client/src/ACClientApp.cpp b/tools/ac-client/src/ACClientApp.cpp index 24805a3348..3b5db1a1b1 100644 --- a/tools/ac-client/src/ACClientApp.cpp +++ b/tools/ac-client/src/ACClientApp.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -106,7 +107,7 @@ ACClientApp::ACClientApp(int argc, char* argv[]) : auto accountManager = DependencyManager::get(); accountManager->setIsAgent(true); - accountManager->setAuthURL(NetworkingConstants::METAVERSE_SERVER_URL()); + accountManager->setAuthURL(MetaverseAPI::getCurrentMetaverseServerURL()); auto nodeList = DependencyManager::get(); diff --git a/tools/atp-client/src/ATPClientApp.cpp b/tools/atp-client/src/ATPClientApp.cpp index b2e7db5c87..09fcf38dff 100644 --- a/tools/atp-client/src/ATPClientApp.cpp +++ b/tools/atp-client/src/ATPClientApp.cpp @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -144,7 +145,7 @@ ATPClientApp::ATPClientApp(int argc, char* argv[]) : auto accountManager = DependencyManager::get(); accountManager->setIsAgent(true); - accountManager->setAuthURL(NetworkingConstants::METAVERSE_SERVER_URL()); + accountManager->setAuthURL(MetaverseAPI::getCurrentMetaverseServerURL()); auto nodeList = DependencyManager::get(); From 0ac8c178db8d5e15c3d5be87de466ee4c8e507a2 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 20 Dec 2019 12:43:43 +0100 Subject: [PATCH 125/396] fix spacing --- libraries/ui/src/ui/types/RequestFilters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ui/src/ui/types/RequestFilters.cpp b/libraries/ui/src/ui/types/RequestFilters.cpp index 14fcc7a781..943dd02c29 100644 --- a/libraries/ui/src/ui/types/RequestFilters.cpp +++ b/libraries/ui/src/ui/types/RequestFilters.cpp @@ -26,7 +26,7 @@ namespace { bool isAuthableHighFidelityURL(const QUrl& url) { - auto metaverseServerURL = MetaverseAPI::getCurrentMetaverseServerURL(); + auto metaverseServerURL = MetaverseAPI::getCurrentMetaverseServerURL(); static const QStringList HF_HOSTS = { "highfidelity.com", "highfidelity.io", metaverseServerURL.toString(), "metaverse.highfidelity.io" From 9887bf14ee751a2d3299bd066567e901d45fd248 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sat, 21 Dec 2019 09:30:16 -0600 Subject: [PATCH 126/396] Initial work on Opus audio plugin This commit is made up of changes to VCPKG and CMake to include the Opus libraries, as well as a skeleton project for an Opus audio plugin. --- cmake/macros/TargetOpus.cmake | 18 ++++++ cmake/ports/hifi-deps/CONTROL | 4 +- cmake/ports/opus/CONTROL | 4 ++ cmake/ports/opus/portfile.cmake | 28 +++++++++ plugins/CMakeLists.txt | 2 + plugins/opusCodec/CMakeLists.txt | 15 +++++ plugins/opusCodec/src/OpusCodecManager.cpp | 63 +++++++++++++++++++++ plugins/opusCodec/src/OpusCodecManager.h | 54 ++++++++++++++++++ plugins/opusCodec/src/OpusCodecProvider.cpp | 45 +++++++++++++++ plugins/opusCodec/src/plugin.json | 4 ++ 10 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 cmake/macros/TargetOpus.cmake create mode 100644 cmake/ports/opus/CONTROL create mode 100644 cmake/ports/opus/portfile.cmake create mode 100644 plugins/opusCodec/CMakeLists.txt create mode 100644 plugins/opusCodec/src/OpusCodecManager.cpp create mode 100644 plugins/opusCodec/src/OpusCodecManager.h create mode 100644 plugins/opusCodec/src/OpusCodecProvider.cpp create mode 100644 plugins/opusCodec/src/plugin.json diff --git a/cmake/macros/TargetOpus.cmake b/cmake/macros/TargetOpus.cmake new file mode 100644 index 0000000000..20fcadfc57 --- /dev/null +++ b/cmake/macros/TargetOpus.cmake @@ -0,0 +1,18 @@ +# +# Created by Michael Bailey on 12/20/2019 +# Copyright 2019 Michael Bailey +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# +macro(TARGET_opus) + if (ANDROID) + # no idea if this is correct + target_link_libraries(${TARGET_NAME}) + else() + # using VCPKG for opus + find_package(OPUS REQUIRED) + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${OPUS_INCLUDE_DIRS}) + target_link_libraries(${TARGET_NAME} ${OPUS_LIBRARIES}) + endif() +endmacro() diff --git a/cmake/ports/hifi-deps/CONTROL b/cmake/ports/hifi-deps/CONTROL index 4cf952ccf0..b1a7f96a00 100644 --- a/cmake/ports/hifi-deps/CONTROL +++ b/cmake/ports/hifi-deps/CONTROL @@ -1,4 +1,4 @@ Source: hifi-deps -Version: 0.3 +Version: 0.4 Description: Collected dependencies for High Fidelity applications -Build-Depends: bullet3, draco, etc2comp, glm, nvtt, openexr (!android), openssl (windows), tbb (!android&!osx), zlib, webrtc (!android) +Build-Depends: bullet3, draco, etc2comp, glm, nvtt, openexr (!android), openssl (windows), opus, tbb (!android&!osx), zlib, webrtc (!android) diff --git a/cmake/ports/opus/CONTROL b/cmake/ports/opus/CONTROL new file mode 100644 index 0000000000..c7b8d246f5 --- /dev/null +++ b/cmake/ports/opus/CONTROL @@ -0,0 +1,4 @@ +Source: opus +Version: 1.3.1 +Homepage: https://github.com/xiph/opus +Description: Totally open, royalty-free, highly versatile audio codec diff --git a/cmake/ports/opus/portfile.cmake b/cmake/ports/opus/portfile.cmake new file mode 100644 index 0000000000..bf23718df8 --- /dev/null +++ b/cmake/ports/opus/portfile.cmake @@ -0,0 +1,28 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH + SOURCE_PATH + REPO + xiph/opus + REF + e85ed7726db5d677c9c0677298ea0cb9c65bdd23 + SHA512 + a8c7e5bf383c06f1fdffd44d9b5f658f31eb4800cb59d12da95ddaeb5646f7a7b03025f4663362b888b1374d4cc69154f006ba07b5840ec61ddc1a1af01d6c54 + HEAD_REF + master) + +vcpkg_configure_cmake(SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA) +vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/Opus) +vcpkg_copy_pdbs() + +file(INSTALL + ${SOURCE_PATH}/COPYING + DESTINATION + ${CURRENT_PACKAGES_DIR}/share/opus + RENAME copyright) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake + ${CURRENT_PACKAGES_DIR}/lib/cmake + ${CURRENT_PACKAGES_DIR}/debug/include) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index c9bc3e4c33..c88bb8a00d 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -43,6 +43,8 @@ set(DIR "pcmCodec") add_subdirectory(${DIR}) set(DIR "hifiCodec") add_subdirectory(${DIR}) +set(DIR "opusCodec") +add_subdirectory(${DIR}) # example plugins set(DIR "KasenAPIExample") diff --git a/plugins/opusCodec/CMakeLists.txt b/plugins/opusCodec/CMakeLists.txt new file mode 100644 index 0000000000..761e275929 --- /dev/null +++ b/plugins/opusCodec/CMakeLists.txt @@ -0,0 +1,15 @@ +# +# Created by Michael Bailey on 12/20/2019 +# Copyright 2019 Michael Bailey +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html +# + +set(TARGET_NAME opusCodec) +setup_hifi_client_server_plugin() +link_hifi_libraries(shared plugins) + +if (BUILD_SERVER) + install_beside_console() +endif () diff --git a/plugins/opusCodec/src/OpusCodecManager.cpp b/plugins/opusCodec/src/OpusCodecManager.cpp new file mode 100644 index 0000000000..3c47ac15fb --- /dev/null +++ b/plugins/opusCodec/src/OpusCodecManager.cpp @@ -0,0 +1,63 @@ +// +// opusCodec.cpp +// plugins/opusCodec/src +// +// Created by Michael Bailey on 12/20/2019 +// Copyright 2019 Michael Bailey +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "OpusCodecManager.h" + +#include + +#include + +// Not sure how many of these are needed, but here they are. +#include +#include +#include +#include +#include + +const char* OpusCodec::NAME { "opus" }; + +void OpusCodec::init() { +} + +void OpusCodec::deinit() { +} + +bool OpusCodec::activate() { + CodecPlugin::activate(); + return true; +} + +void OpusCodec::deactivate() { + CodecPlugin::deactivate(); +} + + +bool OpusCodec::isSupported() const { + return true; +} + + + +Encoder* OpusCodec::createEncoder(int sampleRate, int numChannels) { + return this; +} + +Decoder* OpusCodec::createDecoder(int sampleRate, int numChannels) { + return this; +} + +void OpusCodec::releaseEncoder(Encoder* encoder) { + // do nothing +} + +void OpusCodec::releaseDecoder(Decoder* decoder) { + // do nothing +} \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusCodecManager.h b/plugins/opusCodec/src/OpusCodecManager.h new file mode 100644 index 0000000000..b02a549e8c --- /dev/null +++ b/plugins/opusCodec/src/OpusCodecManager.h @@ -0,0 +1,54 @@ +// +// OpusCodecManager.h +// plugins/opusCodec/src +// +// Created by Michael Bailey on 12/20/2019 +// Copyright 2019 Michael Bailey +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi__opusCodecManager_h +#define hifi__opusCodecManager_h + +#include + +class OpusCodec : public CodecPlugin, public Encoder, public Decoder { + Q_OBJECT + +public: + // Plugin functions + bool isSupported() const override; + const QString getName() const override { return NAME; } + + void init() override; + void deinit() override; + + /// Called when a plugin is being activated for use. May be called multiple times. + bool activate() override; + /// Called when a plugin is no longer being used. May be called multiple times. + void deactivate() override; + + virtual Encoder* createEncoder(int sampleRate, int numChannels) override; + virtual Decoder* createDecoder(int sampleRate, int numChannels) override; + virtual void releaseEncoder(Encoder* encoder) override; + virtual void releaseDecoder(Decoder* decoder) override; + + virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override { + encodedBuffer = decodedBuffer; + } + + virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override { + decodedBuffer = encodedBuffer; + } + + virtual void lostFrame(QByteArray& decodedBuffer) override { + memset(decodedBuffer.data(), 0, decodedBuffer.size()); + } + +private: + static const char* NAME; +}; + +#endif // hifi__opusCodecManager_h diff --git a/plugins/opusCodec/src/OpusCodecProvider.cpp b/plugins/opusCodec/src/OpusCodecProvider.cpp new file mode 100644 index 0000000000..ab72f25023 --- /dev/null +++ b/plugins/opusCodec/src/OpusCodecProvider.cpp @@ -0,0 +1,45 @@ +// +// Created by Michael Bailey on 12/20/2019 +// Copyright 2019 Michael Bailey +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +#include +#include +#include + +#include +#include + +#include "OpusCodecManager.h" + +class OpusCodecProvider : public QObject, public CodecProvider { + Q_OBJECT + Q_PLUGIN_METADATA(IID CodecProvider_iid FILE "plugin.json") + Q_INTERFACES(CodecProvider) + +public: + OpusCodecProvider(QObject* parent = nullptr) : QObject(parent) {} + virtual ~OpusCodecProvider() {} + + virtual CodecPluginList getCodecPlugins() override { + static std::once_flag once; + std::call_once(once, [&] { + + CodecPluginPointer opusCodec(new OpusCodec()); + if (opusCodec->isSupported()) { + _codecPlugins.push_back(opusCodec); + } + }); + return _codecPlugins; + } + +private: + CodecPluginList _codecPlugins; +}; + +#include "OpusCodecProvider.moc" diff --git a/plugins/opusCodec/src/plugin.json b/plugins/opusCodec/src/plugin.json new file mode 100644 index 0000000000..bd7c707f7d --- /dev/null +++ b/plugins/opusCodec/src/plugin.json @@ -0,0 +1,4 @@ +{ + "name":"Opus Codec", + "version":1 +} From e182f98a347f9555f60eabd247f8e630afb50a24 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sat, 21 Dec 2019 10:03:38 -0600 Subject: [PATCH 127/396] Fix VCPKG Opus CONTROL failure on Linux VCPKG on Linux really, really does not like the "Homepage:" line. --- cmake/ports/opus/CONTROL | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/ports/opus/CONTROL b/cmake/ports/opus/CONTROL index c7b8d246f5..4314774ab5 100644 --- a/cmake/ports/opus/CONTROL +++ b/cmake/ports/opus/CONTROL @@ -1,4 +1,3 @@ Source: opus Version: 1.3.1 -Homepage: https://github.com/xiph/opus Description: Totally open, royalty-free, highly versatile audio codec From 776b0ce75e297fef82b40212a85bd348f5abdb46 Mon Sep 17 00:00:00 2001 From: Vegaslon Date: Sat, 21 Dec 2019 11:24:29 -0500 Subject: [PATCH 128/396] Update a small portion of the build instructions to account for new branding and repository name. --- BUILD.md | 4 ++-- BUILD_ANDROID.md | 2 +- BUILD_LINUX.md | 2 +- BUILD_WIN.md | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/BUILD.md b/BUILD.md index c9bb48d4b7..d441de9c17 100644 --- a/BUILD.md +++ b/BUILD.md @@ -32,7 +32,7 @@ These are not placed in your normal build tree when doing an out of source build #### CMake -Hifi uses CMake to generate build files and project files for your platform. +Athena uses CMake to generate build files and project files for your platform. #### Qt CMake will download Qt 5.12.3 using vcpkg. @@ -47,7 +47,7 @@ This can either be entered directly into your shell session before you build or #### Vcpkg -Hifi uses vcpkg to download and build dependencies. +Athena uses vcpkg to download and build dependencies. You do not need to install vcpkg. Building the dependencies can be lengthy and the resulting files will be stored in your OS temp directory. diff --git a/BUILD_ANDROID.md b/BUILD_ANDROID.md index 3047cb827d..a0a0063d59 100644 --- a/BUILD_ANDROID.md +++ b/BUILD_ANDROID.md @@ -62,7 +62,7 @@ The above code to suppress modules is not necessary, but will speed up the build ### Clone the repository -`git clone https://github.com/highfidelity/hifi.git ` +`git clone https://github.com/kasenvr/project-athena.git` # Building & Running diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index c0cef86ba4..0be34cf90a 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -76,7 +76,7 @@ sudo apt-get install nodejs Clone this repository: ```bash -git clone https://github.com/highfidelity/hifi.git +git clone https://github.com/kasenvr/project-athena.git ``` To compile a RELEASE version checkout the tag you need getting a list of all tags: diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 636d53c4e1..1ca4a69c6e 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -1,5 +1,5 @@ -This is a stand-alone guide for creating your first High Fidelity build for Windows 64-bit. -## Building High Fidelity +This is a stand-alone guide for creating your first Project Athena build for Windows 64-bit. +## Building Project Athena Note: We are now using Visual Studio 2017 or 2019 and Qt 5.12.3. If you are upgrading from previous versions, do a clean uninstall of those versions before going through this guide. @@ -37,7 +37,7 @@ Download and install the latest version of CMake 3.15. Download the file named win64-x64 Installer from the [CMake Website](https://cmake.org/download/). You can access the installer on this [3.15 Version page](https://cmake.org/files/v3.15/). During installation, make sure to check "Add CMake to system PATH for all users" when prompted. ### Step 3. Create VCPKG environment variable -In the next step, you will use CMake to build High Fidelity. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them. +In the next step, you will use CMake to build Project Athena. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them. To create this variable: * Naviagte to 'Edit the System Environment Variables' Through the start menu. @@ -72,7 +72,7 @@ Where `%HIFI_DIR%` is the directory for the highfidelity repository. ### Step 5. Making a Build -Open `%HIFI_DIR%\build\hifi.sln` using Visual Studio. +Open `%HIFI_DIR%\build\athena.sln` using Visual Studio. Change the Solution Configuration (menu ribbon under the menu bar, next to the green play button) from "Debug" to "Release" for best performance. @@ -88,7 +88,7 @@ Restart Visual Studio again. In Visual Studio, right+click "interface" under the Apps folder in Solution Explorer and select "Set as Startup Project". Run from the menu bar `Debug > Start Debugging`. -Now, you should have a full build of High Fidelity and be able to run the Interface using Visual Studio. Please check our [Docs](https://wiki.highfidelity.com/wiki/Main_Page) for more information regarding the programming workflow. +Now, you should have a full build of Project Athena and be able to run the Interface using Visual Studio. Please check our [Docs](https://wiki.highfidelity.com/wiki/Main_Page) for more information regarding the programming workflow. Note: You can also run Interface by launching it from command line or File Explorer from `%HIFI_DIR%\build\interface\Release\interface.exe` @@ -97,7 +97,7 @@ Note: You can also run Interface by launching it from command line or File Explo For any problems after Step #6, first try this: * Delete your locally cloned copy of the highfidelity repository * Restart your computer -* Redownload the [repository](https://github.com/kasenvr/hificommunity) +* Redownload the [repository](https://github.com/kasenvr/project-athena) * Restart directions from Step #6 #### CMake gives you the same error message repeatedly after the build fails From 9b4c419b2c3d24ea29e38285f38f4a56802753d5 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sat, 21 Dec 2019 12:05:14 -0600 Subject: [PATCH 129/396] Opus cleanup and C++ wrapper Did a tiny amount of fleshing out and some cleanup. Also added a Google implemented C++ Opus wrapper in case it will be useful. --- plugins/opusCodec/src/OpusCodecManager.cpp | 29 +++- plugins/opusCodec/src/OpusCodecManager.h | 16 +- plugins/opusCodec/src/OpusWrapper.cpp | 174 +++++++++++++++++++++ plugins/opusCodec/src/OpusWrapper.h | 131 ++++++++++++++++ 4 files changed, 333 insertions(+), 17 deletions(-) create mode 100644 plugins/opusCodec/src/OpusWrapper.cpp create mode 100644 plugins/opusCodec/src/OpusWrapper.h diff --git a/plugins/opusCodec/src/OpusCodecManager.cpp b/plugins/opusCodec/src/OpusCodecManager.cpp index 3c47ac15fb..8f7d4fe6e5 100644 --- a/plugins/opusCodec/src/OpusCodecManager.cpp +++ b/plugins/opusCodec/src/OpusCodecManager.cpp @@ -22,6 +22,15 @@ #include #include +#define FRAME_SIZE 960 +#define SAMPLE_RATE 48000 +#define CHANNELS 2 +#define APPLICATION OPUS_APPLICATION_AUDIO +#define BITRATE 64000 + +#define MAX_FRAME_SIZE 6*FRAME_SIZE +#define MAX_PACKET_SIZE 3*1276 + const char* OpusCodec::NAME { "opus" }; void OpusCodec::init() { @@ -45,9 +54,23 @@ bool OpusCodec::isSupported() const { } +class OpusEncoder : public Encoder { +public: + OpusEncoder(int sampleRate, int numChannels) { + + } + + virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override { + encodedBuffer.resize(_encodedSize); + } + +private: + int _encodedSize; +}; + Encoder* OpusCodec::createEncoder(int sampleRate, int numChannels) { - return this; + return new OpusEncoder(sampleRate, numChannels); } Decoder* OpusCodec::createDecoder(int sampleRate, int numChannels) { @@ -55,9 +78,9 @@ Decoder* OpusCodec::createDecoder(int sampleRate, int numChannels) { } void OpusCodec::releaseEncoder(Encoder* encoder) { - // do nothing + delete encoder; } void OpusCodec::releaseDecoder(Decoder* decoder) { - // do nothing + delete decoder; } \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusCodecManager.h b/plugins/opusCodec/src/OpusCodecManager.h index b02a549e8c..b75e78b23c 100644 --- a/plugins/opusCodec/src/OpusCodecManager.h +++ b/plugins/opusCodec/src/OpusCodecManager.h @@ -9,8 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi__opusCodecManager_h -#define hifi__opusCodecManager_h +#ifndef hifi__OpusCodecManager_h +#define hifi__OpusCodecManager_h #include @@ -35,18 +35,6 @@ public: virtual void releaseEncoder(Encoder* encoder) override; virtual void releaseDecoder(Decoder* decoder) override; - virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override { - encodedBuffer = decodedBuffer; - } - - virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override { - decodedBuffer = encodedBuffer; - } - - virtual void lostFrame(QByteArray& decodedBuffer) override { - memset(decodedBuffer.data(), 0, decodedBuffer.size()); - } - private: static const char* NAME; }; diff --git a/plugins/opusCodec/src/OpusWrapper.cpp b/plugins/opusCodec/src/OpusWrapper.cpp new file mode 100644 index 0000000000..0d8ff87965 --- /dev/null +++ b/plugins/opusCodec/src/OpusWrapper.cpp @@ -0,0 +1,174 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include +#include + +#include "OpusWrapper.h" + +std::string opus::ErrorToString(int error) { + switch (error) { + case OPUS_OK: + return "OK"; + case OPUS_BAD_ARG: + return "One or more invalid/out of range arguments."; + case OPUS_BUFFER_TOO_SMALL: + return "The mode struct passed is invalid."; + case OPUS_INTERNAL_ERROR: + return "An internal error was detected."; + case OPUS_INVALID_PACKET: + return "The compressed data passed is corrupted."; + case OPUS_UNIMPLEMENTED: + return "Invalid/unsupported request number."; + case OPUS_INVALID_STATE: + return "An encoder or decoder structure is invalid or already freed."; + default: + return "Unknown error code: " + std::to_string(error); + } +} + +void opus::internal::OpusDestroyer::operator()(OpusEncoder* encoder) const +noexcept { + opus_encoder_destroy(encoder); +} + +void opus::internal::OpusDestroyer::operator()(OpusDecoder* decoder) const +noexcept { + opus_decoder_destroy(decoder); +} + +opus::Encoder::Encoder(opus_int32 sample_rate, int num_channels, + int application, int expected_loss_percent) + : num_channels_{ num_channels } { + int error{}; + encoder_.reset( + opus_encoder_create(sample_rate, num_channels, application, &error)); + valid_ = error == OPUS_OK; + if (!valid()) { + // LOG(INFO) << "Could not construct encoder. Error: " << ErrorToString(error); + return; + } + if (expected_loss_percent > 0) { + // LOG(INFO) << "Enabling FEC in the encoder."; + Ctl(OPUS_SET_INBAND_FEC(1)); + Ctl(OPUS_SET_PACKET_LOSS_PERC(expected_loss_percent)); + } +} + +bool opus::Encoder::ResetState() { + valid_ = Ctl(OPUS_RESET_STATE) == OPUS_OK; + return valid_; +} + +bool opus::Encoder::SetBitrate(int bitrate) { + valid_ = Ctl(OPUS_SET_BITRATE(bitrate)) == OPUS_OK; + return valid_; +} + +bool opus::Encoder::SetVariableBitrate(int vbr) { + valid_ = Ctl(OPUS_SET_VBR(vbr)) == OPUS_OK; + return valid_; +} + +bool opus::Encoder::SetComplexity(int complexity) { + valid_ = Ctl(OPUS_SET_COMPLEXITY(complexity)) == OPUS_OK; + return valid_; +} + +int opus::Encoder::GetLookahead() { + opus_int32 skip{}; + valid_ = Ctl(OPUS_GET_LOOKAHEAD(&skip)) == OPUS_OK; + return skip; +} + +std::vector> opus::Encoder::Encode( + const std::vector& pcm, int frame_size) { + constexpr auto sample_size = sizeof(pcm[0]); + const auto frame_length = frame_size * num_channels_ * sample_size; + auto data_length = pcm.size() * sample_size; + if (data_length % frame_length != 0u) { + // LOG(WARNING) << "PCM samples contain an incomplete frame. Ignoring the " + // "incomplete frame."; + data_length -= (data_length % frame_length); + } + + std::vector> encoded; + for (std::size_t i{}; i < data_length; i += frame_length) { + encoded.push_back(EncodeFrame(pcm.begin() + (i / sample_size), frame_size)); + } + return encoded; +} + +std::vector opus::Encoder::EncodeFrame( + const std::vector::const_iterator& frame_start, + int frame_size) { + const auto frame_length = (frame_size * num_channels_ * sizeof(*frame_start)); + std::vector encoded(frame_length); + auto num_bytes = opus_encode(encoder_.get(), &*frame_start, frame_size, + encoded.data(), encoded.size()); + if (num_bytes < 0) { + // LOG(ERROR) << "Encode error: " << opus::ErrorToString(num_bytes); + return {}; + } + encoded.resize(num_bytes); + return encoded; +} + +opus::Decoder::Decoder(opus_uint32 sample_rate, int num_channels) + : num_channels_(num_channels) { + int error{}; + decoder_.reset(opus_decoder_create(sample_rate, num_channels, &error)); + valid_ = error == OPUS_OK; +} + +std::vector opus::Decoder::Decode( + const std::vector>& packets, int frame_size, + bool decode_fec) { + std::vector decoded; + for (const auto& enc : packets) { + auto just_decoded = Decode(enc, frame_size, decode_fec); + decoded.insert(std::end(decoded), std::begin(just_decoded), + std::end(just_decoded)); + } + return decoded; +} + +std::vector opus::Decoder::Decode( + const std::vector& packet, int frame_size, bool decode_fec) { + const auto frame_length = (frame_size * num_channels_ * sizeof(opus_int16)); + std::vector decoded(frame_length); + auto num_samples = opus_decode(decoder_.get(), packet.data(), packet.size(), + decoded.data(), frame_size, decode_fec); + if (num_samples < 0) { + // LOG(ERROR) << "Decode error: " << opus::ErrorToString(num_samples); + return {}; + } + decoded.resize(num_samples * num_channels_); + return decoded; +} + +std::vector opus::Decoder::DecodeDummy(int frame_size) { + const auto frame_length = (frame_size * num_channels_ * sizeof(opus_int16)); + std::vector decoded(frame_length); + auto num_samples = + opus_decode(decoder_.get(), nullptr, 0, decoded.data(), frame_size, true); + if (num_samples < 0) { + // LOG(ERROR) << "Decode error: " << opus::ErrorToString(num_samples); + return {}; + } + decoded.resize(num_samples * num_channels_); + return decoded; +} \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusWrapper.h b/plugins/opusCodec/src/OpusWrapper.h new file mode 100644 index 0000000000..713dff87ff --- /dev/null +++ b/plugins/opusCodec/src/OpusWrapper.h @@ -0,0 +1,131 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OPUSCPP_OPUS_WRAPPER_H_ +#define OPUSCPP_OPUS_WRAPPER_H_ + +#include +#include +#include + +#include "opus/opus.h" + +namespace opus { + + std::string ErrorToString(int error); + + namespace internal { + // Deleter for OpusEncoders and OpusDecoders + struct OpusDestroyer { + void operator()(OpusEncoder* encoder) const noexcept; + void operator()(OpusDecoder* decoder) const noexcept; + }; + template + using opus_uptr = std::unique_ptr; + } // namespace internal + + class Encoder { + public: + // see documentation at: + // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__encoder.html#gaa89264fd93c9da70362a0c9b96b9ca88 + // Fs corresponds to sample_rate + // + // If expected_loss_percent is positive, FEC will be enabled + Encoder(opus_int32 sample_rate, int num_channels, int application, + int expected_loss_percent = 0); + + // Resets internal state of encoder. This should be called between encoding + // different streams so that back-to-back decoding and one-at-a-time decoding + // give the same result. Returns true on success. + bool ResetState(); + + // Sets the desired bitrate. Rates from 500 to 512000 are meaningful as well + // as the special values OPUS_AUTO and OPUS_BITRATE_MAX. If this method + // is not called, the default value of OPUS_AUTO is used. + // Returns true on success. + bool SetBitrate(int bitrate); + + // Enables or disables variable bitrate in the encoder. By default, variable + // bitrate is enabled. Returns true on success. + bool SetVariableBitrate(int vbr); + + // Sets the computational complexity of the encoder, in the range of 0 to 10, + // inclusive, with 10 being the highest complexity. Returns true on success. + bool SetComplexity(int complexity); + + // Gets the total samples of delay added by the entire codec. This value + // is the minimum amount of 'preskip' that has to be specified in an + // ogg-stream that encapsulates the encoded audio. + int GetLookahead(); + + // Takes audio data and encodes it. Returns a sequence of encoded packets. + // pcm.size() must be divisible by frame_size * (number of channels); + // pcm must not contain any incomplete packets. + // see documentation for pcm and frame_size at: + // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__encoder.html#gad2d6bf6a9ffb6674879d7605ed073e25 + std::vector> Encode( + const std::vector& pcm, int frame_size); + + int valid() const { return valid_; } + + private: + std::vector EncodeFrame( + const std::vector::const_iterator& frame_start, + int frame_size); + + template + int Ctl(int request, Ts... args) const { + return opus_encoder_ctl(encoder_.get(), request, args...); + } + + int num_channels_{}; + bool valid_{}; + internal::opus_uptr encoder_; + }; + + class Decoder { + public: + // see documentation at: + // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga753f6fe0b699c81cfd47d70c8e15a0bd + // Fs corresponds to sample_rate + Decoder(opus_uint32 sample_rate, int num_channels); + + // Takes a sequence of encoded packets and decodes them. Returns the decoded + // audio. + // see documentation at: + // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga7d1111f64c36027ddcb81799df9b3fc9 + std::vector Decode( + const std::vector>& packets, int frame_size, + bool decode_fec); + + int valid() const { return valid_; } + + // Takes an encoded packet and decodes it. Returns the decoded audio + // see documentation at: + // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga7d1111f64c36027ddcb81799df9b3fc9 + std::vector Decode(const std::vector& packet, + int frame_size, bool decode_fec); + + // Generates a dummy frame by passing nullptr to the underlying opus decode. + std::vector DecodeDummy(int frame_size); + + private: + int num_channels_{}; + bool valid_{}; + internal::opus_uptr decoder_; + }; + +} // namespace opus + +#endif \ No newline at end of file From d57ba9a3371b3226cd3bc5156236ae5c9d99352b Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Sat, 21 Dec 2019 19:25:46 +0000 Subject: [PATCH 130/396] Added chat WIP --- scripts/communityModules/chat/FloofChat.html | 553 + scripts/communityModules/chat/FloofChat.js | 287 + scripts/communityModules/chat/FloofChat.qml | 129 + scripts/communityModules/chat/FloofChat2.html | 503 + scripts/communityModules/chat/chat.png | Bin 0 -> 4605 bytes .../communityModules/chat/css/materialize.css | 9086 ++++++++++++ .../chat/css/materialize.min.css | 13 + .../communityModules/chat/emoticons/COPYING | 67 + .../communityModules/chat/emoticons/README | 12 + .../chat/emoticons/face-angel.png | Bin 0 -> 992 bytes .../chat/emoticons/face-crying.png | Bin 0 -> 936 bytes .../chat/emoticons/face-devilish.png | Bin 0 -> 855 bytes .../chat/emoticons/face-glasses.png | Bin 0 -> 949 bytes .../chat/emoticons/face-grin.png | Bin 0 -> 905 bytes .../chat/emoticons/face-kiss.png | Bin 0 -> 919 bytes .../chat/emoticons/face-monkey.png | Bin 0 -> 784 bytes .../chat/emoticons/face-plain.png | Bin 0 -> 894 bytes .../chat/emoticons/face-sad.png | Bin 0 -> 918 bytes .../chat/emoticons/face-smile-big.png | Bin 0 -> 896 bytes .../chat/emoticons/face-smile.png | Bin 0 -> 919 bytes .../chat/emoticons/face-surprise.png | Bin 0 -> 917 bytes .../chat/emoticons/face-wink.png | Bin 0 -> 914 bytes .../communityModules/chat/js/materialize.js | 12374 ++++++++++++++++ .../chat/js/materialize.min.js | 6 + scripts/communityModules/chat/webview.qml | 52 + 25 files changed, 23082 insertions(+) create mode 100644 scripts/communityModules/chat/FloofChat.html create mode 100644 scripts/communityModules/chat/FloofChat.js create mode 100644 scripts/communityModules/chat/FloofChat.qml create mode 100644 scripts/communityModules/chat/FloofChat2.html create mode 100644 scripts/communityModules/chat/chat.png create mode 100644 scripts/communityModules/chat/css/materialize.css create mode 100644 scripts/communityModules/chat/css/materialize.min.css create mode 100644 scripts/communityModules/chat/emoticons/COPYING create mode 100644 scripts/communityModules/chat/emoticons/README create mode 100644 scripts/communityModules/chat/emoticons/face-angel.png create mode 100644 scripts/communityModules/chat/emoticons/face-crying.png create mode 100644 scripts/communityModules/chat/emoticons/face-devilish.png create mode 100644 scripts/communityModules/chat/emoticons/face-glasses.png create mode 100644 scripts/communityModules/chat/emoticons/face-grin.png create mode 100644 scripts/communityModules/chat/emoticons/face-kiss.png create mode 100644 scripts/communityModules/chat/emoticons/face-monkey.png create mode 100644 scripts/communityModules/chat/emoticons/face-plain.png create mode 100644 scripts/communityModules/chat/emoticons/face-sad.png create mode 100644 scripts/communityModules/chat/emoticons/face-smile-big.png create mode 100644 scripts/communityModules/chat/emoticons/face-smile.png create mode 100644 scripts/communityModules/chat/emoticons/face-surprise.png create mode 100644 scripts/communityModules/chat/emoticons/face-wink.png create mode 100644 scripts/communityModules/chat/js/materialize.js create mode 100644 scripts/communityModules/chat/js/materialize.min.js create mode 100644 scripts/communityModules/chat/webview.qml diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html new file mode 100644 index 0000000000..b0a746ea5c --- /dev/null +++ b/scripts/communityModules/chat/FloofChat.html @@ -0,0 +1,553 @@ + + + + + + Title + + + + + + + + + + + + +
+
+
+ + + +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js new file mode 100644 index 0000000000..e1642d6a14 --- /dev/null +++ b/scripts/communityModules/chat/FloofChat.js @@ -0,0 +1,287 @@ +/* globals OverlayWindow */ + +var ROOT = Script.resolvePath('').split("FloofChat.js")[0]; + +Script.scriptEnding.connect(function () { + shutdown(); +}); + +var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); +var button = tablet.addButton({ + icon: ROOT + "chat.png", + text: "Chat\nHistory" +}); + +Script.scriptEnding.connect(function () { // So if anything errors out the tablet/toolbar button gets removed! + tablet.removeButton(button); +}); + +var appUUID = Uuid.generate(); + +var chatBar; +var chatHistory; +var historyLog = []; + +var visible = false; +var historyVisible = false; + +init(); + +function init() { + Messages.subscribe("Chat"); + historyLog = []; + try { + historyLog = JSON.parse(Settings.getValue("HistoryLog", "[]")); + } catch (e) { + // + } + + setupHistoryWindow(false); + + chatBar = new OverlayWindow({ + // source: "http://localhost:8000/fluffytest.qml", + source: Paths.defaultScripts + '/communityModules/chat/FloofChat.qml?' + Date.now(), + width: 360, + height: 180 + }); + + button.clicked.connect(toggleChatHistory); + chatBar.fromQml.connect(fromQml); + chatBar.sendToQml(JSON.stringify({visible: false})); + Controller.keyPressEvent.connect(keyPressEvent); + Messages.messageReceived.connect(messageReceived); +} + +function setupHistoryWindow(popout) { + if (!popout) { + chatHistory = new OverlayWebWindow({ + title: 'Chat History', + source: ROOT + "FloofChat2.html?appUUID=" + appUUID + "&" + Date.now(), + width: 900, + height: 700, + visible: false + }); + chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); + chatHistory.webEventReceived.connect(onWebEventReceived); + chatHistory.closed.connect(toggleChatHistory); + } else { + chatHistory = Desktop.createWindow(Paths.defaultScripts + '/communityModules/chat/webview.qml?' + Date.now(), { + title: "Chat History", + additionalFlags: Desktop.CLOSE_BUTTON_HIDES, + presentationMode: Desktop.PresentationMode.NATIVE, + visible: false, + size: {x: 900, y: 700}, + position: {x: 0, y: Window.innerHeight - 700} + }); + chatHistory.webEventReceived.connect(onWebEventReceived); + chatHistory.closed.connect(toggleChatHistory); + } +} + +function emitScriptEvent(obj) { + obj.appUUID = appUUID; + tablet.emitScriptEvent(JSON.stringify(obj)); +} + +function toggleChatHistory() { + historyVisible = !historyVisible; + button.editProperties({isActive: historyVisible}); + chatHistory.visible = historyVisible; +} + +function onWebEventReceived(event) { + console.log("event " + event); + event = JSON.parse(event); + if (event.type === "ready") { + chatHistory.emitScriptEvent(JSON.stringify(historyLog)); + } + if (event.type === "CMD") { + if (event.cmd === "REDOCK") { + if(popout){ + + }else{ + chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); + } + } + if (event.cmd === "GOTO") { + var result = Window.confirm("Do you want to goto " + event.url.split("/")[2] + " ?"); + if (result) { + location = event.url; + } + } + if (event.cmd === "URL") { + new OverlayWebWindow({ + title: 'Web', + source: event.url, + width: 900, + height: 700, + visible: true + }); + } + if (event.cmd === "COPY") { + Window.copyToClipboard(event.url); + } + } + if (event.type === "MSG") { + if (event.message === "") return; + Messages.sendMessage("Chat", JSON.stringify({ + type: "TransmitChatMessage", + position: MyAvatar.position, + channel: event.tab, + colour: {red: 222, green: 222, blue: 222}, + message: event.message, + displayName: MyAvatar.displayName + })); + setVisible(false); + } +} + +function messageReceived(channel, message, sender, local) { + if (channel === "Chat" || channel === "Support") { + + var cmd = {FAILED: true}; + try { + cmd = JSON.parse(message); + } catch (e) { + // + } + if (!cmd.FAILED) { + if (cmd.type === "TransmitChatMessage") { + if (!cmd.hasOwnProperty("channel")) { + cmd.channel = "Domain"; + } + if (!cmd.hasOwnProperty("colour")) { + cmd.colour = {red: 222, green: 222, blue: 222}; + } + if (cmd.channel === "Local") { + if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) { + addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: "L " + cmd.displayName, + text: cmd.message, + colour: {text: cmd.colour} + })); + } + } else { + addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: ((cmd.channel === "Domain") ? "D " : "") + cmd.displayName, + text: cmd.message, + colour: {text: cmd.colour} + })); + } + } + } + } +} + +function time() { + var d = new Date(); + var h = (d.getHours()).toString(); + var m = (d.getMinutes()).toString(); + var s = (d.getSeconds()).toString(); + var h2 = ("0" + h).slice(-2); + var m2 = ("0" + m).slice(-2); + var s2 = ("0" + s).slice(-2); + s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1); + return h2 + ":" + m2 + ":" + s2; +} + +function addToLog(msg, dp, colour, tab) { + historyLog.push([time(), msg, dp, colour, tab]); + chatHistory.emitScriptEvent(JSON.stringify([[time(), msg, dp, colour, tab]])); + if (historyLog.length > 500) { + historyLog.pop(); + } + Settings.setValue("HistoryLog", JSON.stringify(historyLog)) +} + +function fromQml(message) { + var cmd = {FAILED: true}; + try { + cmd = JSON.parse(message); + } catch (e) { + // + } + if (!cmd.FAILED) { + console.log(JSON.stringify(cmd.event)); + if (cmd.type === "MSG") { + if (cmd.message !== "") { + if (cmd.event.modifiers === 67108864) { + Messages.sendMessage("Chat", JSON.stringify({ + type: "TransmitChatMessage", channel: "Domain", colour: {red: 222, green: 222, blue: 222}, + message: cmd.message, + displayName: MyAvatar.displayName + })); + } else { + Messages.sendMessage("Chat", JSON.stringify({ + type: "TransmitChatMessage", + channel: "Local", + position: MyAvatar.position, + colour: {red: 222, green: 222, blue: 222}, + message: cmd.message, + displayName: MyAvatar.displayName + })); + } + } + setVisible(false); + } else if (cmd.type === "CMD") { + if (cmd.cmd === "Clicked") { + toggleChatHistory() + } + + /* + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: "Chat", + text: msg, + colour: {text: {red: 200, green: 200, blue: 200}} + }));*/ + } + } +} + +function setVisible(_visible) { + if (_visible) { + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + type: "options", + offset: 64 + })); + chatBar.sendToQml(JSON.stringify({visible: true})); + } else { + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + type: "options", + offset: -1 + })); + chatBar.sendToQml(JSON.stringify({visible: false})); + } + + visible = _visible; +} + +function keyPressEvent(event) { + if (event.key === 72 && !event.isAutoRepeat && event.isControl) { + toggleChatHistory() + } + if (event.key === 16777220 && !event.isAutoRepeat && !visible) { + setVisible(true); + } + if (event.key === 16777216 && !event.isAutoRepeat && visible) { + setVisible(false); + } +} + + +function shutdown() { + try { + Messages.messageReceived.disconnect(messageReceived); + } catch (e) { + // empty + } + try { + Controller.keyPressEvent.disconnect(keyPressEvent); + } catch (e) { + // empty + } + chatBar.close(); + chatHistory.close(); +} diff --git a/scripts/communityModules/chat/FloofChat.qml b/scripts/communityModules/chat/FloofChat.qml new file mode 100644 index 0000000000..ef72b4886f --- /dev/null +++ b/scripts/communityModules/chat/FloofChat.qml @@ -0,0 +1,129 @@ +import QtQuick 2.5 +import QtQuick.Controls 1.4 +//import Hifi 1.0 as Hifi + +Rectangle { + id: root + property var window + + Binding { target: root; property:'window'; value: parent.parent; when: Boolean(parent.parent) } + + Binding { target: window; property: 'shown'; value: false; when: Boolean(window) } + Component.onDestruction: thing && thing.destroy() + + + signal sendToScript(var message); + color: "#00000000" + property alias thing: thing + + function sendMessage(text){ + sendToScript(text); + } + + function fromScript(message) { + console.log("fromScript "+message); + var data = {failed:true}; + try{ + data = JSON.parse(message); + } catch(e){ + // + } + if(!data.failed){ + if(data.cmd){ + JSConsole.executeCommand(data.msg); + } + console.log(data.visible); + if(data.visible){ + thing.visible = true; + textArea.focus = true; + } else if(!data.visible){ + thing.visible = false; + textArea.focus = false; + } + } + } + + Rectangle { + id: thing + parent: desktop + x: 0 + y: parent.height - height + width: parent.width + height: 64 + color: "#00000000" + z: 99 + visible:true + + TextArea { + id: textArea + x: 64 + width: parent.width-64 + height: parent.height + text:"" + textColor: "#000000" + clip: false + font.pointSize: 20 + + function _onEnterPressed(event) + { + sendMessage(JSON.stringify({type:"MSG",message:text,event:event})); + text = ""; + } + Keys.onReturnPressed: { _onEnterPressed(event) } + Keys.onEnterPressed: { _onEnterPressed(event) } + } + + MouseArea { + anchors.rightMargin: -1 + anchors.bottomMargin: 0 + anchors.topMargin: 0 + anchors.leftMargin: 63 + anchors.fill: parent + propagateComposedEvents: false + acceptedButtons: Qt.AllButtons + enabled: false + onPressed: { + thing.forceActiveFocus(); + mouse.accepted = true; + } + } + + Button { + id: button + x: 0 + y: 0 + width: 64 + height: 64 + text: qsTr("Button") + clip: false + opacity: 1 + iconSource: "" + visible: true + + Image { + id: image + x: 0 + y: 0 + width: 64 + height: 64 + visible: true + fillMode: Image.PreserveAspectFit + source: "chat.png" + } + } + + } + + Connections { + target: button + onClicked: + sendMessage(JSON.stringify({type:"CMD",cmd:"Clicked"})); + } + +} + + +/*##^## Designer { + D{i:0;autoSize:true;height:480;width:640} +} + ##^##*/ diff --git a/scripts/communityModules/chat/FloofChat2.html b/scripts/communityModules/chat/FloofChat2.html new file mode 100644 index 0000000000..6d886aaeca --- /dev/null +++ b/scripts/communityModules/chat/FloofChat2.html @@ -0,0 +1,503 @@ + + + + + + Title + + + + + + + + + + + + + + + + + + +
+ +
+ + + Redock +
+
Test 1
+
Test 2
+
Test 3
+ + +
+ + + + + + + \ No newline at end of file diff --git a/scripts/communityModules/chat/chat.png b/scripts/communityModules/chat/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..995b67a5cbc83ef35777fc166a3504a42443895e GIT binary patch literal 4605 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 RC;|Y0_CtO3DmD9;{|8JlZVdnc literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/css/materialize.css b/scripts/communityModules/chat/css/materialize.css new file mode 100644 index 0000000000..a67c8214c0 --- /dev/null +++ b/scripts/communityModules/chat/css/materialize.css @@ -0,0 +1,9086 @@ +/*! + * Materialize v1.0.0 (http://materializecss.com) + * Copyright 2014-2017 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red { + background-color: #e51c23 !important; +} + +.materialize-red-text { + color: #e51c23 !important; +} + +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; +} + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; +} + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; +} + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; +} + +.materialize-red.lighten-3 { + background-color: #f3989b !important; +} + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; +} + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; +} + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; +} + +.materialize-red.lighten-1 { + background-color: #ea454b !important; +} + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; +} + +.materialize-red.darken-1 { + background-color: #d0181e !important; +} + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; +} + +.materialize-red.darken-2 { + background-color: #b9151b !important; +} + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; +} + +.materialize-red.darken-3 { + background-color: #a21318 !important; +} + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; +} + +.materialize-red.darken-4 { + background-color: #8b1014 !important; +} + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; +} + +.red { + background-color: #F44336 !important; +} + +.red-text { + color: #F44336 !important; +} + +.red.lighten-5 { + background-color: #FFEBEE !important; +} + +.red-text.text-lighten-5 { + color: #FFEBEE !important; +} + +.red.lighten-4 { + background-color: #FFCDD2 !important; +} + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; +} + +.red.lighten-3 { + background-color: #EF9A9A !important; +} + +.red-text.text-lighten-3 { + color: #EF9A9A !important; +} + +.red.lighten-2 { + background-color: #E57373 !important; +} + +.red-text.text-lighten-2 { + color: #E57373 !important; +} + +.red.lighten-1 { + background-color: #EF5350 !important; +} + +.red-text.text-lighten-1 { + color: #EF5350 !important; +} + +.red.darken-1 { + background-color: #E53935 !important; +} + +.red-text.text-darken-1 { + color: #E53935 !important; +} + +.red.darken-2 { + background-color: #D32F2F !important; +} + +.red-text.text-darken-2 { + color: #D32F2F !important; +} + +.red.darken-3 { + background-color: #C62828 !important; +} + +.red-text.text-darken-3 { + color: #C62828 !important; +} + +.red.darken-4 { + background-color: #B71C1C !important; +} + +.red-text.text-darken-4 { + color: #B71C1C !important; +} + +.red.accent-1 { + background-color: #FF8A80 !important; +} + +.red-text.text-accent-1 { + color: #FF8A80 !important; +} + +.red.accent-2 { + background-color: #FF5252 !important; +} + +.red-text.text-accent-2 { + color: #FF5252 !important; +} + +.red.accent-3 { + background-color: #FF1744 !important; +} + +.red-text.text-accent-3 { + color: #FF1744 !important; +} + +.red.accent-4 { + background-color: #D50000 !important; +} + +.red-text.text-accent-4 { + color: #D50000 !important; +} + +.pink { + background-color: #e91e63 !important; +} + +.pink-text { + color: #e91e63 !important; +} + +.pink.lighten-5 { + background-color: #fce4ec !important; +} + +.pink-text.text-lighten-5 { + color: #fce4ec !important; +} + +.pink.lighten-4 { + background-color: #f8bbd0 !important; +} + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; +} + +.pink.lighten-3 { + background-color: #f48fb1 !important; +} + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; +} + +.pink.lighten-2 { + background-color: #f06292 !important; +} + +.pink-text.text-lighten-2 { + color: #f06292 !important; +} + +.pink.lighten-1 { + background-color: #ec407a !important; +} + +.pink-text.text-lighten-1 { + color: #ec407a !important; +} + +.pink.darken-1 { + background-color: #d81b60 !important; +} + +.pink-text.text-darken-1 { + color: #d81b60 !important; +} + +.pink.darken-2 { + background-color: #c2185b !important; +} + +.pink-text.text-darken-2 { + color: #c2185b !important; +} + +.pink.darken-3 { + background-color: #ad1457 !important; +} + +.pink-text.text-darken-3 { + color: #ad1457 !important; +} + +.pink.darken-4 { + background-color: #880e4f !important; +} + +.pink-text.text-darken-4 { + color: #880e4f !important; +} + +.pink.accent-1 { + background-color: #ff80ab !important; +} + +.pink-text.text-accent-1 { + color: #ff80ab !important; +} + +.pink.accent-2 { + background-color: #ff4081 !important; +} + +.pink-text.text-accent-2 { + color: #ff4081 !important; +} + +.pink.accent-3 { + background-color: #f50057 !important; +} + +.pink-text.text-accent-3 { + color: #f50057 !important; +} + +.pink.accent-4 { + background-color: #c51162 !important; +} + +.pink-text.text-accent-4 { + color: #c51162 !important; +} + +.purple { + background-color: #9c27b0 !important; +} + +.purple-text { + color: #9c27b0 !important; +} + +.purple.lighten-5 { + background-color: #f3e5f5 !important; +} + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; +} + +.purple.lighten-4 { + background-color: #e1bee7 !important; +} + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; +} + +.purple.lighten-3 { + background-color: #ce93d8 !important; +} + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; +} + +.purple.lighten-2 { + background-color: #ba68c8 !important; +} + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; +} + +.purple.lighten-1 { + background-color: #ab47bc !important; +} + +.purple-text.text-lighten-1 { + color: #ab47bc !important; +} + +.purple.darken-1 { + background-color: #8e24aa !important; +} + +.purple-text.text-darken-1 { + color: #8e24aa !important; +} + +.purple.darken-2 { + background-color: #7b1fa2 !important; +} + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; +} + +.purple.darken-3 { + background-color: #6a1b9a !important; +} + +.purple-text.text-darken-3 { + color: #6a1b9a !important; +} + +.purple.darken-4 { + background-color: #4a148c !important; +} + +.purple-text.text-darken-4 { + color: #4a148c !important; +} + +.purple.accent-1 { + background-color: #ea80fc !important; +} + +.purple-text.text-accent-1 { + color: #ea80fc !important; +} + +.purple.accent-2 { + background-color: #e040fb !important; +} + +.purple-text.text-accent-2 { + color: #e040fb !important; +} + +.purple.accent-3 { + background-color: #d500f9 !important; +} + +.purple-text.text-accent-3 { + color: #d500f9 !important; +} + +.purple.accent-4 { + background-color: #aa00ff !important; +} + +.purple-text.text-accent-4 { + color: #aa00ff !important; +} + +.deep-purple { + background-color: #673ab7 !important; +} + +.deep-purple-text { + color: #673ab7 !important; +} + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; +} + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; +} + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; +} + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; +} + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; +} + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; +} + +.deep-purple.lighten-2 { + background-color: #9575cd !important; +} + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; +} + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; +} + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; +} + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; +} + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; +} + +.deep-purple.darken-2 { + background-color: #512da8 !important; +} + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; +} + +.deep-purple.darken-3 { + background-color: #4527a0 !important; +} + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; +} + +.deep-purple.darken-4 { + background-color: #311b92 !important; +} + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; +} + +.deep-purple.accent-1 { + background-color: #b388ff !important; +} + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; +} + +.deep-purple.accent-2 { + background-color: #7c4dff !important; +} + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; +} + +.deep-purple.accent-3 { + background-color: #651fff !important; +} + +.deep-purple-text.text-accent-3 { + color: #651fff !important; +} + +.deep-purple.accent-4 { + background-color: #6200ea !important; +} + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; +} + +.indigo { + background-color: #3f51b5 !important; +} + +.indigo-text { + color: #3f51b5 !important; +} + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; +} + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; +} + +.indigo.lighten-4 { + background-color: #c5cae9 !important; +} + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; +} + +.indigo.lighten-3 { + background-color: #9fa8da !important; +} + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; +} + +.indigo.lighten-2 { + background-color: #7986cb !important; +} + +.indigo-text.text-lighten-2 { + color: #7986cb !important; +} + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; +} + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; +} + +.indigo.darken-1 { + background-color: #3949ab !important; +} + +.indigo-text.text-darken-1 { + color: #3949ab !important; +} + +.indigo.darken-2 { + background-color: #303f9f !important; +} + +.indigo-text.text-darken-2 { + color: #303f9f !important; +} + +.indigo.darken-3 { + background-color: #283593 !important; +} + +.indigo-text.text-darken-3 { + color: #283593 !important; +} + +.indigo.darken-4 { + background-color: #1a237e !important; +} + +.indigo-text.text-darken-4 { + color: #1a237e !important; +} + +.indigo.accent-1 { + background-color: #8c9eff !important; +} + +.indigo-text.text-accent-1 { + color: #8c9eff !important; +} + +.indigo.accent-2 { + background-color: #536dfe !important; +} + +.indigo-text.text-accent-2 { + color: #536dfe !important; +} + +.indigo.accent-3 { + background-color: #3d5afe !important; +} + +.indigo-text.text-accent-3 { + color: #3d5afe !important; +} + +.indigo.accent-4 { + background-color: #304ffe !important; +} + +.indigo-text.text-accent-4 { + color: #304ffe !important; +} + +.blue { + background-color: #2196F3 !important; +} + +.blue-text { + color: #2196F3 !important; +} + +.blue.lighten-5 { + background-color: #E3F2FD !important; +} + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; +} + +.blue.lighten-4 { + background-color: #BBDEFB !important; +} + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; +} + +.blue.lighten-3 { + background-color: #90CAF9 !important; +} + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; +} + +.blue.lighten-2 { + background-color: #64B5F6 !important; +} + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; +} + +.blue.lighten-1 { + background-color: #42A5F5 !important; +} + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; +} + +.blue.darken-1 { + background-color: #1E88E5 !important; +} + +.blue-text.text-darken-1 { + color: #1E88E5 !important; +} + +.blue.darken-2 { + background-color: #1976D2 !important; +} + +.blue-text.text-darken-2 { + color: #1976D2 !important; +} + +.blue.darken-3 { + background-color: #1565C0 !important; +} + +.blue-text.text-darken-3 { + color: #1565C0 !important; +} + +.blue.darken-4 { + background-color: #0D47A1 !important; +} + +.blue-text.text-darken-4 { + color: #0D47A1 !important; +} + +.blue.accent-1 { + background-color: #82B1FF !important; +} + +.blue-text.text-accent-1 { + color: #82B1FF !important; +} + +.blue.accent-2 { + background-color: #448AFF !important; +} + +.blue-text.text-accent-2 { + color: #448AFF !important; +} + +.blue.accent-3 { + background-color: #2979FF !important; +} + +.blue-text.text-accent-3 { + color: #2979FF !important; +} + +.blue.accent-4 { + background-color: #2962FF !important; +} + +.blue-text.text-accent-4 { + color: #2962FF !important; +} + +.light-blue { + background-color: #03a9f4 !important; +} + +.light-blue-text { + color: #03a9f4 !important; +} + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; +} + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; +} + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; +} + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; +} + +.light-blue.lighten-3 { + background-color: #81d4fa !important; +} + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; +} + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; +} + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; +} + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; +} + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; +} + +.light-blue.darken-1 { + background-color: #039be5 !important; +} + +.light-blue-text.text-darken-1 { + color: #039be5 !important; +} + +.light-blue.darken-2 { + background-color: #0288d1 !important; +} + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; +} + +.light-blue.darken-3 { + background-color: #0277bd !important; +} + +.light-blue-text.text-darken-3 { + color: #0277bd !important; +} + +.light-blue.darken-4 { + background-color: #01579b !important; +} + +.light-blue-text.text-darken-4 { + color: #01579b !important; +} + +.light-blue.accent-1 { + background-color: #80d8ff !important; +} + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; +} + +.light-blue.accent-2 { + background-color: #40c4ff !important; +} + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; +} + +.light-blue.accent-3 { + background-color: #00b0ff !important; +} + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; +} + +.light-blue.accent-4 { + background-color: #0091ea !important; +} + +.light-blue-text.text-accent-4 { + color: #0091ea !important; +} + +.cyan { + background-color: #00bcd4 !important; +} + +.cyan-text { + color: #00bcd4 !important; +} + +.cyan.lighten-5 { + background-color: #e0f7fa !important; +} + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; +} + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; +} + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; +} + +.cyan.lighten-3 { + background-color: #80deea !important; +} + +.cyan-text.text-lighten-3 { + color: #80deea !important; +} + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; +} + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; +} + +.cyan.lighten-1 { + background-color: #26c6da !important; +} + +.cyan-text.text-lighten-1 { + color: #26c6da !important; +} + +.cyan.darken-1 { + background-color: #00acc1 !important; +} + +.cyan-text.text-darken-1 { + color: #00acc1 !important; +} + +.cyan.darken-2 { + background-color: #0097a7 !important; +} + +.cyan-text.text-darken-2 { + color: #0097a7 !important; +} + +.cyan.darken-3 { + background-color: #00838f !important; +} + +.cyan-text.text-darken-3 { + color: #00838f !important; +} + +.cyan.darken-4 { + background-color: #006064 !important; +} + +.cyan-text.text-darken-4 { + color: #006064 !important; +} + +.cyan.accent-1 { + background-color: #84ffff !important; +} + +.cyan-text.text-accent-1 { + color: #84ffff !important; +} + +.cyan.accent-2 { + background-color: #18ffff !important; +} + +.cyan-text.text-accent-2 { + color: #18ffff !important; +} + +.cyan.accent-3 { + background-color: #00e5ff !important; +} + +.cyan-text.text-accent-3 { + color: #00e5ff !important; +} + +.cyan.accent-4 { + background-color: #00b8d4 !important; +} + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; +} + +.teal { + background-color: #009688 !important; +} + +.teal-text { + color: #009688 !important; +} + +.teal.lighten-5 { + background-color: #e0f2f1 !important; +} + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; +} + +.teal.lighten-4 { + background-color: #b2dfdb !important; +} + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; +} + +.teal.lighten-3 { + background-color: #80cbc4 !important; +} + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; +} + +.teal.lighten-2 { + background-color: #4db6ac !important; +} + +.teal-text.text-lighten-2 { + color: #4db6ac !important; +} + +.teal.lighten-1 { + background-color: #26a69a !important; +} + +.teal-text.text-lighten-1 { + color: #26a69a !important; +} + +.teal.darken-1 { + background-color: #00897b !important; +} + +.teal-text.text-darken-1 { + color: #00897b !important; +} + +.teal.darken-2 { + background-color: #00796b !important; +} + +.teal-text.text-darken-2 { + color: #00796b !important; +} + +.teal.darken-3 { + background-color: #00695c !important; +} + +.teal-text.text-darken-3 { + color: #00695c !important; +} + +.teal.darken-4 { + background-color: #004d40 !important; +} + +.teal-text.text-darken-4 { + color: #004d40 !important; +} + +.teal.accent-1 { + background-color: #a7ffeb !important; +} + +.teal-text.text-accent-1 { + color: #a7ffeb !important; +} + +.teal.accent-2 { + background-color: #64ffda !important; +} + +.teal-text.text-accent-2 { + color: #64ffda !important; +} + +.teal.accent-3 { + background-color: #1de9b6 !important; +} + +.teal-text.text-accent-3 { + color: #1de9b6 !important; +} + +.teal.accent-4 { + background-color: #00bfa5 !important; +} + +.teal-text.text-accent-4 { + color: #00bfa5 !important; +} + +.green { + background-color: #4CAF50 !important; +} + +.green-text { + color: #4CAF50 !important; +} + +.green.lighten-5 { + background-color: #E8F5E9 !important; +} + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; +} + +.green.lighten-4 { + background-color: #C8E6C9 !important; +} + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; +} + +.green.lighten-3 { + background-color: #A5D6A7 !important; +} + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; +} + +.green.lighten-2 { + background-color: #81C784 !important; +} + +.green-text.text-lighten-2 { + color: #81C784 !important; +} + +.green.lighten-1 { + background-color: #66BB6A !important; +} + +.green-text.text-lighten-1 { + color: #66BB6A !important; +} + +.green.darken-1 { + background-color: #43A047 !important; +} + +.green-text.text-darken-1 { + color: #43A047 !important; +} + +.green.darken-2 { + background-color: #388E3C !important; +} + +.green-text.text-darken-2 { + color: #388E3C !important; +} + +.green.darken-3 { + background-color: #2E7D32 !important; +} + +.green-text.text-darken-3 { + color: #2E7D32 !important; +} + +.green.darken-4 { + background-color: #1B5E20 !important; +} + +.green-text.text-darken-4 { + color: #1B5E20 !important; +} + +.green.accent-1 { + background-color: #B9F6CA !important; +} + +.green-text.text-accent-1 { + color: #B9F6CA !important; +} + +.green.accent-2 { + background-color: #69F0AE !important; +} + +.green-text.text-accent-2 { + color: #69F0AE !important; +} + +.green.accent-3 { + background-color: #00E676 !important; +} + +.green-text.text-accent-3 { + color: #00E676 !important; +} + +.green.accent-4 { + background-color: #00C853 !important; +} + +.green-text.text-accent-4 { + color: #00C853 !important; +} + +.light-green { + background-color: #8bc34a !important; +} + +.light-green-text { + color: #8bc34a !important; +} + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; +} + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; +} + +.light-green.lighten-4 { + background-color: #dcedc8 !important; +} + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; +} + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; +} + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; +} + +.light-green.lighten-2 { + background-color: #aed581 !important; +} + +.light-green-text.text-lighten-2 { + color: #aed581 !important; +} + +.light-green.lighten-1 { + background-color: #9ccc65 !important; +} + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; +} + +.light-green.darken-1 { + background-color: #7cb342 !important; +} + +.light-green-text.text-darken-1 { + color: #7cb342 !important; +} + +.light-green.darken-2 { + background-color: #689f38 !important; +} + +.light-green-text.text-darken-2 { + color: #689f38 !important; +} + +.light-green.darken-3 { + background-color: #558b2f !important; +} + +.light-green-text.text-darken-3 { + color: #558b2f !important; +} + +.light-green.darken-4 { + background-color: #33691e !important; +} + +.light-green-text.text-darken-4 { + color: #33691e !important; +} + +.light-green.accent-1 { + background-color: #ccff90 !important; +} + +.light-green-text.text-accent-1 { + color: #ccff90 !important; +} + +.light-green.accent-2 { + background-color: #b2ff59 !important; +} + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; +} + +.light-green.accent-3 { + background-color: #76ff03 !important; +} + +.light-green-text.text-accent-3 { + color: #76ff03 !important; +} + +.light-green.accent-4 { + background-color: #64dd17 !important; +} + +.light-green-text.text-accent-4 { + color: #64dd17 !important; +} + +.lime { + background-color: #cddc39 !important; +} + +.lime-text { + color: #cddc39 !important; +} + +.lime.lighten-5 { + background-color: #f9fbe7 !important; +} + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; +} + +.lime.lighten-4 { + background-color: #f0f4c3 !important; +} + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; +} + +.lime.lighten-3 { + background-color: #e6ee9c !important; +} + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; +} + +.lime.lighten-2 { + background-color: #dce775 !important; +} + +.lime-text.text-lighten-2 { + color: #dce775 !important; +} + +.lime.lighten-1 { + background-color: #d4e157 !important; +} + +.lime-text.text-lighten-1 { + color: #d4e157 !important; +} + +.lime.darken-1 { + background-color: #c0ca33 !important; +} + +.lime-text.text-darken-1 { + color: #c0ca33 !important; +} + +.lime.darken-2 { + background-color: #afb42b !important; +} + +.lime-text.text-darken-2 { + color: #afb42b !important; +} + +.lime.darken-3 { + background-color: #9e9d24 !important; +} + +.lime-text.text-darken-3 { + color: #9e9d24 !important; +} + +.lime.darken-4 { + background-color: #827717 !important; +} + +.lime-text.text-darken-4 { + color: #827717 !important; +} + +.lime.accent-1 { + background-color: #f4ff81 !important; +} + +.lime-text.text-accent-1 { + color: #f4ff81 !important; +} + +.lime.accent-2 { + background-color: #eeff41 !important; +} + +.lime-text.text-accent-2 { + color: #eeff41 !important; +} + +.lime.accent-3 { + background-color: #c6ff00 !important; +} + +.lime-text.text-accent-3 { + color: #c6ff00 !important; +} + +.lime.accent-4 { + background-color: #aeea00 !important; +} + +.lime-text.text-accent-4 { + color: #aeea00 !important; +} + +.yellow { + background-color: #ffeb3b !important; +} + +.yellow-text { + color: #ffeb3b !important; +} + +.yellow.lighten-5 { + background-color: #fffde7 !important; +} + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; +} + +.yellow.lighten-4 { + background-color: #fff9c4 !important; +} + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; +} + +.yellow.lighten-3 { + background-color: #fff59d !important; +} + +.yellow-text.text-lighten-3 { + color: #fff59d !important; +} + +.yellow.lighten-2 { + background-color: #fff176 !important; +} + +.yellow-text.text-lighten-2 { + color: #fff176 !important; +} + +.yellow.lighten-1 { + background-color: #ffee58 !important; +} + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; +} + +.yellow.darken-1 { + background-color: #fdd835 !important; +} + +.yellow-text.text-darken-1 { + color: #fdd835 !important; +} + +.yellow.darken-2 { + background-color: #fbc02d !important; +} + +.yellow-text.text-darken-2 { + color: #fbc02d !important; +} + +.yellow.darken-3 { + background-color: #f9a825 !important; +} + +.yellow-text.text-darken-3 { + color: #f9a825 !important; +} + +.yellow.darken-4 { + background-color: #f57f17 !important; +} + +.yellow-text.text-darken-4 { + color: #f57f17 !important; +} + +.yellow.accent-1 { + background-color: #ffff8d !important; +} + +.yellow-text.text-accent-1 { + color: #ffff8d !important; +} + +.yellow.accent-2 { + background-color: #ffff00 !important; +} + +.yellow-text.text-accent-2 { + color: #ffff00 !important; +} + +.yellow.accent-3 { + background-color: #ffea00 !important; +} + +.yellow-text.text-accent-3 { + color: #ffea00 !important; +} + +.yellow.accent-4 { + background-color: #ffd600 !important; +} + +.yellow-text.text-accent-4 { + color: #ffd600 !important; +} + +.amber { + background-color: #ffc107 !important; +} + +.amber-text { + color: #ffc107 !important; +} + +.amber.lighten-5 { + background-color: #fff8e1 !important; +} + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; +} + +.amber.lighten-4 { + background-color: #ffecb3 !important; +} + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; +} + +.amber.lighten-3 { + background-color: #ffe082 !important; +} + +.amber-text.text-lighten-3 { + color: #ffe082 !important; +} + +.amber.lighten-2 { + background-color: #ffd54f !important; +} + +.amber-text.text-lighten-2 { + color: #ffd54f !important; +} + +.amber.lighten-1 { + background-color: #ffca28 !important; +} + +.amber-text.text-lighten-1 { + color: #ffca28 !important; +} + +.amber.darken-1 { + background-color: #ffb300 !important; +} + +.amber-text.text-darken-1 { + color: #ffb300 !important; +} + +.amber.darken-2 { + background-color: #ffa000 !important; +} + +.amber-text.text-darken-2 { + color: #ffa000 !important; +} + +.amber.darken-3 { + background-color: #ff8f00 !important; +} + +.amber-text.text-darken-3 { + color: #ff8f00 !important; +} + +.amber.darken-4 { + background-color: #ff6f00 !important; +} + +.amber-text.text-darken-4 { + color: #ff6f00 !important; +} + +.amber.accent-1 { + background-color: #ffe57f !important; +} + +.amber-text.text-accent-1 { + color: #ffe57f !important; +} + +.amber.accent-2 { + background-color: #ffd740 !important; +} + +.amber-text.text-accent-2 { + color: #ffd740 !important; +} + +.amber.accent-3 { + background-color: #ffc400 !important; +} + +.amber-text.text-accent-3 { + color: #ffc400 !important; +} + +.amber.accent-4 { + background-color: #ffab00 !important; +} + +.amber-text.text-accent-4 { + color: #ffab00 !important; +} + +.orange { + background-color: #ff9800 !important; +} + +.orange-text { + color: #ff9800 !important; +} + +.orange.lighten-5 { + background-color: #fff3e0 !important; +} + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; +} + +.orange.lighten-4 { + background-color: #ffe0b2 !important; +} + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; +} + +.orange.lighten-3 { + background-color: #ffcc80 !important; +} + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; +} + +.orange.lighten-2 { + background-color: #ffb74d !important; +} + +.orange-text.text-lighten-2 { + color: #ffb74d !important; +} + +.orange.lighten-1 { + background-color: #ffa726 !important; +} + +.orange-text.text-lighten-1 { + color: #ffa726 !important; +} + +.orange.darken-1 { + background-color: #fb8c00 !important; +} + +.orange-text.text-darken-1 { + color: #fb8c00 !important; +} + +.orange.darken-2 { + background-color: #f57c00 !important; +} + +.orange-text.text-darken-2 { + color: #f57c00 !important; +} + +.orange.darken-3 { + background-color: #ef6c00 !important; +} + +.orange-text.text-darken-3 { + color: #ef6c00 !important; +} + +.orange.darken-4 { + background-color: #e65100 !important; +} + +.orange-text.text-darken-4 { + color: #e65100 !important; +} + +.orange.accent-1 { + background-color: #ffd180 !important; +} + +.orange-text.text-accent-1 { + color: #ffd180 !important; +} + +.orange.accent-2 { + background-color: #ffab40 !important; +} + +.orange-text.text-accent-2 { + color: #ffab40 !important; +} + +.orange.accent-3 { + background-color: #ff9100 !important; +} + +.orange-text.text-accent-3 { + color: #ff9100 !important; +} + +.orange.accent-4 { + background-color: #ff6d00 !important; +} + +.orange-text.text-accent-4 { + color: #ff6d00 !important; +} + +.deep-orange { + background-color: #ff5722 !important; +} + +.deep-orange-text { + color: #ff5722 !important; +} + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; +} + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; +} + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; +} + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; +} + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; +} + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; +} + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; +} + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; +} + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; +} + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; +} + +.deep-orange.darken-1 { + background-color: #f4511e !important; +} + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; +} + +.deep-orange.darken-2 { + background-color: #e64a19 !important; +} + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; +} + +.deep-orange.darken-3 { + background-color: #d84315 !important; +} + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; +} + +.deep-orange.darken-4 { + background-color: #bf360c !important; +} + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; +} + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; +} + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; +} + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; +} + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; +} + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; +} + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; +} + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; +} + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; +} + +.brown { + background-color: #795548 !important; +} + +.brown-text { + color: #795548 !important; +} + +.brown.lighten-5 { + background-color: #efebe9 !important; +} + +.brown-text.text-lighten-5 { + color: #efebe9 !important; +} + +.brown.lighten-4 { + background-color: #d7ccc8 !important; +} + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; +} + +.brown.lighten-3 { + background-color: #bcaaa4 !important; +} + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; +} + +.brown.lighten-2 { + background-color: #a1887f !important; +} + +.brown-text.text-lighten-2 { + color: #a1887f !important; +} + +.brown.lighten-1 { + background-color: #8d6e63 !important; +} + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; +} + +.brown.darken-1 { + background-color: #6d4c41 !important; +} + +.brown-text.text-darken-1 { + color: #6d4c41 !important; +} + +.brown.darken-2 { + background-color: #5d4037 !important; +} + +.brown-text.text-darken-2 { + color: #5d4037 !important; +} + +.brown.darken-3 { + background-color: #4e342e !important; +} + +.brown-text.text-darken-3 { + color: #4e342e !important; +} + +.brown.darken-4 { + background-color: #3e2723 !important; +} + +.brown-text.text-darken-4 { + color: #3e2723 !important; +} + +.blue-grey { + background-color: #607d8b !important; +} + +.blue-grey-text { + color: #607d8b !important; +} + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; +} + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; +} + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; +} + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; +} + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; +} + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; +} + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; +} + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; +} + +.blue-grey.lighten-1 { + background-color: #78909c !important; +} + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; +} + +.blue-grey.darken-1 { + background-color: #546e7a !important; +} + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; +} + +.blue-grey.darken-2 { + background-color: #455a64 !important; +} + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; +} + +.blue-grey.darken-3 { + background-color: #37474f !important; +} + +.blue-grey-text.text-darken-3 { + color: #37474f !important; +} + +.blue-grey.darken-4 { + background-color: #263238 !important; +} + +.blue-grey-text.text-darken-4 { + color: #263238 !important; +} + +.grey { + background-color: #9e9e9e !important; +} + +.grey-text { + color: #9e9e9e !important; +} + +.grey.lighten-5 { + background-color: #fafafa !important; +} + +.grey-text.text-lighten-5 { + color: #fafafa !important; +} + +.grey.lighten-4 { + background-color: #f5f5f5 !important; +} + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; +} + +.grey.lighten-3 { + background-color: #eeeeee !important; +} + +.grey-text.text-lighten-3 { + color: #eeeeee !important; +} + +.grey.lighten-2 { + background-color: #e0e0e0 !important; +} + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; +} + +.grey.lighten-1 { + background-color: #bdbdbd !important; +} + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; +} + +.grey.darken-1 { + background-color: #757575 !important; +} + +.grey-text.text-darken-1 { + color: #757575 !important; +} + +.grey.darken-2 { + background-color: #616161 !important; +} + +.grey-text.text-darken-2 { + color: #616161 !important; +} + +.grey.darken-3 { + background-color: #424242 !important; +} + +.grey-text.text-darken-3 { + color: #424242 !important; +} + +.grey.darken-4 { + background-color: #212121 !important; +} + +.grey-text.text-darken-4 { + color: #212121 !important; +} + +.black { + background-color: #000000 !important; +} + +.black-text { + color: #000000 !important; +} + +.white { + background-color: #FFFFFF !important; +} + +.white-text { + color: #FFFFFF !important; +} + +.transparent { + background-color: transparent !important; +} + +.transparent-text { + color: transparent !important; +} + +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ +html { + line-height: 1.15; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ +figcaption, +figure, +main { + /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a { + background-color: transparent; + /* 1 */ + -webkit-text-decoration-skip: objects; + /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + -webkit-text-decoration: underline dotted; + -moz-text-decoration: underline dotted; + text-decoration: underline dotted; + /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ +details, +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ +template { + display: none; +} + +/* Hidden + ========================================================================== */ +/** + * Add the correct display in IE 10-. + */ +[hidden] { + display: none; +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, *:before, *:after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +button, +input, +optgroup, +select, +textarea { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; +} + +ul:not(.browser-default) { + padding-left: 0; + list-style-type: none; +} + +ul:not(.browser-default) > li { + list-style-type: none; +} + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; +} + +.valign-wrapper { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.clearfix { + clear: both; +} + +.z-depth-0 { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/* 2dp elevation modified*/ +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-small, .btn-floating, .dropdown-content, .collapsible, .sidenav { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); +} + +.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-small:hover, .btn-floating:hover { + -webkit-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); +} + +/* 6dp elevation modified*/ +.z-depth-2 { + -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); +} + +/* 12dp elevation modified*/ +.z-depth-3 { + -webkit-box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); + box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); +} + +/* 16dp elevation */ +.z-depth-4 { + -webkit-box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2); + box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2); +} + +/* 24dp elevation */ +.z-depth-5, .modal { + -webkit-box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2); + box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2); +} + +.hoverable { + -webkit-transition: -webkit-box-shadow .25s; + transition: -webkit-box-shadow .25s; + transition: box-shadow .25s; + transition: box-shadow .25s, -webkit-box-shadow .25s; +} + +.hoverable:hover { + -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; +} + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; +} + +i { + line-height: inherit; +} + +i.left { + float: left; + margin-right: 15px; +} + +i.right { + float: right; + margin-left: 15px; +} + +i.tiny { + font-size: 1rem; +} + +i.small { + font-size: 2rem; +} + +i.medium { + font-size: 4rem; +} + +i.large { + font-size: 6rem; +} + +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; +} + +.pagination li { + display: inline-block; + border-radius: 2px; + text-align: center; + vertical-align: top; + height: 30px; +} + +.pagination li a { + color: #444; + display: inline-block; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; +} + +.pagination li.active a { + color: #fff; +} + +.pagination li.active { + background-color: #ee6e73; +} + +.pagination li.disabled a { + cursor: default; + color: #999; +} + +.pagination li i { + font-size: 2rem; +} + +.pagination li.pages ul li { + display: inline-block; + float: none; +} + +@media only screen and (max-width: 992px) { + .pagination { + width: 100%; + } + .pagination li.prev, + .pagination li.next { + width: 10%; + } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; + } +} + +.breadcrumb { + font-size: 18px; + color: rgba(255, 255, 255, 0.7); +} + +.breadcrumb i, +.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"], +.breadcrumb i.material-icons { + display: inline-block; + float: left; + font-size: 24px; +} + +.breadcrumb:before { + content: '\E5CC'; + color: rgba(255, 255, 255, 0.7); + vertical-align: top; + display: inline-block; + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 25px; + margin: 0 10px 0 8px; + -webkit-font-smoothing: antialiased; +} + +.breadcrumb:first-child:before { + display: none; +} + +.breadcrumb:last-child { + color: #fff; +} + +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; +} + +.parallax-container .parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; +} + +.parallax-container .parallax img { + opacity: 0; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.pin-top, .pin-bottom { + position: relative; +} + +.pinned { + position: fixed !important; +} + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; +} + +.fade-in { + opacity: 0; + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; +} + +/********************* + Media Query Classes +**********************/ +@media only screen and (max-width: 600px) { + .hide-on-small-only, .hide-on-small-and-down { + display: none !important; + } +} + +@media only screen and (max-width: 992px) { + .hide-on-med-and-down { + display: none !important; + } +} + +@media only screen and (min-width: 601px) { + .hide-on-med-and-up { + display: none !important; + } +} + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .hide-on-med-only { + display: none !important; + } +} + +@media only screen and (min-width: 993px) { + .hide-on-large-only { + display: none !important; + } +} + +@media only screen and (min-width: 1201px) { + .hide-on-extra-large-only { + display: none !important; + } +} + +@media only screen and (min-width: 1201px) { + .show-on-extra-large { + display: block !important; + } +} + +@media only screen and (min-width: 993px) { + .show-on-large { + display: block !important; + } +} + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: block !important; + } +} + +@media only screen and (max-width: 600px) { + .show-on-small { + display: block !important; + } +} + +@media only screen and (min-width: 601px) { + .show-on-medium-and-up { + display: block !important; + } +} + +@media only screen and (max-width: 992px) { + .show-on-medium-and-down { + display: block !important; + } +} + +@media only screen and (max-width: 600px) { + .center-on-small-only { + text-align: center; + } +} + +.page-footer { + padding-top: 20px; + color: #fff; + background-color: #ee6e73; +} + +.page-footer .footer-copyright { + overflow: hidden; + min-height: 50px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 10px 0px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); +} + +table, th, td { + border: none; +} + +table { + width: 100%; + display: table; + border-collapse: collapse; + border-spacing: 0; +} + +table.striped tr { + border-bottom: none; +} + +table.striped > tbody > tr:nth-child(odd) { + background-color: rgba(242, 242, 242, 0.5); +} + +table.striped > tbody > tr > td { + border-radius: 0; +} + +table.highlight > tbody > tr { + -webkit-transition: background-color .25s ease; + transition: background-color .25s ease; +} + +table.highlight > tbody > tr:hover { + background-color: rgba(242, 242, 242, 0.5); +} + +table.centered thead tr th, table.centered tbody tr td { + text-align: center; +} + +tr { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); +} + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +@media only screen and (max-width: 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ + } + table.responsive-table td:empty:before { + content: '\00a0'; + } + table.responsive-table th, + table.responsive-table td { + margin: 0; + vertical-align: top; + } + table.responsive-table th { + text-align: left; + } + table.responsive-table thead { + display: block; + float: left; + } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; + } + table.responsive-table thead tr th::before { + content: "\00a0"; + } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; + } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; + } + table.responsive-table th { + display: block; + text-align: right; + } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; + } + table.responsive-table tr { + border-bottom: none; + padding: 0 10px; + } + table.responsive-table thead { + border: 0; + border-right: 1px solid rgba(0, 0, 0, 0.12); + } +} + +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; +} + +.collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; +} + +.collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; +} + +.collection .collection-item.avatar:not(.circle-clipper) > .circle, +.collection .collection-item.avatar :not(.circle-clipper) > .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; +} + +.collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; +} + +.collection .collection-item.avatar .title { + font-size: 16px; +} + +.collection .collection-item.avatar p { + margin: 0; +} + +.collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; +} + +.collection .collection-item:last-child { + border-bottom: none; +} + +.collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; +} + +.collection .collection-item.active .secondary-content { + color: #fff; +} + +.collection a.collection-item { + display: block; + -webkit-transition: .25s; + transition: .25s; + color: #26a69a; +} + +.collection a.collection-item:not(.active):hover { + background-color: #ddd; +} + +.collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; +} + +.collection.with-header .collection-item { + padding-left: 30px; +} + +.collection.with-header .collection-item.avatar { + padding-left: 72px; +} + +.secondary-content { + float: right; + color: #26a69a; +} + +.collapsible .collection { + margin: 0; + border: none; +} + +.video-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; +} + +.video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; +} + +.progress .determinate { + position: absolute; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + -webkit-transition: width .3s linear; + transition: width .3s linear; +} + +.progress .indeterminate { + background-color: #26a69a; +} + +.progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; +} + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; +} + +.left-align { + text-align: left; +} + +.right-align { + text-align: right; +} + +.center, .center-align { + text-align: center; +} + +.left { + float: left !important; +} + +.right { + float: right !important; +} + +.no-select, input[type=range], +input[type=range] + .thumb { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.circle { + border-radius: 50%; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.no-padding { + padding: 0 !important; +} + +span.badge { + min-width: 3rem; + padding: 0 6px; + margin-left: 14px; + text-align: center; + font-size: 1rem; + line-height: 22px; + height: 22px; + color: #757575; + float: right; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; +} + +span.badge.new:after { + content: " new"; +} + +span.badge[data-badge-caption]::after { + content: " " attr(data-badge-caption); +} + +nav ul a span.badge { + display: inline-block; + float: none; + margin-left: 4px; + line-height: 22px; + height: 22px; + -webkit-font-smoothing: auto; +} + +.collection-item span.badge { + margin-top: calc(0.75rem - 11px); +} + +.collapsible span.badge { + margin-left: auto; +} + +.sidenav span.badge { + margin-top: calc(24px - 11px); +} + +table span.badge { + display: inline-block; + float: none; + margin-left: auto; +} + +/* This is needed for some mobile phones to display the Google Icon font properly */ +.material-icons { + text-rendering: optimizeLegibility; + -webkit-font-feature-settings: 'liga'; + -moz-font-feature-settings: 'liga'; + font-feature-settings: 'liga'; +} + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; +} + +@media only screen and (min-width: 601px) { + .container { + width: 85%; + } +} + +@media only screen and (min-width: 993px) { + .container { + width: 70%; + } +} + +.col .row { + margin-left: -0.75rem; + margin-right: -0.75rem; +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.section.no-pad { + padding: 0; +} + +.section.no-pad-bot { + padding-bottom: 0; +} + +.section.no-pad-top { + padding-top: 0; +} + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +.row .col { + float: left; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.75rem; + min-height: 1px; +} + +.row .col[class*="push-"], .row .col[class*="pull-"] { + position: relative; +} + +.row .col.s1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.s12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; +} + +.row .col.offset-s1 { + margin-left: 8.3333333333%; +} + +.row .col.pull-s1 { + right: 8.3333333333%; +} + +.row .col.push-s1 { + left: 8.3333333333%; +} + +.row .col.offset-s2 { + margin-left: 16.6666666667%; +} + +.row .col.pull-s2 { + right: 16.6666666667%; +} + +.row .col.push-s2 { + left: 16.6666666667%; +} + +.row .col.offset-s3 { + margin-left: 25%; +} + +.row .col.pull-s3 { + right: 25%; +} + +.row .col.push-s3 { + left: 25%; +} + +.row .col.offset-s4 { + margin-left: 33.3333333333%; +} + +.row .col.pull-s4 { + right: 33.3333333333%; +} + +.row .col.push-s4 { + left: 33.3333333333%; +} + +.row .col.offset-s5 { + margin-left: 41.6666666667%; +} + +.row .col.pull-s5 { + right: 41.6666666667%; +} + +.row .col.push-s5 { + left: 41.6666666667%; +} + +.row .col.offset-s6 { + margin-left: 50%; +} + +.row .col.pull-s6 { + right: 50%; +} + +.row .col.push-s6 { + left: 50%; +} + +.row .col.offset-s7 { + margin-left: 58.3333333333%; +} + +.row .col.pull-s7 { + right: 58.3333333333%; +} + +.row .col.push-s7 { + left: 58.3333333333%; +} + +.row .col.offset-s8 { + margin-left: 66.6666666667%; +} + +.row .col.pull-s8 { + right: 66.6666666667%; +} + +.row .col.push-s8 { + left: 66.6666666667%; +} + +.row .col.offset-s9 { + margin-left: 75%; +} + +.row .col.pull-s9 { + right: 75%; +} + +.row .col.push-s9 { + left: 75%; +} + +.row .col.offset-s10 { + margin-left: 83.3333333333%; +} + +.row .col.pull-s10 { + right: 83.3333333333%; +} + +.row .col.push-s10 { + left: 83.3333333333%; +} + +.row .col.offset-s11 { + margin-left: 91.6666666667%; +} + +.row .col.pull-s11 { + right: 91.6666666667%; +} + +.row .col.push-s11 { + left: 91.6666666667%; +} + +.row .col.offset-s12 { + margin-left: 100%; +} + +.row .col.pull-s12 { + right: 100%; +} + +.row .col.push-s12 { + left: 100%; +} + +@media only screen and (min-width: 601px) { + .row .col.m1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.m12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.offset-m1 { + margin-left: 8.3333333333%; + } + .row .col.pull-m1 { + right: 8.3333333333%; + } + .row .col.push-m1 { + left: 8.3333333333%; + } + .row .col.offset-m2 { + margin-left: 16.6666666667%; + } + .row .col.pull-m2 { + right: 16.6666666667%; + } + .row .col.push-m2 { + left: 16.6666666667%; + } + .row .col.offset-m3 { + margin-left: 25%; + } + .row .col.pull-m3 { + right: 25%; + } + .row .col.push-m3 { + left: 25%; + } + .row .col.offset-m4 { + margin-left: 33.3333333333%; + } + .row .col.pull-m4 { + right: 33.3333333333%; + } + .row .col.push-m4 { + left: 33.3333333333%; + } + .row .col.offset-m5 { + margin-left: 41.6666666667%; + } + .row .col.pull-m5 { + right: 41.6666666667%; + } + .row .col.push-m5 { + left: 41.6666666667%; + } + .row .col.offset-m6 { + margin-left: 50%; + } + .row .col.pull-m6 { + right: 50%; + } + .row .col.push-m6 { + left: 50%; + } + .row .col.offset-m7 { + margin-left: 58.3333333333%; + } + .row .col.pull-m7 { + right: 58.3333333333%; + } + .row .col.push-m7 { + left: 58.3333333333%; + } + .row .col.offset-m8 { + margin-left: 66.6666666667%; + } + .row .col.pull-m8 { + right: 66.6666666667%; + } + .row .col.push-m8 { + left: 66.6666666667%; + } + .row .col.offset-m9 { + margin-left: 75%; + } + .row .col.pull-m9 { + right: 75%; + } + .row .col.push-m9 { + left: 75%; + } + .row .col.offset-m10 { + margin-left: 83.3333333333%; + } + .row .col.pull-m10 { + right: 83.3333333333%; + } + .row .col.push-m10 { + left: 83.3333333333%; + } + .row .col.offset-m11 { + margin-left: 91.6666666667%; + } + .row .col.pull-m11 { + right: 91.6666666667%; + } + .row .col.push-m11 { + left: 91.6666666667%; + } + .row .col.offset-m12 { + margin-left: 100%; + } + .row .col.pull-m12 { + right: 100%; + } + .row .col.push-m12 { + left: 100%; + } +} + +@media only screen and (min-width: 993px) { + .row .col.l1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.l12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.offset-l1 { + margin-left: 8.3333333333%; + } + .row .col.pull-l1 { + right: 8.3333333333%; + } + .row .col.push-l1 { + left: 8.3333333333%; + } + .row .col.offset-l2 { + margin-left: 16.6666666667%; + } + .row .col.pull-l2 { + right: 16.6666666667%; + } + .row .col.push-l2 { + left: 16.6666666667%; + } + .row .col.offset-l3 { + margin-left: 25%; + } + .row .col.pull-l3 { + right: 25%; + } + .row .col.push-l3 { + left: 25%; + } + .row .col.offset-l4 { + margin-left: 33.3333333333%; + } + .row .col.pull-l4 { + right: 33.3333333333%; + } + .row .col.push-l4 { + left: 33.3333333333%; + } + .row .col.offset-l5 { + margin-left: 41.6666666667%; + } + .row .col.pull-l5 { + right: 41.6666666667%; + } + .row .col.push-l5 { + left: 41.6666666667%; + } + .row .col.offset-l6 { + margin-left: 50%; + } + .row .col.pull-l6 { + right: 50%; + } + .row .col.push-l6 { + left: 50%; + } + .row .col.offset-l7 { + margin-left: 58.3333333333%; + } + .row .col.pull-l7 { + right: 58.3333333333%; + } + .row .col.push-l7 { + left: 58.3333333333%; + } + .row .col.offset-l8 { + margin-left: 66.6666666667%; + } + .row .col.pull-l8 { + right: 66.6666666667%; + } + .row .col.push-l8 { + left: 66.6666666667%; + } + .row .col.offset-l9 { + margin-left: 75%; + } + .row .col.pull-l9 { + right: 75%; + } + .row .col.push-l9 { + left: 75%; + } + .row .col.offset-l10 { + margin-left: 83.3333333333%; + } + .row .col.pull-l10 { + right: 83.3333333333%; + } + .row .col.push-l10 { + left: 83.3333333333%; + } + .row .col.offset-l11 { + margin-left: 91.6666666667%; + } + .row .col.pull-l11 { + right: 91.6666666667%; + } + .row .col.push-l11 { + left: 91.6666666667%; + } + .row .col.offset-l12 { + margin-left: 100%; + } + .row .col.pull-l12 { + right: 100%; + } + .row .col.push-l12 { + left: 100%; + } +} + +@media only screen and (min-width: 1201px) { + .row .col.xl1 { + width: 8.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl2 { + width: 16.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl3 { + width: 25%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl4 { + width: 33.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl5 { + width: 41.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl6 { + width: 50%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl7 { + width: 58.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl8 { + width: 66.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl9 { + width: 75%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl10 { + width: 83.3333333333%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl11 { + width: 91.6666666667%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.xl12 { + width: 100%; + margin-left: auto; + left: auto; + right: auto; + } + .row .col.offset-xl1 { + margin-left: 8.3333333333%; + } + .row .col.pull-xl1 { + right: 8.3333333333%; + } + .row .col.push-xl1 { + left: 8.3333333333%; + } + .row .col.offset-xl2 { + margin-left: 16.6666666667%; + } + .row .col.pull-xl2 { + right: 16.6666666667%; + } + .row .col.push-xl2 { + left: 16.6666666667%; + } + .row .col.offset-xl3 { + margin-left: 25%; + } + .row .col.pull-xl3 { + right: 25%; + } + .row .col.push-xl3 { + left: 25%; + } + .row .col.offset-xl4 { + margin-left: 33.3333333333%; + } + .row .col.pull-xl4 { + right: 33.3333333333%; + } + .row .col.push-xl4 { + left: 33.3333333333%; + } + .row .col.offset-xl5 { + margin-left: 41.6666666667%; + } + .row .col.pull-xl5 { + right: 41.6666666667%; + } + .row .col.push-xl5 { + left: 41.6666666667%; + } + .row .col.offset-xl6 { + margin-left: 50%; + } + .row .col.pull-xl6 { + right: 50%; + } + .row .col.push-xl6 { + left: 50%; + } + .row .col.offset-xl7 { + margin-left: 58.3333333333%; + } + .row .col.pull-xl7 { + right: 58.3333333333%; + } + .row .col.push-xl7 { + left: 58.3333333333%; + } + .row .col.offset-xl8 { + margin-left: 66.6666666667%; + } + .row .col.pull-xl8 { + right: 66.6666666667%; + } + .row .col.push-xl8 { + left: 66.6666666667%; + } + .row .col.offset-xl9 { + margin-left: 75%; + } + .row .col.pull-xl9 { + right: 75%; + } + .row .col.push-xl9 { + left: 75%; + } + .row .col.offset-xl10 { + margin-left: 83.3333333333%; + } + .row .col.pull-xl10 { + right: 83.3333333333%; + } + .row .col.push-xl10 { + left: 83.3333333333%; + } + .row .col.offset-xl11 { + margin-left: 91.6666666667%; + } + .row .col.pull-xl11 { + right: 91.6666666667%; + } + .row .col.push-xl11 { + left: 91.6666666667%; + } + .row .col.offset-xl12 { + margin-left: 100%; + } + .row .col.pull-xl12 { + right: 100%; + } + .row .col.push-xl12 { + left: 100%; + } +} + +nav { + color: #fff; + background-color: #ee6e73; + width: 100%; + height: 56px; + line-height: 56px; +} + +nav.nav-extended { + height: auto; +} + +nav.nav-extended .nav-wrapper { + min-height: 56px; + height: auto; +} + +nav.nav-extended .nav-content { + position: relative; + line-height: normal; +} + +nav a { + color: #fff; +} + +nav i, +nav [class^="mdi-"], nav [class*="mdi-"], +nav i.material-icons { + display: block; + font-size: 24px; + height: 56px; + line-height: 56px; +} + +nav .nav-wrapper { + position: relative; + height: 100%; +} + +@media only screen and (min-width: 993px) { + nav a.sidenav-trigger { + display: none; + } +} + +nav .sidenav-trigger { + float: left; + position: relative; + z-index: 1; + height: 56px; + margin: 0 18px; +} + +nav .sidenav-trigger i { + height: 56px; + line-height: 56px; +} + +nav .brand-logo { + position: absolute; + color: #fff; + display: inline-block; + font-size: 2.1rem; + padding: 0; +} + +nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +@media only screen and (max-width: 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + } + nav .brand-logo.left, nav .brand-logo.right { + padding: 0; + -webkit-transform: none; + transform: none; + } + nav .brand-logo.left { + left: 0.5rem; + } + nav .brand-logo.right { + right: 0.5rem; + left: auto; + } +} + +nav .brand-logo.right { + right: 0.5rem; + padding: 0; +} + +nav .brand-logo i, +nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"], +nav .brand-logo i.material-icons { + float: left; + margin-right: 15px; +} + +nav .nav-title { + display: inline-block; + font-size: 32px; + padding: 28px 0; +} + +nav ul { + margin: 0; +} + +nav ul li { + -webkit-transition: background-color .3s; + transition: background-color .3s; + float: left; + padding: 0; +} + +nav ul li.active { + background-color: rgba(0, 0, 0, 0.1); +} + +nav ul a { + -webkit-transition: background-color .3s; + transition: background-color .3s; + font-size: 1rem; + color: #fff; + display: block; + padding: 0 15px; + cursor: pointer; +} + +nav ul a.btn, nav ul a.btn-large, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating { + margin-top: -2px; + margin-left: 15px; + margin-right: 15px; +} + +nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons { + height: inherit; + line-height: inherit; +} + +nav ul a:hover { + background-color: rgba(0, 0, 0, 0.1); +} + +nav ul.left { + float: left; +} + +nav form { + height: 100%; +} + +nav .input-field { + margin: 0; + height: 100%; +} + +nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; +} + +nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +nav .input-field label { + top: 0; + left: 0; +} + +nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + -webkit-transition: color .3s; + transition: color .3s; +} + +nav .input-field label.active i { + color: #fff; +} + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 997; +} + +.navbar-fixed nav { + position: fixed; +} + +@media only screen and (min-width: 601px) { + nav.nav-extended .nav-wrapper { + min-height: 64px; + } + nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i { + height: 64px; + line-height: 64px; + } + .navbar-fixed { + height: 64px; + } +} + +a { + text-decoration: none; +} + +html { + line-height: 1.5; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); +} + +@media only screen and (min-width: 0) { + html { + font-size: 14px; + } +} + +@media only screen and (min-width: 992px) { + html { + font-size: 14.5px; + } +} + +@media only screen and (min-width: 1200px) { + html { + font-size: 15px; + } +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.3; +} + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; +} + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.8rem 0 1.68rem 0; +} + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 2.3733333333rem 0 1.424rem 0; +} + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.9466666667rem 0 1.168rem 0; +} + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.52rem 0 0.912rem 0; +} + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 1.0933333333rem 0 0.656rem 0; +} + +h6 { + font-size: 1.15rem; + line-height: 110%; + margin: 0.7666666667rem 0 0.46rem 0; +} + +em { + font-style: italic; +} + +strong { + font-weight: 500; +} + +small { + font-size: 75%; +} + +.light { + font-weight: 300; +} + +.thin { + font-weight: 200; +} + +@media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; + } +} + +@media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; + } +} + +@media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; + } +} + +@media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; + } +} + +@media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; + } +} + +@media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; + } +} + +@media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; + } +} + +@media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; + } +} + +@media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; + } +} + +@media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; + } +} + +@media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; + } +} + +@media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; + } +} + +@media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; + } +} + +@media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; + } +} + +@media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; + } +} + +@media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; + } +} + +@media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; + } +} + +@media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; + } +} + +@media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; + } +} + +@media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; + } +} + +@media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; + } +} + +@media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; + } +} + +.scale-transition { + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; + transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; + transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; + transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; +} + +.scale-transition.scale-out { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transition: -webkit-transform .2s !important; + transition: -webkit-transform .2s !important; + transition: transform .2s !important; + transition: transform .2s, -webkit-transform .2s !important; +} + +.scale-transition.scale-in { + -webkit-transform: scale(1); + transform: scale(1); +} + +.card-panel { + -webkit-transition: -webkit-box-shadow .25s; + transition: -webkit-box-shadow .25s; + transition: box-shadow .25s; + transition: box-shadow .25s, -webkit-box-shadow .25s; + padding: 24px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; +} + +.card { + position: relative; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + -webkit-transition: -webkit-box-shadow .25s; + transition: -webkit-box-shadow .25s; + transition: box-shadow .25s; + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; +} + +.card .card-title { + font-size: 24px; + font-weight: 300; +} + +.card .card-title.activator { + cursor: pointer; +} + +.card.small, .card.medium, .card.large { + position: relative; +} + +.card.small .card-image, .card.medium .card-image, .card.large .card-image { + max-height: 60%; + overflow: hidden; +} + +.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content { + max-height: 40%; +} + +.card.small .card-content, .card.medium .card-content, .card.large .card-content { + max-height: 100%; + overflow: hidden; +} + +.card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; +} + +.card.small { + height: 300px; +} + +.card.medium { + height: 400px; +} + +.card.large { + height: 500px; +} + +.card.horizontal { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image { + height: 100%; + max-height: none; + overflow: visible; +} + +.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img { + height: 100%; +} + +.card.horizontal .card-image { + max-width: 50%; +} + +.card.horizontal .card-image img { + border-radius: 2px 0 0 2px; + max-width: 100%; + width: auto; +} + +.card.horizontal .card-stacked { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + position: relative; +} + +.card.horizontal .card-stacked .card-content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.card.sticky-action .card-action { + z-index: 2; +} + +.card.sticky-action .card-reveal { + z-index: 1; + padding-bottom: 64px; +} + +.card .card-image { + position: relative; +} + +.card .card-image img { + display: block; + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; +} + +.card .card-image .card-title { + color: #fff; + position: absolute; + bottom: 0; + left: 0; + max-width: 100%; + padding: 24px; +} + +.card .card-content { + padding: 24px; + border-radius: 0 0 2px 2px; +} + +.card .card-content p { + margin: 0; +} + +.card .card-content .card-title { + display: block; + line-height: 32px; + margin-bottom: 8px; +} + +.card .card-content .card-title i { + line-height: 32px; +} + +.card .card-action { + background-color: inherit; + border-top: 1px solid rgba(160, 160, 160, 0.2); + position: relative; + padding: 16px 24px; +} + +.card .card-action:last-child { + border-radius: 0 0 2px 2px; +} + +.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) { + color: #ffab40; + margin-right: 24px; + -webkit-transition: color .3s ease; + transition: color .3s ease; + text-transform: uppercase; +} + +.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover { + color: #ffd8a6; +} + +.card .card-reveal { + padding: 24px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + left: 0; + top: 100%; + height: 100%; + z-index: 3; + display: none; +} + +.card .card-reveal .card-title { + cursor: pointer; + display: block; +} + +#toast-container { + display: block; + position: fixed; + z-index: 10000; +} + +@media only screen and (max-width: 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; + } +} + +@media only screen and (min-width: 601px) and (max-width: 992px) { + #toast-container { + left: 5%; + bottom: 7%; + max-width: 90%; + } +} + +@media only screen and (min-width: 993px) { + #toast-container { + top: 10%; + right: 7%; + max-width: 86%; + } +} + +.toast { + border-radius: 2px; + top: 35px; + width: auto; + margin-top: 10px; + position: relative; + max-width: 100%; + height: auto; + min-height: 48px; + line-height: 1.5em; + background-color: #323232; + padding: 10px 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + cursor: default; +} + +.toast .toast-action { + color: #eeff41; + font-weight: 500; + margin-right: -25px; + margin-left: 3rem; +} + +.toast.rounded { + border-radius: 24px; +} + +@media only screen and (max-width: 600px) { + .toast { + width: 100%; + border-radius: 0; + } +} + +.tabs { + position: relative; + overflow-x: auto; + overflow-y: hidden; + height: 48px; + width: 100%; + background-color: #fff; + margin: 0 auto; + white-space: nowrap; +} + +.tabs.tabs-transparent { + background-color: transparent; +} + +.tabs.tabs-transparent .tab a, +.tabs.tabs-transparent .tab.disabled a, +.tabs.tabs-transparent .tab.disabled a:hover { + color: rgba(255, 255, 255, 0.7); +} + +.tabs.tabs-transparent .tab a:hover, +.tabs.tabs-transparent .tab a.active { + color: #fff; +} + +.tabs.tabs-transparent .indicator { + background-color: #fff; +} + +.tabs.tabs-fixed-width { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.tabs.tabs-fixed-width .tab { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.tabs .tab { + display: inline-block; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0; + margin: 0; + text-transform: uppercase; +} + +.tabs .tab a { + font-weight: bold; + color: rgba(238, 110, 115, 0.7); + display: block; + width: 100%; + height: 100%; + padding: 0 24px; + font-size: 14px; + text-overflow: ellipsis; + overflow: hidden; + -webkit-transition: color .28s ease, background-color .28s ease; + transition: color .28s ease, background-color .28s ease; +} + +.tabs .tab a:focus, .tabs .tab a:focus.active { + background-color: rgba(246, 178, 181, 0.71); + outline: none; +} + +.tabs .tab a:hover, .tabs .tab a.active { + background-color: transparent; + color: #ee6e73; +} + +.tabs .tab.disabled a, +.tabs .tab.disabled a:hover { + color: rgba(238, 110, 115, 0.4); + cursor: default; +} + +.tabs .indicator { + position: absolute; + bottom: 0; + height: 4px; + background-color: #751100; + will-change: left, right; +} + +@media only screen and (max-width: 992px) { + .tabs { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + } + .tabs .tab { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + } + .tabs .tab a { + padding: 0 12px; + } +} + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 120%; + opacity: 0; + position: absolute; + text-align: center; + max-width: calc(100% - 4px); + overflow: hidden; + left: 0; + top: 0; + pointer-events: none; + visibility: hidden; + background-color: #323232; +} + +.backdrop { + position: absolute; + opacity: 0; + height: 7px; + width: 14px; + border-radius: 0 0 50% 50%; + background-color: #323232; + z-index: -1; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + visibility: hidden; +} + +.btn, .btn-large, .btn-small, +.btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + padding: 0 16px; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; +} + +.btn.disabled, .disabled.btn-large, .disabled.btn-small, +.btn-floating.disabled, +.btn-large.disabled, +.btn-small.disabled, +.btn-flat.disabled, +.btn:disabled, +.btn-large:disabled, +.btn-small:disabled, +.btn-floating:disabled, +.btn-large:disabled, +.btn-small:disabled, +.btn-flat:disabled, +.btn[disabled], +.btn-large[disabled], +.btn-small[disabled], +.btn-floating[disabled], +.btn-large[disabled], +.btn-small[disabled], +.btn-flat[disabled] { + pointer-events: none; + background-color: #DFDFDF !important; + -webkit-box-shadow: none; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; +} + +.btn.disabled:hover, .disabled.btn-large:hover, .disabled.btn-small:hover, +.btn-floating.disabled:hover, +.btn-large.disabled:hover, +.btn-small.disabled:hover, +.btn-flat.disabled:hover, +.btn:disabled:hover, +.btn-large:disabled:hover, +.btn-small:disabled:hover, +.btn-floating:disabled:hover, +.btn-large:disabled:hover, +.btn-small:disabled:hover, +.btn-flat:disabled:hover, +.btn[disabled]:hover, +.btn-large[disabled]:hover, +.btn-small[disabled]:hover, +.btn-floating[disabled]:hover, +.btn-large[disabled]:hover, +.btn-small[disabled]:hover, +.btn-flat[disabled]:hover { + background-color: #DFDFDF !important; + color: #9F9F9F !important; +} + +.btn, .btn-large, .btn-small, +.btn-floating, +.btn-large, +.btn-small, +.btn-flat { + font-size: 14px; + outline: 0; +} + +.btn i, .btn-large i, .btn-small i, +.btn-floating i, +.btn-large i, +.btn-small i, +.btn-flat i { + font-size: 1.3rem; + line-height: inherit; +} + +.btn:focus, .btn-large:focus, .btn-small:focus, +.btn-floating:focus { + background-color: #1d7d74; +} + +.btn, .btn-large, .btn-small { + text-decoration: none; + color: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: background-color .2s ease-out; + transition: background-color .2s ease-out; + cursor: pointer; +} + +.btn:hover, .btn-large:hover, .btn-small:hover { + background-color: #2bbbad; +} + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 40px; + height: 40px; + line-height: 40px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + -webkit-transition: background-color .3s; + transition: background-color .3s; + cursor: pointer; + vertical-align: middle; +} + +.btn-floating:hover { + background-color: #26a69a; +} + +.btn-floating:before { + border-radius: 0; +} + +.btn-floating.btn-large { + width: 56px; + height: 56px; + padding: 0; +} + +.btn-floating.btn-large.halfway-fab { + bottom: -28px; +} + +.btn-floating.btn-large i { + line-height: 56px; +} + +.btn-floating.btn-small { + width: 32.4px; + height: 32.4px; +} + +.btn-floating.btn-small.halfway-fab { + bottom: -16.2px; +} + +.btn-floating.btn-small i { + line-height: 32.4px; +} + +.btn-floating.halfway-fab { + position: absolute; + right: 24px; + bottom: -20px; +} + +.btn-floating.halfway-fab.left { + right: auto; + left: 24px; +} + +.btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 40px; +} + +button.btn-floating { + border: none; +} + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 997; +} + +.fixed-action-btn.active ul { + visibility: visible; +} + +.fixed-action-btn.direction-left, .fixed-action-btn.direction-right { + padding: 0 0 0 15px; +} + +.fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul { + text-align: right; + right: 64px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + height: 100%; + left: auto; + /*width 100% only goes to width of button container */ + width: 500px; +} + +.fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li { + display: inline-block; + margin: 7.5px 15px 0 0; +} + +.fixed-action-btn.direction-right { + padding: 0 15px 0 0; +} + +.fixed-action-btn.direction-right ul { + text-align: left; + direction: rtl; + left: 64px; + right: auto; +} + +.fixed-action-btn.direction-right ul li { + margin: 7.5px 0 0 15px; +} + +.fixed-action-btn.direction-bottom { + padding: 0 0 15px 0; +} + +.fixed-action-btn.direction-bottom ul { + top: 64px; + bottom: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -webkit-flex-direction: column-reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; +} + +.fixed-action-btn.direction-bottom ul li { + margin: 15px 0 0 0; +} + +.fixed-action-btn.toolbar { + padding: 0; + height: 56px; +} + +.fixed-action-btn.toolbar.active > a i { + opacity: 0; +} + +.fixed-action-btn.toolbar ul { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + top: 0; + bottom: 0; + z-index: 1; +} + +.fixed-action-btn.toolbar ul li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + display: inline-block; + margin: 0; + height: 100%; + -webkit-transition: none; + transition: none; +} + +.fixed-action-btn.toolbar ul li a { + display: block; + overflow: hidden; + position: relative; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; + line-height: 56px; + z-index: 1; +} + +.fixed-action-btn.toolbar ul li a i { + line-height: inherit; +} + +.fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; + visibility: hidden; +} + +.fixed-action-btn ul li { + margin-bottom: 15px; +} + +.fixed-action-btn ul a.btn-floating { + opacity: 0; +} + +.fixed-action-btn .fab-backdrop { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 40px; + height: 40px; + background-color: #26a69a; + border-radius: 50%; + -webkit-transform: scale(0); + transform: scale(0); +} + +.btn-flat { + -webkit-box-shadow: none; + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; + -webkit-transition: background-color .2s; + transition: background-color .2s; +} + +.btn-flat:focus, .btn-flat:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-flat:focus { + background-color: rgba(0, 0, 0, 0.1); +} + +.btn-flat.disabled, .btn-flat.btn-flat[disabled] { + background-color: transparent !important; + color: #b3b2b2 !important; + cursor: default; +} + +.btn-large { + height: 54px; + line-height: 54px; + font-size: 15px; + padding: 0 28px; +} + +.btn-large i { + font-size: 1.6rem; +} + +.btn-small { + height: 32.4px; + line-height: 32.4px; + font-size: 13px; +} + +.btn-small i { + font-size: 1.2rem; +} + +.btn-block { + display: block; +} + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + overflow-y: auto; + opacity: 0; + position: absolute; + left: 0; + top: 0; + z-index: 9999; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; +} + +.dropdown-content:focus { + outline: 0; +} + +.dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + min-height: 50px; + line-height: 1.5rem; + width: 100%; + text-align: left; +} + +.dropdown-content li:hover, .dropdown-content li.active { + background-color: #eee; +} + +.dropdown-content li:focus { + outline: none; +} + +.dropdown-content li.divider { + min-height: 0; + height: 1px; +} + +.dropdown-content li > a, .dropdown-content li > span { + font-size: 16px; + color: #26a69a; + display: block; + line-height: 22px; + padding: 14px 16px; +} + +.dropdown-content li > span > label { + top: 1px; + left: 0; + height: 18px; +} + +.dropdown-content li > a > i { + height: inherit; + line-height: inherit; + float: left; + margin: 0 24px 0 0; + width: 24px; +} + +body.keyboard-focused .dropdown-content li:focus { + background-color: #dadada; +} + +.input-field.col .dropdown-content [type="checkbox"] + label { + top: 1px; + left: 0; + height: 18px; + -webkit-transform: none; + transform: none; +} + +.dropdown-trigger { + cursor: pointer; +} + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + -webkit-transition: .3s ease-out; + transition: .3s ease-out; +} + +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: opacity, -webkit-transform; + transition-property: opacity, -webkit-transform; + transition-property: transform, opacity; + transition-property: transform, opacity, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); + pointer-events: none; +} + +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); +} + +.waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); +} + +.waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); +} + +.waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); +} + +.waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); +} + +.waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); +} + +.waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); +} + +.waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] { + border: 0; + font-style: normal; + font-size: inherit; + text-transform: inherit; + background: none; +} + +.waves-effect img { + position: relative; + z-index: -1; +} + +.waves-notransition { + -webkit-transition: none !important; + transition: none !important; +} + +.waves-circle { + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); +} + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} + +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} + +.waves-block { + display: block; +} + +/* Firefox Bug: link not triggered */ +.waves-effect .waves-ripple { + z-index: -1; +} + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; +} + +.modal:focus { + outline: none; +} + +@media only screen and (max-width: 992px) { + .modal { + width: 80%; + } +} + +.modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; +} + +.modal .modal-content { + padding: 24px; +} + +.modal .modal-close { + cursor: pointer; +} + +.modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; + text-align: right; +} + +.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-small, .modal .modal-footer .btn-flat { + margin: 6px 0; +} + +.modal-overlay { + position: fixed; + z-index: 999; + top: -25%; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; +} + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; +} + +.modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; +} + +.modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; +} + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; +} + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; +} + +.collapsible-header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + padding: 1rem; + background-color: #fff; + border-bottom: 1px solid #ddd; +} + +.collapsible-header:focus { + outline: 0; +} + +.collapsible-header i { + width: 2rem; + font-size: 1.6rem; + display: inline-block; + text-align: center; + margin-right: 1rem; +} + +.keyboard-focused .collapsible-header:focus { + background-color: #eee; +} + +.collapsible-body { + display: none; + border-bottom: 1px solid #ddd; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 2rem; +} + +.sidenav .collapsible, +.sidenav.fixed .collapsible { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.sidenav .collapsible li, +.sidenav.fixed .collapsible li { + padding: 0; +} + +.sidenav .collapsible-header, +.sidenav.fixed .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + padding: 0 16px; +} + +.sidenav .collapsible-header:hover, +.sidenav.fixed .collapsible-header:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.sidenav .collapsible-header i, +.sidenav.fixed .collapsible-header i { + line-height: inherit; +} + +.sidenav .collapsible-body, +.sidenav.fixed .collapsible-body { + border: 0; + background-color: #fff; +} + +.sidenav .collapsible-body li a, +.sidenav.fixed .collapsible-body li a { + padding: 0 23.5px 0 31px; +} + +.collapsible.popout { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.collapsible.popout > li { + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + -webkit-transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +.collapsible.popout > li.active { + -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; +} + +.chip { + display: inline-block; + height: 32px; + font-size: 13px; + font-weight: 500; + color: rgba(0, 0, 0, 0.6); + line-height: 32px; + padding: 0 12px; + border-radius: 16px; + background-color: #e4e4e4; + margin-bottom: 5px; + margin-right: 5px; +} + +.chip:focus { + outline: none; + background-color: #26a69a; + color: #fff; +} + +.chip > img { + float: left; + margin: 0 8px 0 -12px; + height: 32px; + width: 32px; + border-radius: 50%; +} + +.chip .close { + cursor: pointer; + float: right; + font-size: 16px; + line-height: 32px; + padding-left: 8px; +} + +.chips { + border: none; + border-bottom: 1px solid #9e9e9e; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0 0 8px 0; + min-height: 45px; + outline: none; + -webkit-transition: all .3s; + transition: all .3s; +} + +.chips.focus { + border-bottom: 1px solid #26a69a; + -webkit-box-shadow: 0 1px 0 0 #26a69a; + box-shadow: 0 1px 0 0 #26a69a; +} + +.chips:hover { + cursor: text; +} + +.chips .input { + background: none; + border: 0; + color: rgba(0, 0, 0, 0.6); + display: inline-block; + font-size: 16px; + height: 3rem; + line-height: 32px; + outline: 0; + margin: 0; + padding: 0 !important; + width: 120px !important; +} + +.chips .input:focus { + border: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.chips .autocomplete-content { + margin-top: 0; + margin-bottom: 0; +} + +.prefix ~ .chips { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.chips:empty ~ label { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + transform: translateY(-140%); +} + +.materialboxed { + display: block; + cursor: -webkit-zoom-in; + cursor: zoom-in; + position: relative; + -webkit-transition: opacity .4s; + transition: opacity .4s; + -webkit-backface-visibility: hidden; +} + +.materialboxed:hover:not(.active) { + opacity: .8; +} + +.materialboxed.active { + cursor: -webkit-zoom-out; + cursor: zoom-out; +} + +#materialbox-overlay { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #292929; + z-index: 1000; + will-change: opacity; +} + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + left: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; +} + +select:focus { + outline: 1px solid #c9f3ef; +} + +button:focus { + outline: none; + background-color: #2ab7a9; +} + +label { + font-size: 0.8rem; + color: #9e9e9e; +} + +/* Text Inputs + Textarea + ========================================================================== */ +/* Style Placeholders */ +::-webkit-input-placeholder { + color: #d1d1d1; +} +::-moz-placeholder { + color: #d1d1d1; +} +:-ms-input-placeholder { + color: #d1d1d1; +} +::-ms-input-placeholder { + color: #d1d1d1; +} +::placeholder { + color: #d1d1d1; +} + +/* Text inputs */ +input:not([type]), +input[type=text]:not(.browser-default), +input[type=password]:not(.browser-default), +input[type=email]:not(.browser-default), +input[type=url]:not(.browser-default), +input[type=time]:not(.browser-default), +input[type=date]:not(.browser-default), +input[type=datetime]:not(.browser-default), +input[type=datetime-local]:not(.browser-default), +input[type=tel]:not(.browser-default), +input[type=number]:not(.browser-default), +input[type=search]:not(.browser-default), +textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 16px; + margin: 0 0 8px 0; + padding: 0; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: content-box; + box-sizing: content-box; + -webkit-transition: border .3s, -webkit-box-shadow .3s; + transition: border .3s, -webkit-box-shadow .3s; + transition: box-shadow .3s, border .3s; + transition: box-shadow .3s, border .3s, -webkit-box-shadow .3s; +} + +input:not([type]):disabled, input:not([type])[readonly="readonly"], +input[type=text]:not(.browser-default):disabled, +input[type=text]:not(.browser-default)[readonly="readonly"], +input[type=password]:not(.browser-default):disabled, +input[type=password]:not(.browser-default)[readonly="readonly"], +input[type=email]:not(.browser-default):disabled, +input[type=email]:not(.browser-default)[readonly="readonly"], +input[type=url]:not(.browser-default):disabled, +input[type=url]:not(.browser-default)[readonly="readonly"], +input[type=time]:not(.browser-default):disabled, +input[type=time]:not(.browser-default)[readonly="readonly"], +input[type=date]:not(.browser-default):disabled, +input[type=date]:not(.browser-default)[readonly="readonly"], +input[type=datetime]:not(.browser-default):disabled, +input[type=datetime]:not(.browser-default)[readonly="readonly"], +input[type=datetime-local]:not(.browser-default):disabled, +input[type=datetime-local]:not(.browser-default)[readonly="readonly"], +input[type=tel]:not(.browser-default):disabled, +input[type=tel]:not(.browser-default)[readonly="readonly"], +input[type=number]:not(.browser-default):disabled, +input[type=number]:not(.browser-default)[readonly="readonly"], +input[type=search]:not(.browser-default):disabled, +input[type=search]:not(.browser-default)[readonly="readonly"], +textarea.materialize-textarea:disabled, +textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.42); + border-bottom: 1px dotted rgba(0, 0, 0, 0.42); +} + +input:not([type]):disabled + label, +input:not([type])[readonly="readonly"] + label, +input[type=text]:not(.browser-default):disabled + label, +input[type=text]:not(.browser-default)[readonly="readonly"] + label, +input[type=password]:not(.browser-default):disabled + label, +input[type=password]:not(.browser-default)[readonly="readonly"] + label, +input[type=email]:not(.browser-default):disabled + label, +input[type=email]:not(.browser-default)[readonly="readonly"] + label, +input[type=url]:not(.browser-default):disabled + label, +input[type=url]:not(.browser-default)[readonly="readonly"] + label, +input[type=time]:not(.browser-default):disabled + label, +input[type=time]:not(.browser-default)[readonly="readonly"] + label, +input[type=date]:not(.browser-default):disabled + label, +input[type=date]:not(.browser-default)[readonly="readonly"] + label, +input[type=datetime]:not(.browser-default):disabled + label, +input[type=datetime]:not(.browser-default)[readonly="readonly"] + label, +input[type=datetime-local]:not(.browser-default):disabled + label, +input[type=datetime-local]:not(.browser-default)[readonly="readonly"] + label, +input[type=tel]:not(.browser-default):disabled + label, +input[type=tel]:not(.browser-default)[readonly="readonly"] + label, +input[type=number]:not(.browser-default):disabled + label, +input[type=number]:not(.browser-default)[readonly="readonly"] + label, +input[type=search]:not(.browser-default):disabled + label, +input[type=search]:not(.browser-default)[readonly="readonly"] + label, +textarea.materialize-textarea:disabled + label, +textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.42); +} + +input:not([type]):focus:not([readonly]), +input[type=text]:not(.browser-default):focus:not([readonly]), +input[type=password]:not(.browser-default):focus:not([readonly]), +input[type=email]:not(.browser-default):focus:not([readonly]), +input[type=url]:not(.browser-default):focus:not([readonly]), +input[type=time]:not(.browser-default):focus:not([readonly]), +input[type=date]:not(.browser-default):focus:not([readonly]), +input[type=datetime]:not(.browser-default):focus:not([readonly]), +input[type=datetime-local]:not(.browser-default):focus:not([readonly]), +input[type=tel]:not(.browser-default):focus:not([readonly]), +input[type=number]:not(.browser-default):focus:not([readonly]), +input[type=search]:not(.browser-default):focus:not([readonly]), +textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + -webkit-box-shadow: 0 1px 0 0 #26a69a; + box-shadow: 0 1px 0 0 #26a69a; +} + +input:not([type]):focus:not([readonly]) + label, +input[type=text]:not(.browser-default):focus:not([readonly]) + label, +input[type=password]:not(.browser-default):focus:not([readonly]) + label, +input[type=email]:not(.browser-default):focus:not([readonly]) + label, +input[type=url]:not(.browser-default):focus:not([readonly]) + label, +input[type=time]:not(.browser-default):focus:not([readonly]) + label, +input[type=date]:not(.browser-default):focus:not([readonly]) + label, +input[type=datetime]:not(.browser-default):focus:not([readonly]) + label, +input[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label, +input[type=tel]:not(.browser-default):focus:not([readonly]) + label, +input[type=number]:not(.browser-default):focus:not([readonly]) + label, +input[type=search]:not(.browser-default):focus:not([readonly]) + label, +textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; +} + +input:not([type]):focus.valid ~ label, +input[type=text]:not(.browser-default):focus.valid ~ label, +input[type=password]:not(.browser-default):focus.valid ~ label, +input[type=email]:not(.browser-default):focus.valid ~ label, +input[type=url]:not(.browser-default):focus.valid ~ label, +input[type=time]:not(.browser-default):focus.valid ~ label, +input[type=date]:not(.browser-default):focus.valid ~ label, +input[type=datetime]:not(.browser-default):focus.valid ~ label, +input[type=datetime-local]:not(.browser-default):focus.valid ~ label, +input[type=tel]:not(.browser-default):focus.valid ~ label, +input[type=number]:not(.browser-default):focus.valid ~ label, +input[type=search]:not(.browser-default):focus.valid ~ label, +textarea.materialize-textarea:focus.valid ~ label { + color: #4CAF50; +} + +input:not([type]):focus.invalid ~ label, +input[type=text]:not(.browser-default):focus.invalid ~ label, +input[type=password]:not(.browser-default):focus.invalid ~ label, +input[type=email]:not(.browser-default):focus.invalid ~ label, +input[type=url]:not(.browser-default):focus.invalid ~ label, +input[type=time]:not(.browser-default):focus.invalid ~ label, +input[type=date]:not(.browser-default):focus.invalid ~ label, +input[type=datetime]:not(.browser-default):focus.invalid ~ label, +input[type=datetime-local]:not(.browser-default):focus.invalid ~ label, +input[type=tel]:not(.browser-default):focus.invalid ~ label, +input[type=number]:not(.browser-default):focus.invalid ~ label, +input[type=search]:not(.browser-default):focus.invalid ~ label, +textarea.materialize-textarea:focus.invalid ~ label { + color: #F44336; +} + +input:not([type]).validate + label, +input[type=text]:not(.browser-default).validate + label, +input[type=password]:not(.browser-default).validate + label, +input[type=email]:not(.browser-default).validate + label, +input[type=url]:not(.browser-default).validate + label, +input[type=time]:not(.browser-default).validate + label, +input[type=date]:not(.browser-default).validate + label, +input[type=datetime]:not(.browser-default).validate + label, +input[type=datetime-local]:not(.browser-default).validate + label, +input[type=tel]:not(.browser-default).validate + label, +input[type=number]:not(.browser-default).validate + label, +input[type=search]:not(.browser-default).validate + label, +textarea.materialize-textarea.validate + label { + width: 100%; +} + +/* Validation Sass Placeholders */ +input.valid:not([type]), input.valid:not([type]):focus, +input.valid[type=text]:not(.browser-default), +input.valid[type=text]:not(.browser-default):focus, +input.valid[type=password]:not(.browser-default), +input.valid[type=password]:not(.browser-default):focus, +input.valid[type=email]:not(.browser-default), +input.valid[type=email]:not(.browser-default):focus, +input.valid[type=url]:not(.browser-default), +input.valid[type=url]:not(.browser-default):focus, +input.valid[type=time]:not(.browser-default), +input.valid[type=time]:not(.browser-default):focus, +input.valid[type=date]:not(.browser-default), +input.valid[type=date]:not(.browser-default):focus, +input.valid[type=datetime]:not(.browser-default), +input.valid[type=datetime]:not(.browser-default):focus, +input.valid[type=datetime-local]:not(.browser-default), +input.valid[type=datetime-local]:not(.browser-default):focus, +input.valid[type=tel]:not(.browser-default), +input.valid[type=tel]:not(.browser-default):focus, +input.valid[type=number]:not(.browser-default), +input.valid[type=number]:not(.browser-default):focus, +input.valid[type=search]:not(.browser-default), +input.valid[type=search]:not(.browser-default):focus, +textarea.materialize-textarea.valid, +textarea.materialize-textarea.valid:focus, .select-wrapper.valid > input.select-dropdown { + border-bottom: 1px solid #4CAF50; + -webkit-box-shadow: 0 1px 0 0 #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; +} + +input.invalid:not([type]), input.invalid:not([type]):focus, +input.invalid[type=text]:not(.browser-default), +input.invalid[type=text]:not(.browser-default):focus, +input.invalid[type=password]:not(.browser-default), +input.invalid[type=password]:not(.browser-default):focus, +input.invalid[type=email]:not(.browser-default), +input.invalid[type=email]:not(.browser-default):focus, +input.invalid[type=url]:not(.browser-default), +input.invalid[type=url]:not(.browser-default):focus, +input.invalid[type=time]:not(.browser-default), +input.invalid[type=time]:not(.browser-default):focus, +input.invalid[type=date]:not(.browser-default), +input.invalid[type=date]:not(.browser-default):focus, +input.invalid[type=datetime]:not(.browser-default), +input.invalid[type=datetime]:not(.browser-default):focus, +input.invalid[type=datetime-local]:not(.browser-default), +input.invalid[type=datetime-local]:not(.browser-default):focus, +input.invalid[type=tel]:not(.browser-default), +input.invalid[type=tel]:not(.browser-default):focus, +input.invalid[type=number]:not(.browser-default), +input.invalid[type=number]:not(.browser-default):focus, +input.invalid[type=search]:not(.browser-default), +input.invalid[type=search]:not(.browser-default):focus, +textarea.materialize-textarea.invalid, +textarea.materialize-textarea.invalid:focus, .select-wrapper.invalid > input.select-dropdown, +.select-wrapper.invalid > input.select-dropdown:focus { + border-bottom: 1px solid #F44336; + -webkit-box-shadow: 0 1px 0 0 #F44336; + box-shadow: 0 1px 0 0 #F44336; +} + +input:not([type]).valid ~ .helper-text[data-success], +input:not([type]):focus.valid ~ .helper-text[data-success], +input:not([type]).invalid ~ .helper-text[data-error], +input:not([type]):focus.invalid ~ .helper-text[data-error], +input[type=text]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=password]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=email]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=url]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=time]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=date]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=number]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +input[type=search]:not(.browser-default).valid ~ .helper-text[data-success], +input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success], +input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error], +input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error], +textarea.materialize-textarea.valid ~ .helper-text[data-success], +textarea.materialize-textarea:focus.valid ~ .helper-text[data-success], +textarea.materialize-textarea.invalid ~ .helper-text[data-error], +textarea.materialize-textarea:focus.invalid ~ .helper-text[data-error], .select-wrapper.valid .helper-text[data-success], +.select-wrapper.invalid ~ .helper-text[data-error] { + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; +} + +input:not([type]).valid ~ .helper-text:after, +input:not([type]):focus.valid ~ .helper-text:after, +input[type=text]:not(.browser-default).valid ~ .helper-text:after, +input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=password]:not(.browser-default).valid ~ .helper-text:after, +input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=email]:not(.browser-default).valid ~ .helper-text:after, +input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=url]:not(.browser-default).valid ~ .helper-text:after, +input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=time]:not(.browser-default).valid ~ .helper-text:after, +input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=date]:not(.browser-default).valid ~ .helper-text:after, +input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=datetime]:not(.browser-default).valid ~ .helper-text:after, +input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after, +input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=tel]:not(.browser-default).valid ~ .helper-text:after, +input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=number]:not(.browser-default).valid ~ .helper-text:after, +input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after, +input[type=search]:not(.browser-default).valid ~ .helper-text:after, +input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after, +textarea.materialize-textarea.valid ~ .helper-text:after, +textarea.materialize-textarea:focus.valid ~ .helper-text:after, .select-wrapper.valid ~ .helper-text:after { + content: attr(data-success); + color: #4CAF50; +} + +input:not([type]).invalid ~ .helper-text:after, +input:not([type]):focus.invalid ~ .helper-text:after, +input[type=text]:not(.browser-default).invalid ~ .helper-text:after, +input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=password]:not(.browser-default).invalid ~ .helper-text:after, +input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=email]:not(.browser-default).invalid ~ .helper-text:after, +input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=url]:not(.browser-default).invalid ~ .helper-text:after, +input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=time]:not(.browser-default).invalid ~ .helper-text:after, +input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=date]:not(.browser-default).invalid ~ .helper-text:after, +input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after, +input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after, +input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=tel]:not(.browser-default).invalid ~ .helper-text:after, +input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=number]:not(.browser-default).invalid ~ .helper-text:after, +input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after, +input[type=search]:not(.browser-default).invalid ~ .helper-text:after, +input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after, +textarea.materialize-textarea.invalid ~ .helper-text:after, +textarea.materialize-textarea:focus.invalid ~ .helper-text:after, .select-wrapper.invalid ~ .helper-text:after { + content: attr(data-error); + color: #F44336; +} + +input:not([type]) + label:after, +input[type=text]:not(.browser-default) + label:after, +input[type=password]:not(.browser-default) + label:after, +input[type=email]:not(.browser-default) + label:after, +input[type=url]:not(.browser-default) + label:after, +input[type=time]:not(.browser-default) + label:after, +input[type=date]:not(.browser-default) + label:after, +input[type=datetime]:not(.browser-default) + label:after, +input[type=datetime-local]:not(.browser-default) + label:after, +input[type=tel]:not(.browser-default) + label:after, +input[type=number]:not(.browser-default) + label:after, +input[type=search]:not(.browser-default) + label:after, +textarea.materialize-textarea + label:after, .select-wrapper + label:after { + display: block; + content: ""; + position: absolute; + top: 100%; + left: 0; + opacity: 0; + -webkit-transition: .2s opacity ease-out, .2s color ease-out; + transition: .2s opacity ease-out, .2s color ease-out; +} + +.input-field { + position: relative; + margin-top: 1rem; + margin-bottom: 1rem; +} + +.input-field.inline { + display: inline-block; + vertical-align: middle; + margin-left: 5px; +} + +.input-field.inline input, +.input-field.inline .select-dropdown { + margin-bottom: 1rem; +} + +.input-field.col label { + left: 0.75rem; +} + +.input-field.col .prefix ~ label, +.input-field.col .prefix ~ .validate ~ label { + width: calc(100% - 3rem - 1.5rem); +} + +.input-field > label { + color: #9e9e9e; + position: absolute; + top: 0; + left: 0; + font-size: 1rem; + cursor: text; + -webkit-transition: color .2s ease-out, -webkit-transform .2s ease-out; + transition: color .2s ease-out, -webkit-transform .2s ease-out; + transition: transform .2s ease-out, color .2s ease-out; + transition: transform .2s ease-out, color .2s ease-out, -webkit-transform .2s ease-out; + -webkit-transform-origin: 0% 100%; + transform-origin: 0% 100%; + text-align: initial; + -webkit-transform: translateY(12px); + transform: translateY(12px); +} + +.input-field > label:not(.label-icon).active { + -webkit-transform: translateY(-14px) scale(0.8); + transform: translateY(-14px) scale(0.8); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; +} + +.input-field > input[type]:-webkit-autofill:not(.browser-default):not([type="search"]) + label, +.input-field > input[type=date]:not(.browser-default) + label, +.input-field > input[type=time]:not(.browser-default) + label { + -webkit-transform: translateY(-14px) scale(0.8); + transform: translateY(-14px) scale(0.8); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; +} + +.input-field .helper-text { + position: relative; + min-height: 18px; + display: block; + font-size: 12px; + color: rgba(0, 0, 0, 0.54); +} + +.input-field .helper-text::after { + opacity: 1; + position: absolute; + top: 0; + left: 0; +} + +.input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + -webkit-transition: color .2s; + transition: color .2s; + top: 0.5rem; +} + +.input-field .prefix.active { + color: #26a69a; +} + +.input-field .prefix ~ input, +.input-field .prefix ~ textarea, +.input-field .prefix ~ label, +.input-field .prefix ~ .validate ~ label, +.input-field .prefix ~ .helper-text, +.input-field .prefix ~ .autocomplete-content { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.input-field .prefix ~ label { + margin-left: 3rem; +} + +@media only screen and (max-width: 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); + } +} + +@media only screen and (max-width: 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); + } +} + +/* Search Field */ +.input-field input[type=search] { + display: block; + line-height: inherit; + -webkit-transition: .3s background-color; + transition: .3s background-color; +} + +.nav-wrapper .input-field input[type=search] { + height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); + border: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.input-field input[type=search]:focus:not(.browser-default) { + background-color: #fff; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + color: #444; +} + +.input-field input[type=search]:focus:not(.browser-default) + label i, +.input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close, +.input-field input[type=search]:focus:not(.browser-default) ~ .material-icons { + color: #444; +} + +.input-field input[type=search] + .label-icon { + -webkit-transform: none; + transform: none; + left: 1rem; +} + +.input-field input[type=search] ~ .mdi-navigation-close, +.input-field input[type=search] ~ .material-icons { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + -webkit-transition: .3s color; + transition: .3s color; +} + +/* Textarea */ +textarea { + width: 100%; + height: 3rem; + background-color: transparent; +} + +textarea.materialize-textarea { + line-height: normal; + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: .8rem 0 .8rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.hiddendiv { + visibility: hidden; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; + /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; + /* prevents text jump on Enter keypress */ + position: absolute; + top: 0; + z-index: -1; +} + +/* Autocomplete */ +.autocomplete-content li .highlight { + color: #444; +} + +.autocomplete-content li img { + height: 40px; + width: 40px; + margin: 5px 15px; +} + +/* Character Counter */ +.character-counter { + min-height: 18px; +} + +/* Radio Buttons + ========================================================================== */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + opacity: 0; + pointer-events: none; +} + +[type="radio"]:not(:checked) + span, +[type="radio"]:checked + span { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-transition: .28s ease; + transition: .28s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +[type="radio"] + span:before, +[type="radio"] + span:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + -webkit-transition: .28s ease; + transition: .28s ease; +} + +/* Unchecked styles */ +[type="radio"]:not(:checked) + span:before, +[type="radio"]:not(:checked) + span:after, +[type="radio"]:checked + span:before, +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:before, +[type="radio"].with-gap:checked + span:after { + border-radius: 50%; +} + +[type="radio"]:not(:checked) + span:before, +[type="radio"]:not(:checked) + span:after { + border: 2px solid #5a5a5a; +} + +[type="radio"]:not(:checked) + span:after { + -webkit-transform: scale(0); + transform: scale(0); +} + +/* Checked styles */ +[type="radio"]:checked + span:before { + border: 2px solid transparent; +} + +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:before, +[type="radio"].with-gap:checked + span:after { + border: 2px solid #26a69a; +} + +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:after { + background-color: #26a69a; +} + +[type="radio"]:checked + span:after { + -webkit-transform: scale(1.02); + transform: scale(1.02); +} + +/* Radio With gap */ +[type="radio"].with-gap:checked + span:after { + -webkit-transform: scale(0.5); + transform: scale(0.5); +} + +/* Focused styles */ +[type="radio"].tabbed:focus + span:before { + -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); +} + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + span:before { + border: 2px solid rgba(0, 0, 0, 0.42); +} + +[type="radio"].with-gap:disabled:checked + span:after { + border: none; + background-color: rgba(0, 0, 0, 0.42); +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + span:before, +[type="radio"]:disabled:checked + span:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.42); +} + +[type="radio"]:disabled + span { + color: rgba(0, 0, 0, 0.42); +} + +[type="radio"]:disabled:not(:checked) + span:before { + border-color: rgba(0, 0, 0, 0.42); +} + +[type="radio"]:disabled:checked + span:after { + background-color: rgba(0, 0, 0, 0.42); + border-color: #949494; +} + +/* Checkboxes + ========================================================================== */ +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + opacity: 0; + pointer-events: none; +} + +[type="checkbox"] { + /* checkbox aspect */ +} + +[type="checkbox"] + span:not(.lever) { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +[type="checkbox"] + span:not(.lever):before, +[type="checkbox"]:not(.filled-in) + span:not(.lever):after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 3px; + -webkit-transition: .2s; + transition: .2s; +} + +[type="checkbox"]:not(.filled-in) + span:not(.lever):after { + border: 0; + -webkit-transform: scale(0); + transform: scale(0); +} + +[type="checkbox"]:not(:checked):disabled + span:not(.lever):before { + border: none; + background-color: rgba(0, 0, 0, 0.42); +} + +[type="checkbox"].tabbed:focus + span:not(.lever):after { + -webkit-transform: scale(1); + transform: scale(1); + border: 0; + border-radius: 50%; + -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.1); +} + +[type="checkbox"]:checked + span:not(.lever):before { + top: -4px; + left: -5px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"]:checked:disabled + span:before { + border-right: 2px solid rgba(0, 0, 0, 0.42); + border-bottom: 2px solid rgba(0, 0, 0, 0.42); +} + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + span:not(.lever):before { + top: -11px; + left: -12px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"]:indeterminate:disabled + span:not(.lever):before { + border-right: 2px solid rgba(0, 0, 0, 0.42); + background-color: transparent; +} + +[type="checkbox"].filled-in + span:not(.lever):after { + border-radius: 2px; +} + +[type="checkbox"].filled-in + span:not(.lever):before, +[type="checkbox"].filled-in + span:not(.lever):after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + -webkit-transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; +} + +[type="checkbox"].filled-in:not(:checked) + span:not(.lever):before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"].filled-in:not(:checked) + span:not(.lever):after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; +} + +[type="checkbox"].filled-in:checked + span:not(.lever):before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +[type="checkbox"].filled-in:checked + span:not(.lever):after { + top: 0; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; +} + +[type="checkbox"].filled-in.tabbed:focus + span:not(.lever):after { + border-radius: 2px; + border-color: #5a5a5a; + background-color: rgba(0, 0, 0, 0.1); +} + +[type="checkbox"].filled-in.tabbed:checked:focus + span:not(.lever):after { + border-radius: 2px; + background-color: #26a69a; + border-color: #26a69a; +} + +[type="checkbox"].filled-in:disabled:not(:checked) + span:not(.lever):before { + background-color: transparent; + border: 2px solid transparent; +} + +[type="checkbox"].filled-in:disabled:not(:checked) + span:not(.lever):after { + border-color: transparent; + background-color: #949494; +} + +[type="checkbox"].filled-in:disabled:checked + span:not(.lever):before { + background-color: transparent; +} + +[type="checkbox"].filled-in:disabled:checked + span:not(.lever):after { + background-color: #949494; + border-color: #949494; +} + +/* Switch + ========================================================================== */ +.switch, +.switch * { + -webkit-tap-highlight-color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.switch label { + cursor: pointer; +} + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; +} + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; +} + +.switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after { + left: 18px; +} + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; +} + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 36px; + height: 14px; + background-color: rgba(0, 0, 0, 0.38); + border-radius: 15px; + margin-right: 10px; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; +} + +.switch label .lever:before, .switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 20px; + height: 20px; + border-radius: 50%; + left: 0; + top: -3px; + -webkit-transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; + transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease; +} + +.switch label .lever:before { + background-color: rgba(38, 166, 154, 0.15); +} + +.switch label .lever:after { + background-color: #F1F1F1; + -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); +} + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before, +input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before { + -webkit-transform: scale(2.4); + transform: scale(2.4); + background-color: rgba(38, 166, 154, 0.15); +} + +input[type=checkbox]:not(:disabled) ~ .lever:active:before, +input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before { + -webkit-transform: scale(2.4); + transform: scale(2.4); + background-color: rgba(0, 0, 0, 0.08); +} + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; + background-color: rgba(0, 0, 0, 0.12); +} + +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #949494; +} + +/* Select Field + ========================================================================== */ +select { + display: none; +} + +select.browser-default { + display: block; +} + +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; +} + +.select-label { + position: absolute; +} + +.select-wrapper { + position: relative; +} + +.select-wrapper.valid + label, +.select-wrapper.invalid + label { + width: 100%; + pointer-events: none; +} + +.select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 16px; + margin: 0 0 8px 0; + padding: 0; + display: block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + z-index: 1; +} + +.select-wrapper input.select-dropdown:focus { + border-bottom: 1px solid #26a69a; +} + +.select-wrapper .caret { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto 0; + z-index: 0; + fill: rgba(0, 0, 0, 0.87); +} + +.select-wrapper + label { + position: absolute; + top: -26px; + font-size: 0.8rem; +} + +select:disabled { + color: rgba(0, 0, 0, 0.42); +} + +.select-wrapper.disabled + label { + color: rgba(0, 0, 0, 0.42); +} + +.select-wrapper.disabled .caret { + fill: rgba(0, 0, 0, 0.42); +} + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.42); + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); +} + +.select-dropdown li.disabled, +.select-dropdown li.disabled > span, +.select-dropdown li.optgroup { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; +} + +body.keyboard-focused .select-dropdown.dropdown-content li:focus { + background-color: rgba(0, 0, 0, 0.08); +} + +.select-dropdown.dropdown-content li:hover { + background-color: rgba(0, 0, 0, 0.08); +} + +.select-dropdown.dropdown-content li.selected { + background-color: rgba(0, 0, 0, 0.03); +} + +.prefix ~ .select-wrapper { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.prefix ~ label { + margin-left: 3rem; +} + +.select-dropdown li img { + height: 40px; + width: 40px; + margin: 5px 15px; + float: right; +} + +.select-dropdown li.optgroup { + border-top: 1px solid #eee; +} + +.select-dropdown li.optgroup.selected > span { + color: rgba(0, 0, 0, 0.7); +} + +.select-dropdown li.optgroup > span { + color: rgba(0, 0, 0, 0.4); +} + +.select-dropdown li.optgroup ~ li.optgroup-option { + padding-left: 1rem; +} + +/* File Input + ========================================================================== */ +.file-field { + position: relative; +} + +.file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; +} + +.file-field input.file-path { + width: 100%; +} + +.file-field .btn, .file-field .btn-large, .file-field .btn-small { + float: left; + height: 3rem; + line-height: 3rem; +} + +.file-field span { + cursor: pointer; +} + +.file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); +} + +.file-field input[type=file]::-webkit-file-upload-button { + display: none; +} + +/* Range + ========================================================================== */ +.range-field { + position: relative; +} + +input[type=range], +input[type=range] + .thumb { + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0; + padding: 0; +} + +input[type=range]:focus { + outline: none; +} + +input[type=range] + .thumb { + position: absolute; + top: 10px; + left: 0; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: #26a69a; + margin-left: 7px; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +input[type=range] + .thumb .value { + display: block; + width: 30px; + text-align: center; + color: #26a69a; + font-size: 0; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +input[type=range] + .thumb.active { + border-radius: 50% 50% 50% 0; +} + +input[type=range] + .thumb.active .value { + color: #fff; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; +} + +input[type=range] { + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-webkit-slider-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + -webkit-transition: -webkit-box-shadow .3s; + transition: -webkit-box-shadow .3s; + transition: box-shadow .3s; + transition: box-shadow .3s, -webkit-box-shadow .3s; + -webkit-appearance: none; + background-color: #26a69a; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + margin: -5px 0 0 0; +} + +.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb { + -webkit-box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); + box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); +} + +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-moz-focus-inner { + border: 0; +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + -webkit-transition: -webkit-box-shadow .3s; + transition: -webkit-box-shadow .3s; + transition: box-shadow .3s; + transition: box-shadow .3s, -webkit-box-shadow .3s; + margin-top: -5px; +} + +input[type=range]:-moz-focusring { + outline: 1px solid #fff; + outline-offset: -1px; +} + +.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb { + box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); +} + +input[type=range]::-ms-track { + height: 3px; + background: transparent; + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; +} + +input[type=range]::-ms-fill-lower { + background: #777; +} + +input[type=range]::-ms-fill-upper { + background: #ddd; +} + +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + -webkit-transition: -webkit-box-shadow .3s; + transition: -webkit-box-shadow .3s; + transition: box-shadow .3s; + transition: box-shadow .3s, -webkit-box-shadow .3s; +} + +.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb { + box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); +} + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; +} + +.table-of-contents li { + padding: 2px 0; +} + +.table-of-contents a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 16px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; +} + +.table-of-contents a:hover { + color: #a8a8a8; + padding-left: 15px; + border-left: 1px solid #ee6e73; +} + +.table-of-contents a.active { + font-weight: 500; + padding-left: 14px; + border-left: 2px solid #ee6e73; +} + +.sidenav { + position: fixed; + width: 300px; + left: 0; + top: 0; + margin: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + overflow-y: auto; + will-change: transform; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translateX(-105%); + transform: translateX(-105%); +} + +.sidenav.right-aligned { + right: 0; + -webkit-transform: translateX(105%); + transform: translateX(105%); + left: auto; + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.sidenav .collapsible { + margin: 0; +} + +.sidenav li { + float: none; + line-height: 48px; +} + +.sidenav li.active { + background-color: rgba(0, 0, 0, 0.05); +} + +.sidenav li > a { + color: rgba(0, 0, 0, 0.87); + display: block; + font-size: 14px; + font-weight: 500; + height: 48px; + line-height: 48px; + padding: 0 32px; +} + +.sidenav li > a:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.sidenav li > a.btn, .sidenav li > a.btn-large, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating { + margin: 10px 15px; +} + +.sidenav li > a.btn, .sidenav li > a.btn-large, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating { + color: #fff; +} + +.sidenav li > a.btn-flat { + color: #343434; +} + +.sidenav li > a.btn:hover, .sidenav li > a.btn-large:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover { + background-color: #2bbbad; +} + +.sidenav li > a.btn-floating:hover { + background-color: #26a69a; +} + +.sidenav li > a > i, +.sidenav li > a > [class^="mdi-"], .sidenav li > a li > a > [class*="mdi-"], +.sidenav li > a > i.material-icons { + float: left; + height: 48px; + line-height: 48px; + margin: 0 32px 0 0; + width: 24px; + color: rgba(0, 0, 0, 0.54); +} + +.sidenav .divider { + margin: 8px 0 0 0; +} + +.sidenav .subheader { + cursor: initial; + pointer-events: none; + color: rgba(0, 0, 0, 0.54); + font-size: 14px; + font-weight: 500; + line-height: 48px; +} + +.sidenav .subheader:hover { + background-color: transparent; +} + +.sidenav .user-view { + position: relative; + padding: 32px 32px 0; + margin-bottom: 8px; +} + +.sidenav .user-view > a { + height: auto; + padding: 0; +} + +.sidenav .user-view > a:hover { + background-color: transparent; +} + +.sidenav .user-view .background { + overflow: hidden; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; +} + +.sidenav .user-view .circle, .sidenav .user-view .name, .sidenav .user-view .email { + display: block; +} + +.sidenav .user-view .circle { + height: 64px; + width: 64px; +} + +.sidenav .user-view .name, +.sidenav .user-view .email { + font-size: 14px; + line-height: 24px; +} + +.sidenav .user-view .name { + margin-top: 16px; + font-weight: 500; +} + +.sidenav .user-view .email { + padding-bottom: 16px; + font-weight: 400; +} + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; +} + +.drag-target.right-aligned { + right: 0; +} + +.sidenav.sidenav-fixed { + left: 0; + -webkit-transform: translateX(0); + transform: translateX(0); + position: fixed; +} + +.sidenav.sidenav-fixed.right-aligned { + right: 0; + left: auto; +} + +@media only screen and (max-width: 992px) { + .sidenav.sidenav-fixed { + -webkit-transform: translateX(-105%); + transform: translateX(-105%); + } + .sidenav.sidenav-fixed.right-aligned { + -webkit-transform: translateX(105%); + transform: translateX(105%); + } + .sidenav > a { + padding: 0 16px; + } + .sidenav .user-view { + padding: 16px 16px 0; + } +} + +.sidenav .collapsible-body > ul:not(.collapsible) > li.active, +.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active { + background-color: #ee6e73; +} + +.sidenav .collapsible-body > ul:not(.collapsible) > li.active a, +.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a { + color: #fff; +} + +.sidenav .collapsible-body { + padding: 0; +} + +.sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + opacity: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + display: none; +} + +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ +.preloader-wrapper { + display: inline-block; + position: relative; + width: 50px; + height: 50px; +} + +.preloader-wrapper.small { + width: 36px; + height: 36px; +} + +.preloader-wrapper.big { + width: 64px; + height: 64px; +} + +.preloader-wrapper.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; +} + +@-webkit-keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); + } +} + +@keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + border-color: #26a69a; +} + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; +} + +.spinner-red, +.spinner-red-only { + border-color: #db4437; +} + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; +} + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer, +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} + +@keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} + +@-webkit-keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} + +@keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} + +@keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} + +@-webkit-keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} + +@keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} + +@-webkit-keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +@keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.circle-clipper .circle { + width: 200%; + height: 100%; + border-width: 3px; + /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; +} + +.circle-clipper.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); +} + +.circle-clipper.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); +} + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { + -webkit-transform: rotate(130deg); + } + 50% { + -webkit-transform: rotate(-5deg); + } + to { + -webkit-transform: rotate(130deg); + } +} + +@keyframes left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); + } + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } +} + +@-webkit-keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); + } + 50% { + -webkit-transform: rotate(5deg); + } + to { + -webkit-transform: rotate(-130deg); + } +} + +@keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); + } + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } +} + +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +.slider { + position: relative; + height: 400px; + width: 100%; +} + +.slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.slider.fullscreen ul.slides { + height: 100%; +} + +.slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; +} + +.slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; +} + +.slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; +} + +.slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; +} + +.slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; +} + +.slider .slides li .caption p { + color: #e0e0e0; +} + +.slider .slides li.active { + z-index: 2; +} + +.slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} + +.slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + -webkit-transition: background-color .3s; + transition: background-color .3s; + border-radius: 50%; +} + +.slider .indicators .indicator-item.active { + background-color: #4CAF50; +} + +.carousel { + overflow: hidden; + position: relative; + width: 100%; + height: 400px; + -webkit-perspective: 500px; + perspective: 500px; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-transform-origin: 0% 50%; + transform-origin: 0% 50%; +} + +.carousel.carousel-slider { + top: 0; + left: 0; +} + +.carousel.carousel-slider .carousel-fixed-item { + position: absolute; + left: 0; + right: 0; + bottom: 20px; + z-index: 1; +} + +.carousel.carousel-slider .carousel-fixed-item.with-indicators { + bottom: 68px; +} + +.carousel.carousel-slider .carousel-item { + width: 100%; + height: 100%; + min-height: 400px; + position: absolute; + top: 0; + left: 0; +} + +.carousel.carousel-slider .carousel-item h2 { + font-size: 24px; + font-weight: 500; + line-height: 32px; +} + +.carousel.carousel-slider .carousel-item p { + font-size: 15px; +} + +.carousel .carousel-item { + visibility: hidden; + width: 200px; + height: 200px; + position: absolute; + top: 0; + left: 0; +} + +.carousel .carousel-item > img { + width: 100%; +} + +.carousel .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} + +.carousel .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 8px; + width: 8px; + margin: 24px 4px; + background-color: rgba(255, 255, 255, 0.5); + -webkit-transition: background-color .3s; + transition: background-color .3s; + border-radius: 50%; +} + +.carousel .indicators .indicator-item.active { + background-color: #fff; +} + +.carousel.scrolling .carousel-item .materialboxed, +.carousel .carousel-item:not(.active) .materialboxed { + pointer-events: none; +} + +.tap-target-wrapper { + width: 800px; + height: 800px; + position: fixed; + z-index: 1000; + visibility: hidden; + -webkit-transition: visibility 0s .3s; + transition: visibility 0s .3s; +} + +.tap-target-wrapper.open { + visibility: visible; + -webkit-transition: visibility 0s; + transition: visibility 0s; +} + +.tap-target-wrapper.open .tap-target { + -webkit-transform: scale(1); + transform: scale(1); + opacity: .95; + -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); +} + +.tap-target-wrapper.open .tap-target-wave::before { + -webkit-transform: scale(1); + transform: scale(1); +} + +.tap-target-wrapper.open .tap-target-wave::after { + visibility: visible; + -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + -webkit-transition: opacity .3s, + visibility 0s 1s, + -webkit-transform .3s; + transition: opacity .3s, + visibility 0s 1s, + -webkit-transform .3s; + transition: opacity .3s, + transform .3s, + visibility 0s 1s; + transition: opacity .3s, + transform .3s, + visibility 0s 1s, + -webkit-transform .3s; +} + +.tap-target { + position: absolute; + font-size: 1rem; + border-radius: 50%; + background-color: #ee6e73; + -webkit-box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); + box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2); + width: 100%; + height: 100%; + opacity: 0; + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1); + transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1); +} + +.tap-target-content { + position: relative; + display: table-cell; +} + +.tap-target-wave { + position: absolute; + border-radius: 50%; + z-index: 10001; +} + +.tap-target-wave::before, .tap-target-wave::after { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #ffffff; +} + +.tap-target-wave::before { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; +} + +.tap-target-wave::after { + visibility: hidden; + -webkit-transition: opacity .3s, + visibility 0s, + -webkit-transform .3s; + transition: opacity .3s, + visibility 0s, + -webkit-transform .3s; + transition: opacity .3s, + transform .3s, + visibility 0s; + transition: opacity .3s, + transform .3s, + visibility 0s, + -webkit-transform .3s; + z-index: -1; +} + +.tap-target-origin { + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + z-index: 10002; + position: absolute !important; +} + +.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small), .tap-target-origin:not(.btn):not(.btn-large):not(.btn-small):hover { + background: none; +} + +@media only screen and (max-width: 600px) { + .tap-target, .tap-target-wrapper { + width: 600px; + height: 600px; + } +} + +.pulse { + overflow: visible; + position: relative; +} + +.pulse::before { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: inherit; + border-radius: inherit; + -webkit-transition: opacity .3s, -webkit-transform .3s; + transition: opacity .3s, -webkit-transform .3s; + transition: opacity .3s, transform .3s; + transition: opacity .3s, transform .3s, -webkit-transform .3s; + -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + z-index: -1; +} + +@-webkit-keyframes pulse-animation { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 0; + -webkit-transform: scale(1.5); + transform: scale(1.5); + } + 100% { + opacity: 0; + -webkit-transform: scale(1.5); + transform: scale(1.5); + } +} + +@keyframes pulse-animation { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 0; + -webkit-transform: scale(1.5); + transform: scale(1.5); + } + 100% { + opacity: 0; + -webkit-transform: scale(1.5); + transform: scale(1.5); + } +} + +/* Modal */ +.datepicker-modal { + max-width: 325px; + min-width: 300px; + max-height: none; +} + +.datepicker-container.modal-content { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0; +} + +.datepicker-controls { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + width: 280px; + margin: 0 auto; +} + +.datepicker-controls .selects-container { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.datepicker-controls .select-wrapper input { + border-bottom: none; + text-align: center; + margin: 0; +} + +.datepicker-controls .select-wrapper input:focus { + border-bottom: none; +} + +.datepicker-controls .select-wrapper .caret { + display: none; +} + +.datepicker-controls .select-year input { + width: 50px; +} + +.datepicker-controls .select-month input { + width: 70px; +} + +.month-prev, .month-next { + margin-top: 4px; + cursor: pointer; + background-color: transparent; + border: none; +} + +/* Date Display */ +.datepicker-date-display { + -webkit-box-flex: 1; + -webkit-flex: 1 auto; + -ms-flex: 1 auto; + flex: 1 auto; + background-color: #26a69a; + color: #fff; + padding: 20px 22px; + font-weight: 500; +} + +.datepicker-date-display .year-text { + display: block; + font-size: 1.5rem; + line-height: 25px; + color: rgba(255, 255, 255, 0.7); +} + +.datepicker-date-display .date-text { + display: block; + font-size: 2.8rem; + line-height: 47px; + font-weight: 500; +} + +/* Calendar */ +.datepicker-calendar-container { + -webkit-box-flex: 2.5; + -webkit-flex: 2.5 auto; + -ms-flex: 2.5 auto; + flex: 2.5 auto; +} + +.datepicker-table { + width: 280px; + font-size: 1rem; + margin: 0 auto; +} + +.datepicker-table thead { + border-bottom: none; +} + +.datepicker-table th { + padding: 10px 5px; + text-align: center; +} + +.datepicker-table tr { + border: none; +} + +.datepicker-table abbr { + text-decoration: none; + color: #999; +} + +.datepicker-table td { + border-radius: 50%; + padding: 0; +} + +.datepicker-table td.is-today { + color: #26a69a; +} + +.datepicker-table td.is-selected { + background-color: #26a69a; + color: #fff; +} + +.datepicker-table td.is-outside-current-month, .datepicker-table td.is-disabled { + color: rgba(0, 0, 0, 0.3); + pointer-events: none; +} + +.datepicker-day-button { + background-color: transparent; + border: none; + line-height: 38px; + display: block; + width: 100%; + border-radius: 50%; + padding: 0 5px; + cursor: pointer; + color: inherit; +} + +.datepicker-day-button:focus { + background-color: rgba(43, 161, 150, 0.25); +} + +/* Footer */ +.datepicker-footer { + width: 280px; + margin: 0 auto; + padding-bottom: 5px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.datepicker-cancel, +.datepicker-clear, +.datepicker-today, +.datepicker-done { + color: #26a69a; + padding: 0 1rem; +} + +.datepicker-clear { + color: #F44336; +} + +/* Media Queries */ +@media only screen and (min-width: 601px) { + .datepicker-modal { + max-width: 625px; + } + .datepicker-container.modal-content { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .datepicker-date-display { + -webkit-box-flex: 0; + -webkit-flex: 0 1 270px; + -ms-flex: 0 1 270px; + flex: 0 1 270px; + } + .datepicker-controls, + .datepicker-table, + .datepicker-footer { + width: 320px; + } + .datepicker-day-button { + line-height: 44px; + } +} + +/* Timepicker Containers */ +.timepicker-modal { + max-width: 325px; + max-height: none; +} + +.timepicker-container.modal-content { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0; +} + +.text-primary { + color: white; +} + +/* Clock Digital Display */ +.timepicker-digital-display { + -webkit-box-flex: 1; + -webkit-flex: 1 auto; + -ms-flex: 1 auto; + flex: 1 auto; + background-color: #26a69a; + padding: 10px; + font-weight: 300; +} + +.timepicker-text-container { + font-size: 4rem; + font-weight: bold; + text-align: center; + color: rgba(255, 255, 255, 0.6); + font-weight: 400; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.timepicker-span-hours, +.timepicker-span-minutes, +.timepicker-span-am-pm div { + cursor: pointer; +} + +.timepicker-span-hours { + margin-right: 3px; +} + +.timepicker-span-minutes { + margin-left: 3px; +} + +.timepicker-display-am-pm { + font-size: 1.3rem; + position: absolute; + right: 1rem; + bottom: 1rem; + font-weight: 400; +} + +/* Analog Clock Display */ +.timepicker-analog-display { + -webkit-box-flex: 2.5; + -webkit-flex: 2.5 auto; + -ms-flex: 2.5 auto; + flex: 2.5 auto; +} + +.timepicker-plate { + background-color: #eee; + border-radius: 50%; + width: 270px; + height: 270px; + overflow: visible; + position: relative; + margin: auto; + margin-top: 25px; + margin-bottom: 5px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.timepicker-canvas, +.timepicker-dial { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +.timepicker-minutes { + visibility: hidden; +} + +.timepicker-tick { + border-radius: 50%; + color: rgba(0, 0, 0, 0.87); + line-height: 40px; + text-align: center; + width: 40px; + height: 40px; + position: absolute; + cursor: pointer; + font-size: 15px; +} + +.timepicker-tick.active, +.timepicker-tick:hover { + background-color: rgba(38, 166, 154, 0.25); +} + +.timepicker-dial { + -webkit-transition: opacity 350ms, -webkit-transform 350ms; + transition: opacity 350ms, -webkit-transform 350ms; + transition: transform 350ms, opacity 350ms; + transition: transform 350ms, opacity 350ms, -webkit-transform 350ms; +} + +.timepicker-dial-out { + opacity: 0; +} + +.timepicker-dial-out.timepicker-hours { + -webkit-transform: scale(1.1, 1.1); + transform: scale(1.1, 1.1); +} + +.timepicker-dial-out.timepicker-minutes { + -webkit-transform: scale(0.8, 0.8); + transform: scale(0.8, 0.8); +} + +.timepicker-canvas { + -webkit-transition: opacity 175ms; + transition: opacity 175ms; +} + +.timepicker-canvas line { + stroke: #26a69a; + stroke-width: 4; + stroke-linecap: round; +} + +.timepicker-canvas-out { + opacity: 0.25; +} + +.timepicker-canvas-bearing { + stroke: none; + fill: #26a69a; +} + +.timepicker-canvas-bg { + stroke: none; + fill: #26a69a; +} + +/* Footer */ +.timepicker-footer { + margin: 0 auto; + padding: 5px 1rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.timepicker-clear { + color: #F44336; +} + +.timepicker-close { + color: #26a69a; +} + +.timepicker-clear, +.timepicker-close { + padding: 0 20px; +} + +/* Media Queries */ +@media only screen and (min-width: 601px) { + .timepicker-modal { + max-width: 600px; + } + .timepicker-container.modal-content { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .timepicker-text-container { + top: 32%; + } + .timepicker-display-am-pm { + position: relative; + right: auto; + bottom: auto; + text-align: center; + margin-top: 1.2rem; + } +} diff --git a/scripts/communityModules/chat/css/materialize.min.css b/scripts/communityModules/chat/css/materialize.min.css new file mode 100644 index 0000000000..b1a5929e0b --- /dev/null +++ b/scripts/communityModules/chat/css/materialize.min.css @@ -0,0 +1,13 @@ +/*! + * Materialize v1.0.0 (http://materializecss.com) + * Copyright 2014-2017 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:rgba(0,0,0,0) !important}.transparent-text{color:rgba(0,0,0,0) !important}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;box-sizing:inherit}button,input,optgroup,select,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default)>li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.clearfix{clear:both}.z-depth-0{-webkit-box-shadow:none !important;box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-small,.btn-floating,.dropdown-content,.collapsible,.sidenav{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-small:hover,.btn-floating:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2);box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3);box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{-webkit-box-shadow:0 8px 17px 2px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.2);box-shadow:0 8px 17px 2px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.2)}.z-depth-4{-webkit-box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -7px rgba(0,0,0,0.2);box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -7px rgba(0,0,0,0.2)}.z-depth-5,.modal{-webkit-box-shadow:0 24px 38px 3px rgba(0,0,0,0.14),0 9px 46px 8px rgba(0,0,0,0.12),0 11px 15px -7px rgba(0,0,0,0.2);box-shadow:0 24px 38px 3px rgba(0,0,0,0.14),0 9px 46px 8px rgba(0,0,0,0.12),0 11px 15px -7px rgba(0,0,0,0.2)}.hoverable{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s}.hoverable:hover{-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax-container .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax-container .parallax img{opacity:0;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 1201px){.hide-on-extra-large-only{display:none !important}}@media only screen and (min-width: 1201px){.show-on-extra-large{display:block !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;color:#fff;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table;border-collapse:collapse;border-spacing:0}table.striped tr{border-bottom:none}table.striped>tbody>tr:nth-child(odd){background-color:rgba(242,242,242,0.5)}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:rgba(242,242,242,0.5)}table.centered thead tr th,table.centered tbody tr td{text-align:center}tr{border-bottom:1px solid rgba(0,0,0,0.12)}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{border-bottom:none;padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid rgba(0,0,0,0.12)}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar:not(.circle-clipper)>.circle,.collection .collection-item.avatar :not(.circle-clipper)>.circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:.25s;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;-webkit-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px;-webkit-font-smoothing:auto}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-left:auto}.sidenav span.badge{margin-top:calc(24px - 11px)}table span.badge{display:inline-block;float:none;margin-left:auto}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.col .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width: 1201px){.row .col.xl1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.xl7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.sidenav-trigger{display:none}}nav .sidenav-trigger{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .sidenav-trigger i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{-webkit-transition:background-color .3s;transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-small,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-small>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;-webkit-box-shadow:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.sidenav-trigger,nav a.sidenav-trigger i{height:64px;line-height:64px}.navbar-fixed{height:64px}}a{text-decoration:none}html{line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.3}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.8rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:2.3733333333rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.9466666667rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.52rem 0 .912rem 0}h5{font-size:1.64rem;line-height:110%;margin:1.0933333333rem 0 .656rem 0}h6{font-size:1.15rem;line-height:110%;margin:.7666666667rem 0 .46rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light{font-weight:300}.thin{font-weight:200}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.scale-transition{-webkit-transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .2s !important;transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);position:relative;padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;-webkit-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.toast .toast-action{color:#eeff41;font-weight:500;margin-right:-25px;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;-webkit-transition:color .28s ease, background-color .28s ease;transition:color .28s ease, background-color .28s ease}.tabs .tab a:focus,.tabs .tab a:focus.active{background-color:rgba(246,178,181,0.2);outline:none}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.4);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden;background-color:#323232}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-small,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 16px;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.disabled.btn-small,.btn-floating.disabled,.btn-large.disabled,.btn-small.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-small:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-small:disabled,.btn-flat:disabled,.btn[disabled],.btn-large[disabled],.btn-small[disabled],.btn-floating[disabled],.btn-large[disabled],.btn-small[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;-webkit-box-shadow:none;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.disabled.btn-small:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-small.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-small:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-small:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,.btn-large[disabled]:hover,.btn-small[disabled]:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-small[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn,.btn-large,.btn-small,.btn-floating,.btn-large,.btn-small,.btn-flat{font-size:14px;outline:0}.btn i,.btn-large i,.btn-small i,.btn-floating i,.btn-large i,.btn-small i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-small:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large,.btn-small{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover,.btn-small:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;-webkit-transition:background-color .3s;transition:background-color .3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px;padding:0}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.btn-small{width:32.4px;height:32.4px}.btn-floating.btn-small.halfway-fab{bottom:-16.2px}.btn-floating.btn-small i{line-height:32.4px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:997}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.direction-left,.fixed-action-btn.direction-right{padding:0 0 0 15px}.fixed-action-btn.direction-left ul,.fixed-action-btn.direction-right ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.direction-left ul li,.fixed-action-btn.direction-right ul li{display:inline-block;margin:7.5px 15px 0 0}.fixed-action-btn.direction-right{padding:0 15px 0 0}.fixed-action-btn.direction-right ul{text-align:left;direction:rtl;left:64px;right:auto}.fixed-action-btn.direction-right ul li{margin:7.5px 0 0 15px}.fixed-action-btn.direction-bottom{padding:0 0 15px 0}.fixed-action-btn.direction-bottom ul{top:64px;bottom:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.fixed-action-btn.direction-bottom ul li{margin:15px 0 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0;z-index:1}.fixed-action-btn.toolbar ul li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;-webkit-transition:none;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;-webkit-transition:background-color .2s;transition:background-color .2s}.btn-flat:focus,.btn-flat:hover{-webkit-box-shadow:none;box-shadow:none}.btn-flat:focus{background-color:rgba(0,0,0,0.1)}.btn-flat.disabled,.btn-flat.btn-flat[disabled]{background-color:transparent !important;color:#b3b2b2 !important;cursor:default}.btn-large{height:54px;line-height:54px;font-size:15px;padding:0 28px}.btn-large i{font-size:1.6rem}.btn-small{height:32.4px;line-height:32.4px;font-size:13px}.btn-small i{font-size:1.2rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;overflow-y:auto;opacity:0;position:absolute;left:0;top:0;z-index:9999;-webkit-transform-origin:0 0;transform-origin:0 0}.dropdown-content:focus{outline:0}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left}.dropdown-content li:hover,.dropdown-content li.active{background-color:#eee}.dropdown-content li:focus{outline:none}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}body.keyboard-focused .dropdown-content li:focus{background-color:#dadada}.input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px;-webkit-transform:none;transform:none}.dropdown-trigger{cursor:pointer}/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;-webkit-transition:.3s ease-out;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{-webkit-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}.modal:focus{outline:none}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%;text-align:right}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-small,.modal .modal-footer .btn-flat{margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-25%;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.5;padding:1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header:focus{outline:0}.collapsible-header i{width:2rem;font-size:1.6rem;display:inline-block;text-align:center;margin-right:1rem}.keyboard-focused .collapsible-header:focus{background-color:#eee}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2rem}.sidenav .collapsible,.sidenav.fixed .collapsible{border:none;-webkit-box-shadow:none;box-shadow:none}.sidenav .collapsible li,.sidenav.fixed .collapsible li{padding:0}.sidenav .collapsible-header,.sidenav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.sidenav .collapsible-header:hover,.sidenav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.sidenav .collapsible-header i,.sidenav.fixed .collapsible-header i{line-height:inherit}.sidenav .collapsible-body,.sidenav.fixed .collapsible-body{border:0;background-color:#fff}.sidenav .collapsible-body li a,.sidenav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;-webkit-box-shadow:none;box-shadow:none}.collapsible.popout>li{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;-webkit-transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{-webkit-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip:focus{outline:none;background-color:#26a69a;color:#fff}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;-webkit-box-shadow:none;box-shadow:none;margin:0 0 8px 0;min-height:45px;outline:none;-webkit-transition:all .3s;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:16px;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}.chips .autocomplete-content{margin-top:0;margin-bottom:0}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}::-ms-input-placeholder{color:#d1d1d1}::placeholder{color:#d1d1d1}input:not([type]),input[type=text]:not(.browser-default),input[type=password]:not(.browser-default),input[type=email]:not(.browser-default),input[type=url]:not(.browser-default),input[type=time]:not(.browser-default),input[type=date]:not(.browser-default),input[type=datetime]:not(.browser-default),input[type=datetime-local]:not(.browser-default),input[type=tel]:not(.browser-default),input[type=number]:not(.browser-default),input[type=search]:not(.browser-default),textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:16px;margin:0 0 8px 0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-transition:border .3s, -webkit-box-shadow .3s;transition:border .3s, -webkit-box-shadow .3s;transition:box-shadow .3s, border .3s;transition:box-shadow .3s, border .3s, -webkit-box-shadow .3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:not(.browser-default):disabled,input[type=text]:not(.browser-default)[readonly="readonly"],input[type=password]:not(.browser-default):disabled,input[type=password]:not(.browser-default)[readonly="readonly"],input[type=email]:not(.browser-default):disabled,input[type=email]:not(.browser-default)[readonly="readonly"],input[type=url]:not(.browser-default):disabled,input[type=url]:not(.browser-default)[readonly="readonly"],input[type=time]:not(.browser-default):disabled,input[type=time]:not(.browser-default)[readonly="readonly"],input[type=date]:not(.browser-default):disabled,input[type=date]:not(.browser-default)[readonly="readonly"],input[type=datetime]:not(.browser-default):disabled,input[type=datetime]:not(.browser-default)[readonly="readonly"],input[type=datetime-local]:not(.browser-default):disabled,input[type=datetime-local]:not(.browser-default)[readonly="readonly"],input[type=tel]:not(.browser-default):disabled,input[type=tel]:not(.browser-default)[readonly="readonly"],input[type=number]:not(.browser-default):disabled,input[type=number]:not(.browser-default)[readonly="readonly"],input[type=search]:not(.browser-default):disabled,input[type=search]:not(.browser-default)[readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.42);border-bottom:1px dotted rgba(0,0,0,0.42)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:not(.browser-default):disabled+label,input[type=text]:not(.browser-default)[readonly="readonly"]+label,input[type=password]:not(.browser-default):disabled+label,input[type=password]:not(.browser-default)[readonly="readonly"]+label,input[type=email]:not(.browser-default):disabled+label,input[type=email]:not(.browser-default)[readonly="readonly"]+label,input[type=url]:not(.browser-default):disabled+label,input[type=url]:not(.browser-default)[readonly="readonly"]+label,input[type=time]:not(.browser-default):disabled+label,input[type=time]:not(.browser-default)[readonly="readonly"]+label,input[type=date]:not(.browser-default):disabled+label,input[type=date]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime]:not(.browser-default):disabled+label,input[type=datetime]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime-local]:not(.browser-default):disabled+label,input[type=datetime-local]:not(.browser-default)[readonly="readonly"]+label,input[type=tel]:not(.browser-default):disabled+label,input[type=tel]:not(.browser-default)[readonly="readonly"]+label,input[type=number]:not(.browser-default):disabled+label,input[type=number]:not(.browser-default)[readonly="readonly"]+label,input[type=search]:not(.browser-default):disabled+label,input[type=search]:not(.browser-default)[readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.42)}input:not([type]):focus:not([readonly]),input[type=text]:not(.browser-default):focus:not([readonly]),input[type=password]:not(.browser-default):focus:not([readonly]),input[type=email]:not(.browser-default):focus:not([readonly]),input[type=url]:not(.browser-default):focus:not([readonly]),input[type=time]:not(.browser-default):focus:not([readonly]),input[type=date]:not(.browser-default):focus:not([readonly]),input[type=datetime]:not(.browser-default):focus:not([readonly]),input[type=datetime-local]:not(.browser-default):focus:not([readonly]),input[type=tel]:not(.browser-default):focus:not([readonly]),input[type=number]:not(.browser-default):focus:not([readonly]),input[type=search]:not(.browser-default):focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:not(.browser-default):focus:not([readonly])+label,input[type=password]:not(.browser-default):focus:not([readonly])+label,input[type=email]:not(.browser-default):focus:not([readonly])+label,input[type=url]:not(.browser-default):focus:not([readonly])+label,input[type=time]:not(.browser-default):focus:not([readonly])+label,input[type=date]:not(.browser-default):focus:not([readonly])+label,input[type=datetime]:not(.browser-default):focus:not([readonly])+label,input[type=datetime-local]:not(.browser-default):focus:not([readonly])+label,input[type=tel]:not(.browser-default):focus:not([readonly])+label,input[type=number]:not(.browser-default):focus:not([readonly])+label,input[type=search]:not(.browser-default):focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]):focus.valid ~ label,input[type=text]:not(.browser-default):focus.valid ~ label,input[type=password]:not(.browser-default):focus.valid ~ label,input[type=email]:not(.browser-default):focus.valid ~ label,input[type=url]:not(.browser-default):focus.valid ~ label,input[type=time]:not(.browser-default):focus.valid ~ label,input[type=date]:not(.browser-default):focus.valid ~ label,input[type=datetime]:not(.browser-default):focus.valid ~ label,input[type=datetime-local]:not(.browser-default):focus.valid ~ label,input[type=tel]:not(.browser-default):focus.valid ~ label,input[type=number]:not(.browser-default):focus.valid ~ label,input[type=search]:not(.browser-default):focus.valid ~ label,textarea.materialize-textarea:focus.valid ~ label{color:#4CAF50}input:not([type]):focus.invalid ~ label,input[type=text]:not(.browser-default):focus.invalid ~ label,input[type=password]:not(.browser-default):focus.invalid ~ label,input[type=email]:not(.browser-default):focus.invalid ~ label,input[type=url]:not(.browser-default):focus.invalid ~ label,input[type=time]:not(.browser-default):focus.invalid ~ label,input[type=date]:not(.browser-default):focus.invalid ~ label,input[type=datetime]:not(.browser-default):focus.invalid ~ label,input[type=datetime-local]:not(.browser-default):focus.invalid ~ label,input[type=tel]:not(.browser-default):focus.invalid ~ label,input[type=number]:not(.browser-default):focus.invalid ~ label,input[type=search]:not(.browser-default):focus.invalid ~ label,textarea.materialize-textarea:focus.invalid ~ label{color:#F44336}input:not([type]).validate+label,input[type=text]:not(.browser-default).validate+label,input[type=password]:not(.browser-default).validate+label,input[type=email]:not(.browser-default).validate+label,input[type=url]:not(.browser-default).validate+label,input[type=time]:not(.browser-default).validate+label,input[type=date]:not(.browser-default).validate+label,input[type=datetime]:not(.browser-default).validate+label,input[type=datetime-local]:not(.browser-default).validate+label,input[type=tel]:not(.browser-default).validate+label,input[type=number]:not(.browser-default).validate+label,input[type=search]:not(.browser-default).validate+label,textarea.materialize-textarea.validate+label{width:100%}input.valid:not([type]),input.valid:not([type]):focus,input.valid[type=text]:not(.browser-default),input.valid[type=text]:not(.browser-default):focus,input.valid[type=password]:not(.browser-default),input.valid[type=password]:not(.browser-default):focus,input.valid[type=email]:not(.browser-default),input.valid[type=email]:not(.browser-default):focus,input.valid[type=url]:not(.browser-default),input.valid[type=url]:not(.browser-default):focus,input.valid[type=time]:not(.browser-default),input.valid[type=time]:not(.browser-default):focus,input.valid[type=date]:not(.browser-default),input.valid[type=date]:not(.browser-default):focus,input.valid[type=datetime]:not(.browser-default),input.valid[type=datetime]:not(.browser-default):focus,input.valid[type=datetime-local]:not(.browser-default),input.valid[type=datetime-local]:not(.browser-default):focus,input.valid[type=tel]:not(.browser-default),input.valid[type=tel]:not(.browser-default):focus,input.valid[type=number]:not(.browser-default),input.valid[type=number]:not(.browser-default):focus,input.valid[type=search]:not(.browser-default),input.valid[type=search]:not(.browser-default):focus,textarea.materialize-textarea.valid,textarea.materialize-textarea.valid:focus,.select-wrapper.valid>input.select-dropdown{border-bottom:1px solid #4CAF50;-webkit-box-shadow:0 1px 0 0 #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input.invalid:not([type]),input.invalid:not([type]):focus,input.invalid[type=text]:not(.browser-default),input.invalid[type=text]:not(.browser-default):focus,input.invalid[type=password]:not(.browser-default),input.invalid[type=password]:not(.browser-default):focus,input.invalid[type=email]:not(.browser-default),input.invalid[type=email]:not(.browser-default):focus,input.invalid[type=url]:not(.browser-default),input.invalid[type=url]:not(.browser-default):focus,input.invalid[type=time]:not(.browser-default),input.invalid[type=time]:not(.browser-default):focus,input.invalid[type=date]:not(.browser-default),input.invalid[type=date]:not(.browser-default):focus,input.invalid[type=datetime]:not(.browser-default),input.invalid[type=datetime]:not(.browser-default):focus,input.invalid[type=datetime-local]:not(.browser-default),input.invalid[type=datetime-local]:not(.browser-default):focus,input.invalid[type=tel]:not(.browser-default),input.invalid[type=tel]:not(.browser-default):focus,input.invalid[type=number]:not(.browser-default),input.invalid[type=number]:not(.browser-default):focus,input.invalid[type=search]:not(.browser-default),input.invalid[type=search]:not(.browser-default):focus,textarea.materialize-textarea.invalid,textarea.materialize-textarea.invalid:focus,.select-wrapper.invalid>input.select-dropdown,.select-wrapper.invalid>input.select-dropdown:focus{border-bottom:1px solid #F44336;-webkit-box-shadow:0 1px 0 0 #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).valid ~ .helper-text[data-success],input:not([type]):focus.valid ~ .helper-text[data-success],input:not([type]).invalid ~ .helper-text[data-error],input:not([type]):focus.invalid ~ .helper-text[data-error],input[type=text]:not(.browser-default).valid ~ .helper-text[data-success],input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=password]:not(.browser-default).valid ~ .helper-text[data-success],input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=email]:not(.browser-default).valid ~ .helper-text[data-success],input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=url]:not(.browser-default).valid ~ .helper-text[data-success],input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=time]:not(.browser-default).valid ~ .helper-text[data-success],input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=date]:not(.browser-default).valid ~ .helper-text[data-success],input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=number]:not(.browser-default).valid ~ .helper-text[data-success],input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=search]:not(.browser-default).valid ~ .helper-text[data-success],input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],textarea.materialize-textarea.valid ~ .helper-text[data-success],textarea.materialize-textarea:focus.valid ~ .helper-text[data-success],textarea.materialize-textarea.invalid ~ .helper-text[data-error],textarea.materialize-textarea:focus.invalid ~ .helper-text[data-error],.select-wrapper.valid .helper-text[data-success],.select-wrapper.invalid ~ .helper-text[data-error]{color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}input:not([type]).valid ~ .helper-text:after,input:not([type]):focus.valid ~ .helper-text:after,input[type=text]:not(.browser-default).valid ~ .helper-text:after,input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=password]:not(.browser-default).valid ~ .helper-text:after,input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=email]:not(.browser-default).valid ~ .helper-text:after,input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=url]:not(.browser-default).valid ~ .helper-text:after,input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=time]:not(.browser-default).valid ~ .helper-text:after,input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=date]:not(.browser-default).valid ~ .helper-text:after,input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=datetime]:not(.browser-default).valid ~ .helper-text:after,input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=tel]:not(.browser-default).valid ~ .helper-text:after,input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=number]:not(.browser-default).valid ~ .helper-text:after,input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=search]:not(.browser-default).valid ~ .helper-text:after,input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,textarea.materialize-textarea.valid ~ .helper-text:after,textarea.materialize-textarea:focus.valid ~ .helper-text:after,.select-wrapper.valid ~ .helper-text:after{content:attr(data-success);color:#4CAF50}input:not([type]).invalid ~ .helper-text:after,input:not([type]):focus.invalid ~ .helper-text:after,input[type=text]:not(.browser-default).invalid ~ .helper-text:after,input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=password]:not(.browser-default).invalid ~ .helper-text:after,input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=email]:not(.browser-default).invalid ~ .helper-text:after,input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=url]:not(.browser-default).invalid ~ .helper-text:after,input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=time]:not(.browser-default).invalid ~ .helper-text:after,input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=date]:not(.browser-default).invalid ~ .helper-text:after,input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=tel]:not(.browser-default).invalid ~ .helper-text:after,input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=number]:not(.browser-default).invalid ~ .helper-text:after,input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=search]:not(.browser-default).invalid ~ .helper-text:after,input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,textarea.materialize-textarea.invalid ~ .helper-text:after,textarea.materialize-textarea:focus.invalid ~ .helper-text:after,.select-wrapper.invalid ~ .helper-text:after{content:attr(data-error);color:#F44336}input:not([type])+label:after,input[type=text]:not(.browser-default)+label:after,input[type=password]:not(.browser-default)+label:after,input[type=email]:not(.browser-default)+label:after,input[type=url]:not(.browser-default)+label:after,input[type=time]:not(.browser-default)+label:after,input[type=date]:not(.browser-default)+label:after,input[type=datetime]:not(.browser-default)+label:after,input[type=datetime-local]:not(.browser-default)+label:after,input[type=tel]:not(.browser-default)+label:after,input[type=number]:not(.browser-default)+label:after,input[type=search]:not(.browser-default)+label:after,textarea.materialize-textarea+label:after,.select-wrapper+label:after{display:block;content:"";position:absolute;top:100%;left:0;opacity:0;-webkit-transition:.2s opacity ease-out, .2s color ease-out;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem;margin-bottom:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field>label{color:#9e9e9e;position:absolute;top:0;left:0;font-size:1rem;cursor:text;-webkit-transition:color .2s ease-out, -webkit-transform .2s ease-out;transition:color .2s ease-out, -webkit-transform .2s ease-out;transition:transform .2s ease-out, color .2s ease-out;transition:transform .2s ease-out, color .2s ease-out, -webkit-transform .2s ease-out;-webkit-transform-origin:0% 100%;transform-origin:0% 100%;text-align:initial;-webkit-transform:translateY(12px);transform:translateY(12px)}.input-field>label:not(.label-icon).active{-webkit-transform:translateY(-14px) scale(0.8);transform:translateY(-14px) scale(0.8);-webkit-transform-origin:0 0;transform-origin:0 0}.input-field>input[type]:-webkit-autofill:not(.browser-default):not([type="search"])+label,.input-field>input[type=date]:not(.browser-default)+label,.input-field>input[type=time]:not(.browser-default)+label{-webkit-transform:translateY(-14px) scale(0.8);transform:translateY(-14px) scale(0.8);-webkit-transform-origin:0 0;transform-origin:0 0}.input-field .helper-text{position:relative;min-height:18px;display:block;font-size:12px;color:rgba(0,0,0,0.54)}.input-field .helper-text::after{opacity:1;position:absolute;top:0;left:0}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;transition:color .2s;top:.5rem}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .helper-text,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;-webkit-transition:.3s background-color;transition:.3s background-color}.nav-wrapper .input-field input[type=search]{height:inherit;padding-left:4rem;width:calc(100% - 4rem);border:0;-webkit-box-shadow:none;box-shadow:none}.input-field input[type=search]:focus:not(.browser-default){background-color:#fff;border:0;-webkit-box-shadow:none;box-shadow:none;color:#444}.input-field input[type=search]:focus:not(.browser-default)+label i,.input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close,.input-field input[type=search]:focus:not(.browser-default) ~ .material-icons{color:#444}.input-field input[type=search]+.label-icon{-webkit-transform:none;transform:none;left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;-webkit-transition:.3s color;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{line-height:normal;overflow-y:hidden;padding:.8rem 0 .8rem 0;resize:none;min-height:3rem;-webkit-box-sizing:border-box;box-sizing:border-box}.hiddendiv{visibility:hidden;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0;z-index:-1}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}.character-counter{min-height:18px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;opacity:0;pointer-events:none}[type="radio"]:not(:checked)+span,[type="radio"]:checked+span{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+span:before,[type="radio"]+span:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+span:before,[type="radio"]:not(:checked)+span:after,[type="radio"]:checked+span:before,[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:before,[type="radio"].with-gap:checked+span:after{border-radius:50%}[type="radio"]:not(:checked)+span:before,[type="radio"]:not(:checked)+span:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+span:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+span:before{border:2px solid transparent}[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:before,[type="radio"].with-gap:checked+span:after{border:2px solid #26a69a}[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:after{background-color:#26a69a}[type="radio"]:checked+span:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+span:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+span:before{-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+span:before{border:2px solid rgba(0,0,0,0.42)}[type="radio"].with-gap:disabled:checked+span:after{border:none;background-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+span:before,[type="radio"]:disabled:checked+span:before{background-color:transparent;border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled+span{color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+span:before{border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:checked+span:after{background-color:rgba(0,0,0,0.42);border-color:#949494}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;opacity:0;pointer-events:none}[type="checkbox"]+span:not(.lever){position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="checkbox"]+span:not(.lever):before,[type="checkbox"]:not(.filled-in)+span:not(.lever):after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:3px;-webkit-transition:.2s;transition:.2s}[type="checkbox"]:not(.filled-in)+span:not(.lever):after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+span:not(.lever):before{border:none;background-color:rgba(0,0,0,0.42)}[type="checkbox"].tabbed:focus+span:not(.lever):after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+span:not(.lever):before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+span:before{border-right:2px solid rgba(0,0,0,0.42);border-bottom:2px solid rgba(0,0,0,0.42)}[type="checkbox"]:indeterminate+span:not(.lever):before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+span:not(.lever):before{border-right:2px solid rgba(0,0,0,0.42);background-color:transparent}[type="checkbox"].filled-in+span:not(.lever):after{border-radius:2px}[type="checkbox"].filled-in+span:not(.lever):before,[type="checkbox"].filled-in+span:not(.lever):after{content:'';left:0;position:absolute;-webkit-transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+span:not(.lever):before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+span:not(.lever):after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+span:not(.lever):before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+span:not(.lever):after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+span:not(.lever):after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+span:not(.lever):after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+span:not(.lever):before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+span:not(.lever):after{border-color:transparent;background-color:#949494}[type="checkbox"].filled-in:disabled:checked+span:not(.lever):before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+span:not(.lever):after{background-color:#949494;border-color:#949494}.switch,.switch *{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:before,.switch label input[type=checkbox]:checked+.lever:after{left:18px}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:36px;height:14px;background-color:rgba(0,0,0,0.38);border-radius:15px;margin-right:10px;-webkit-transition:background 0.3s ease;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:before,.switch label .lever:after{content:"";position:absolute;display:inline-block;width:20px;height:20px;border-radius:50%;left:0;top:-3px;-webkit-transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease}.switch label .lever:before{background-color:rgba(38,166,154,0.15)}.switch label .lever:after{background-color:#F1F1F1;-webkit-box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(38,166,154,0.15)}input[type=checkbox]:not(:disabled) ~ .lever:active:before,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default;background-color:rgba(0,0,0,0.12)}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#949494}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper.valid+label,.select-wrapper.invalid+label{width:100%;pointer-events:none}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:16px;margin:0 0 8px 0;padding:0;display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.select-wrapper input.select-dropdown:focus{border-bottom:1px solid #26a69a}.select-wrapper .caret{position:absolute;right:0;top:0;bottom:0;margin:auto 0;z-index:0;fill:rgba(0,0,0,0.87)}.select-wrapper+label{position:absolute;top:-26px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.42)}.select-wrapper.disabled+label{color:rgba(0,0,0,0.42)}.select-wrapper.disabled .caret{fill:rgba(0,0,0,0.42)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.42);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}body.keyboard-focused .select-dropdown.dropdown-content li:focus{background-color:rgba(0,0,0,0.08)}.select-dropdown.dropdown-content li:hover{background-color:rgba(0,0,0,0.08)}.select-dropdown.dropdown-content li.selected{background-color:rgba(0,0,0,0.03)}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large,.file-field .btn-small{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.file-field input[type=file]::-webkit-file-upload-button{display:none}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s;-webkit-appearance:none;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0}.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 10px rgba(38,166,154,0.26);box-shadow:0 0 0 10px rgba(38,166,154,0.26)}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-moz-focus-inner{border:0}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(38,166,154,0.26)}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s}.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb{box-shadow:0 0 0 10px rgba(38,166,154,0.26)}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:16px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:15px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:14px;border-left:2px solid #ee6e73}.sidenav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.sidenav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.sidenav .collapsible{margin:0}.sidenav li{float:none;line-height:48px}.sidenav li.active{background-color:rgba(0,0,0,0.05)}.sidenav li>a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.sidenav li>a:hover{background-color:rgba(0,0,0,0.05)}.sidenav li>a.btn,.sidenav li>a.btn-large,.sidenav li>a.btn-small,.sidenav li>a.btn-large,.sidenav li>a.btn-flat,.sidenav li>a.btn-floating{margin:10px 15px}.sidenav li>a.btn,.sidenav li>a.btn-large,.sidenav li>a.btn-small,.sidenav li>a.btn-large,.sidenav li>a.btn-floating{color:#fff}.sidenav li>a.btn-flat{color:#343434}.sidenav li>a.btn:hover,.sidenav li>a.btn-large:hover,.sidenav li>a.btn-small:hover,.sidenav li>a.btn-large:hover{background-color:#2bbbad}.sidenav li>a.btn-floating:hover{background-color:#26a69a}.sidenav li>a>i,.sidenav li>a>[class^="mdi-"],.sidenav li>a li>a>[class*="mdi-"],.sidenav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.sidenav .divider{margin:8px 0 0 0}.sidenav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.sidenav .subheader:hover{background-color:transparent}.sidenav .user-view{position:relative;padding:32px 32px 0;margin-bottom:8px}.sidenav .user-view>a{height:auto;padding:0}.sidenav .user-view>a:hover{background-color:transparent}.sidenav .user-view .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.sidenav .user-view .circle,.sidenav .user-view .name,.sidenav .user-view .email{display:block}.sidenav .user-view .circle{height:64px;width:64px}.sidenav .user-view .name,.sidenav .user-view .email{font-size:14px;line-height:24px}.sidenav .user-view .name{margin-top:16px;font-weight:500}.sidenav .user-view .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.drag-target.right-aligned{right:0}.sidenav.sidenav-fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.sidenav.sidenav-fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.sidenav.sidenav-fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.sidenav.sidenav-fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.sidenav>a{padding:0 16px}.sidenav .user-view{padding:16px 16px 0}}.sidenav .collapsible-body>ul:not(.collapsible)>li.active,.sidenav.sidenav-fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.sidenav .collapsible-body>ul:not(.collapsible)>li.active a,.sidenav.sidenav-fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.sidenav .collapsible-body{padding:0}.sidenav-overlay{position:fixed;top:0;left:0;right:0;opacity:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;display:none}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{visibility:hidden;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel.scrolling .carousel-item .materialboxed,.carousel .carousel-item:not(.active) .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;-webkit-transition:visibility 0s .3s;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;-webkit-transition:visibility 0s;transition:visibility 0s}.tap-target-wrapper.open .tap-target{-webkit-transform:scale(1);transform:scale(1);opacity:.95;-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-wrapper.open .tap-target-wave::before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave::after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;-webkit-transition:opacity .3s, visibility 0s 1s, -webkit-transform .3s;transition:opacity .3s, visibility 0s 1s, -webkit-transform .3s;transition:opacity .3s, transform .3s, visibility 0s 1s;transition:opacity .3s, transform .3s, visibility 0s 1s, -webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;-webkit-box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave::before,.tap-target-wave::after{content:'';display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#ffffff}.tap-target-wave::before{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.tap-target-wave::after{visibility:hidden;-webkit-transition:opacity .3s, visibility 0s, -webkit-transform .3s;transition:opacity .3s, visibility 0s, -webkit-transform .3s;transition:opacity .3s, transform .3s, visibility 0s;transition:opacity .3s, transform .3s, visibility 0s, -webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:10002;position:absolute !important}.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small),.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small):hover{background:none}@media only screen and (max-width: 600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:visible;position:relative}.pulse::before{content:'';display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;-webkit-transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, transform .3s;transition:opacity .3s, transform .3s, -webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.datepicker-modal{max-width:325px;min-width:300px;max-height:none}.datepicker-container.modal-content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0}.datepicker-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:280px;margin:0 auto}.datepicker-controls .selects-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.datepicker-controls .select-wrapper input{border-bottom:none;text-align:center;margin:0}.datepicker-controls .select-wrapper input:focus{border-bottom:none}.datepicker-controls .select-wrapper .caret{display:none}.datepicker-controls .select-year input{width:50px}.datepicker-controls .select-month input{width:70px}.month-prev,.month-next{margin-top:4px;cursor:pointer;background-color:transparent;border:none}.datepicker-date-display{-webkit-box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;background-color:#26a69a;color:#fff;padding:20px 22px;font-weight:500}.datepicker-date-display .year-text{display:block;font-size:1.5rem;line-height:25px;color:rgba(255,255,255,0.7)}.datepicker-date-display .date-text{display:block;font-size:2.8rem;line-height:47px;font-weight:500}.datepicker-calendar-container{-webkit-box-flex:2.5;-webkit-flex:2.5 auto;-ms-flex:2.5 auto;flex:2.5 auto}.datepicker-table{width:280px;font-size:1rem;margin:0 auto}.datepicker-table thead{border-bottom:none}.datepicker-table th{padding:10px 5px;text-align:center}.datepicker-table tr{border:none}.datepicker-table abbr{text-decoration:none;color:#999}.datepicker-table td{border-radius:50%;padding:0}.datepicker-table td.is-today{color:#26a69a}.datepicker-table td.is-selected{background-color:#26a69a;color:#fff}.datepicker-table td.is-outside-current-month,.datepicker-table td.is-disabled{color:rgba(0,0,0,0.3);pointer-events:none}.datepicker-day-button{background-color:transparent;border:none;line-height:38px;display:block;width:100%;border-radius:50%;padding:0 5px;cursor:pointer;color:inherit}.datepicker-day-button:focus{background-color:rgba(43,161,150,0.25)}.datepicker-footer{width:280px;margin:0 auto;padding-bottom:5px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.datepicker-cancel,.datepicker-clear,.datepicker-today,.datepicker-done{color:#26a69a;padding:0 1rem}.datepicker-clear{color:#F44336}@media only screen and (min-width: 601px){.datepicker-modal{max-width:625px}.datepicker-container.modal-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.datepicker-date-display{-webkit-box-flex:0;-webkit-flex:0 1 270px;-ms-flex:0 1 270px;flex:0 1 270px}.datepicker-controls,.datepicker-table,.datepicker-footer{width:320px}.datepicker-day-button{line-height:44px}}.timepicker-modal{max-width:325px;max-height:none}.timepicker-container.modal-content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0}.text-primary{color:#fff}.timepicker-digital-display{-webkit-box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;background-color:#26a69a;padding:10px;font-weight:300}.timepicker-text-container{font-size:4rem;font-weight:bold;text-align:center;color:rgba(255,255,255,0.6);font-weight:400;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.timepicker-span-hours,.timepicker-span-minutes,.timepicker-span-am-pm div{cursor:pointer}.timepicker-span-hours{margin-right:3px}.timepicker-span-minutes{margin-left:3px}.timepicker-display-am-pm{font-size:1.3rem;position:absolute;right:1rem;bottom:1rem;font-weight:400}.timepicker-analog-display{-webkit-box-flex:2.5;-webkit-flex:2.5 auto;-ms-flex:2.5 auto;flex:2.5 auto}.timepicker-plate{background-color:#eee;border-radius:50%;width:270px;height:270px;overflow:visible;position:relative;margin:auto;margin-top:25px;margin-bottom:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.timepicker-canvas,.timepicker-dial{position:absolute;left:0;right:0;top:0;bottom:0}.timepicker-minutes{visibility:hidden}.timepicker-tick{border-radius:50%;color:rgba(0,0,0,0.87);line-height:40px;text-align:center;width:40px;height:40px;position:absolute;cursor:pointer;font-size:15px}.timepicker-tick.active,.timepicker-tick:hover{background-color:rgba(38,166,154,0.25)}.timepicker-dial{-webkit-transition:opacity 350ms, -webkit-transform 350ms;transition:opacity 350ms, -webkit-transform 350ms;transition:transform 350ms, opacity 350ms;transition:transform 350ms, opacity 350ms, -webkit-transform 350ms}.timepicker-dial-out{opacity:0}.timepicker-dial-out.timepicker-hours{-webkit-transform:scale(1.1, 1.1);transform:scale(1.1, 1.1)}.timepicker-dial-out.timepicker-minutes{-webkit-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.timepicker-canvas{-webkit-transition:opacity 175ms;transition:opacity 175ms}.timepicker-canvas line{stroke:#26a69a;stroke-width:4;stroke-linecap:round}.timepicker-canvas-out{opacity:0.25}.timepicker-canvas-bearing{stroke:none;fill:#26a69a}.timepicker-canvas-bg{stroke:none;fill:#26a69a}.timepicker-footer{margin:0 auto;padding:5px 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.timepicker-clear{color:#F44336}.timepicker-close{color:#26a69a}.timepicker-clear,.timepicker-close{padding:0 20px}@media only screen and (min-width: 601px){.timepicker-modal{max-width:600px}.timepicker-container.modal-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.timepicker-text-container{top:32%}.timepicker-display-am-pm{position:relative;right:auto;bottom:auto;text-align:center;margin-top:1.2rem}} diff --git a/scripts/communityModules/chat/emoticons/COPYING b/scripts/communityModules/chat/emoticons/COPYING new file mode 100644 index 0000000000..e709d0c050 --- /dev/null +++ b/scripts/communityModules/chat/emoticons/COPYING @@ -0,0 +1,67 @@ +Creative Commons Attribution-ShareAlike 2.5 License Agreement + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + + 1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. + 2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. + 3. "Licensor" means the individual or entity that offers the Work under the terms of this License. + 4. "Original Author" means the individual or entity who created the Work. + 5. "Work" means the copyrightable work of authorship offered under the terms of this License. + 6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. + 7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. + +2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + + 1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; + 2. to create and reproduce Derivative Works; + 3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; + 4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. + 5. + + For the avoidance of doubt, where the work is a musical composition: + 1. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work. + 2. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). + 6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). + +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + + 1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested. + 2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. + 3. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + 1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. + 2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. + +8. Miscellaneous + + 1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. + 2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. + 3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + 4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. + 5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. + +Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. + +Creative Commons may be contacted at http://creativecommons.org/. diff --git a/scripts/communityModules/chat/emoticons/README b/scripts/communityModules/chat/emoticons/README new file mode 100644 index 0000000000..407409cf38 --- /dev/null +++ b/scripts/communityModules/chat/emoticons/README @@ -0,0 +1,12 @@ +Tango Icon Theme +---------------- + +This is an icon theme that follows the Tango visual guidelines [1]. Currently +it depends on Imagemagick for creation of 24x24 bitmaps by adding a 1px padding +around the 22x22px version. For GNOME and KDE you will also need +icon-naming-utils that allow the theme to work in these environments before +they follow the new naming scheme [2]. + + +[1] http://tango-project.org/Tango_Icon_Theme_Guidelines +[2] http://tango-project.org/Standard_Icon_Naming_Specification diff --git a/scripts/communityModules/chat/emoticons/face-angel.png b/scripts/communityModules/chat/emoticons/face-angel.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c5e940df52406a6fdb2289da426cbbf6052404 GIT binary patch literal 992 zcmV<610Vc}P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00S&ZL_t(I%WaZdY?E~u#()3s(Dv(Cx3Ud4%Gg+pjLkTa+36f)5_C)^ z*&+$aoFp0#i5D33!gy;U(ZrZ&6hmTS6e9*vF6M5$AkhI66kSGE)R9T6O(|Wwp84AE z@b_YDiHG0Sd-3LZ-n`EvxJ~?{9Yd;L-EZjeJ+7lPNLLGhP^DCDp~_s@3eAG@OTfEu zwzl@KIWbHEKmg32dGk<{JNb#&wH=T9JKow1|3{(p0OI?L6g@relTR#Ek%e29WZOo^G6)dRp%_Ft+A_ z=s%pDlAxMaa2E2|OBu@gy)$qF0PVN89&K?`8Lxl$QMAgBFt-5J1Zrs(0I974i5E+U^E?r&OOb3V9Z5NXaMj3$KczkR+0#|7I)R!YcX9Q>Uu&&`ld zXZLS=?&C>Cn3)5C?m=Y!630IOnX8K#gy!Mkv+oeO7U#92CqY$-ET;J2%Q<9fhCpW@ zIJZUsG^LPvT&v%Vo4iO*R~sizO|uyNibLbO>FV6fLw%hbeBoU>HZ}0%&|Tn`QR~}K z3fbY6CtB4uq4+@B4D`0MbKpMEJS+LQE+dchvTv{lDg|UAj?Cr|ngNd8ypogdiAuW& zRvBp(kyaTj6D$jC3+xJ5C8U`JGmEq;NUH=w$pUC@P2jAx9J@2V6yx+4$MJcF+11}o zsHG9JVxdZlWMYZqCug{$wVPL8d++rL%m*UpVD9PD#=Q@u}?p$l4RE?Jt)8F-M92n{F`@4~Uo<}-YupJ*#N(4Gp z|2Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q($L_t(I%cYZBXk1kkhQGb{nKL=fG%1tL)YdkEVlatqjCDGUQSd=p zEw&U2v0^nElm<2CO+;F#tsvCkH4zy>@+u7_NYsig^hq;@*h@@(XjF31=GIKoq%&vE znKOI)5GuBP^m|_G=V!4#!5s{B&?W=fB7Bh`5K%0$#@53+L|?L7_ue@#{-;Ppj;=*7o<}GP zj0J&@@qMUF;boV&`sL9%UBRxMpXd<)2_QYvb#HXXL-qvwT8~ikI_Pl(A?HjJ+I3a`xu~O4U zPOayMfv?%SJB7#>Hb38RZSspjeM!n9Eme;_gI+j8_lbSH{X&dFF~E-4l#~LcC>p`N z+jevR!4EKh4-if6#ki#w04Y2Yp;!aLXoRwn(y%7vlJg}>3J`+zPJwk{pVzAUp;RCg zZ$P*vv3i4mC@O-{MNHt+Ke~xBt3<@opamH4vQzvvzQX%|z65~};RpmoR|71vcvx7XuBIV>f{o!Ao0?(- z8=jz;FYxh{B)YRu}ns; z3%Bn$>5bea(=9T+ojumipKcWe5(KQ;=!jwAsJ@3k4DPb=fAbF@zBcB0Ue8+q0000< KMNUMnLSTY~uBcN0 literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/emoticons/face-devilish.png b/scripts/communityModules/chat/emoticons/face-devilish.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2cd4584d20c2add45d249ce4c93b444bbb0426 GIT binary patch literal 855 zcmV-d1E~CoP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00N^)L_t(I%dL~iPZMz%hM$>EcNOT^ItavwVq6MUsYwyz!9=1L4=C{f z9`GOsP5eJR5-%7NMDbuyPQ(B%F)p!gVU6Gd5do1llwwJzQ)cGpK`?kQUVKmQ<$Esg z^GV&2$~NEvzY@(3jZ^^*Kokf7Dc~*8<%?7fuXccI^+O{qQg@_Moa!%U`eB9_jgRBi zRcg$u`EUk($SxU6H_0b-^zT^)-lyWVw~xgD2CgKj9~zMyXSFTbhg*x$f*me=66dBfnHLm0EDriqWv2cDr@&*S*t?yX8xF0iP61+Le z*8^o(GbXNp2PT&qfOZ*(I#mz0A;2k7W$P9I+nzlmJUB>UPY;bku(`LF)4EQuuaCM!g6gp` z0EBL`>IX9LHlN4>u-wsss;Y#;VE_Vw006400x;X!3cyOrU`;3)=vw}kW$(!d3!OKZ z?dieob_3w|`vC}rLL__dGv9HYnu8j-R1TmEz|jqZM}Fi_lyCKyZZB4u9DmKG>TLwH z3aphJUPX}k@|20ItsIK%B0DwB&{QVg1eXBTM5+QFME3f8SvGk0F`WR8H^K04z&c1Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00RL@L_t(I%dO8%Oq+E8$MNs~>GM2&Xw&i{YfT+5W60aKQmT&5xdgYs zfn*YctQt*>iHU}j2hW;t@xGIu6g`>Z!Nr7R#AGocOvMQ+9Uu;USVYzluu$6Pt^db^ zFTuON`}dRl1i(agd;*vPI>1+=RP7;crFJIpAY7=m9Nluy1`enTf{?%_@LuloFLD5Z zzvIsu6TN1-rOD{)ZjA<;6Z-s)9*kZbQ)bP&U{5NgCr>Aoc%*)}ti>K$hr5$!&i1X} zE3DpAfvLts@6wf%@?6)2r$TBd!1m56QpUJBzech@!87R)vF1*^vKx;tEJwbs^(-Ac zT$=)N3eeHpP;2kX41^4$gz9bb_+tjKC+cxrh1Sj(v4$X;G%-SDx(Ab?HvOpmue+dv zuY~K3xE~ZqZy$>gX0eQ069D)qcp`|Z2&$Dm%#x20(c<8H*_U5>Usdpxq9w_%-@(IR zdF=tWzB}N>p)f(sXUp8<`lr9s->sAG4&d6qaUko6Qnky3-%&KADBLZuWtOliB~G7I z8M|cgQ+}I~OCI?}lNT-q80ZON+aARoi~Ae*8PZm2fTo6oBVNm9$j#1E$ZLQg*5omH zt-@f+qdl%NbJJtxM-}in5w&@HJWb@rO!zBru%<>t#Xa8@(o)ey3fpneG=!=lgo`*Pm3R%DHw2p&WAk%PpL0E6ar_-{-50 z4Y%=p@6Slb!gs-bw8@+L++2E^QDsD1`e5&eZwNGu;9I*$*J6A$LxnJ(+^BNxYKru8 zllak5eAgimz0Cg70zeKx0Ni<9-ldgLmqqae$x*ye`_?G(;o z2U|0_+v#a890!uXTwC^)n9;1_?azW{fm9Gu0jZ)i3}f$ln7LdL7*0=f_g~-`@=-&w zFVoncL2o{VqJ{C@L+nStu)q8*f8 literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/emoticons/face-grin.png b/scripts/communityModules/chat/emoticons/face-grin.png new file mode 100644 index 0000000000000000000000000000000000000000..d15cf2d45ae513a4cf72d175f08526643e43327e GIT binary patch literal 905 zcmV;419tq0P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PxXL_t(I%dL}5XcTuChoAq7VnGz4s09%v>mlODMe!qgQA-FZD3O|Vv-lBfOBF)W#u^i56Rk0` zv$ON}Ad$vX4?gGj_q^}n{R!S7*GaqLDXqd4NjzboQIJ7D?+55fb@`{?ofrQJCX}M+ zu1cjF&GlOe#Opu_gF8*>*>Bi`mzlWRpY?-&M=Hbc0zs~mg!)qS*M57<(v1lI^mT-) zfz-frk**7|Mv8?Q9-Z7h=||bT_NYG$pa3XEx@*7bvI4;|3WDwyFW#NBr_2z>%|K^xm9cNmY#fCw`~*_B7F0 zjHqT4HdY{BIn~?i|M~0qpnp$MO0=3yZTNOCLN~Z_{TavhZz6MW6Q?fyNoG$InI9Ut zaAS&C^aJFRs~D-zk#pr%07Vo@2IBPy=_Ax2nSC3OLPIDDnID@$2td%aa}`LS>=3Z( z5pyyLpy6SlR&eg(5HQ65;mb7@;92#XDzCN0pn;94w zprN4w+qTJ_Y(Y9RpiuzObyYgv(}&2A z$b&>-k=kS5y3EEcJD9q;i`m&(bX^A^91a6uSr)=~nHoGmVqF_{?iwPb_5i5Iv+~}y z<)bZ&Yu8n;j600{F@&aqQB^~^>56 zDYw7otKF6!tKiA_2##t{_DZN)fS~t+>iA;Zmqi|*KQt*UeeMh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00QGlL_t(I%dM0DYt(fd#~-iv=W`$Lv)yLf-8R3`JTyaDh`akCL%|A- zSRvAINDz%P6@)12FOd2N{3TMyQFE2GBpMNnNRU96ciUW}EnU-^E$`;-=I(O$`P|+6 z-4DkC_1B(1zg|zCUw8_SAeEp`G_RrwV^9bhMb20Z#m|v=^j`jZJW97zNQOIOp_MIr zh;Hvd+4X2|iCfdZ5S+cj;@Ei6*!0HFG58Qc>L}gQ)%Gv<9)4NU^DC5!vmD%g7ev4q zE{#WU8=hiU#3D8DwQhEnd*WwmBnm((B)i_|l7XM**d4t}>SiMob754lj)}Q2Ki^!- zj&&oP{vku`$RQ;@$yEg^m7p)Yt1}dAb$GjLic?=~+ zxAFeLDcm-P=A9j(^fBoJko22mw;p@1MOD8+If4qhh~uKxxQK0IDrK}^!jwvA?*Ycw zRI2;={gaOuVo6$U4B<7AEtE4QkU9_{d$qvGJELqk&_?FREUnKq68m5ih+vG56OMu= zT+6_q#I6Tzz-Z>a%QO1!4W8V*mHXfRMR;us%a@m!`7{H@)LIR=U~2i<2-xl!HvX8QS+;tXr&!2~e z26FxVEa&dg5EV?>$7+0m{P-0J$Pj>voi&O4#ALCQ@xYFvOCIa@In1~Pu3a1Ey3WHs zO|Yd5b~`H>kNo6RF?PlzY8C)-RqyQ!0~a>;98tl@)3m?xJ$A5)x2Um#!umZf?uM7} z?p63>@GC8KRxeZ^-ooe!)on^T+4RhgP}9z5aUxMvpdM2$;4R!De|?1ffmEzT1EOT>7!yETO$D(T9y63;$M+pGygTqi+%tA002ovPDHLkV1hqAuUh~B literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/emoticons/face-monkey.png b/scripts/communityModules/chat/emoticons/face-monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..69db8fa5b5e06ac699018e5c702ca91c8c532018 GIT binary patch literal 784 zcmV+r1MmEaP)L zli!O}br{A!@AsUUvvcN*PRoj2bd{Sd&NeBNKgtoI$b@CrRd8V!1(&)>D!MAN#r}YZ z2&9X;sBZE?K^>w+DXC>41BYZ+*I7!CwJsuQnVoZX&+MG@eZ5h!jDmVDUmiX@ygZMn zD*s3BUk^i-;9$n^l0tuKS?>t9jWC~B&ROKcTD@f-^vk^jLzRN-h<@T4M#?>_e$lh! zGsJok4)?gtUXM#yru#4H0qn5AH1$ z*5pqBn07m^RLi{p_{B#7%kcOF!{ZZZXNBP-$Jlq|7-<~hukAq_4_|4`p$PxJ>I?cnLVR2H#f_{ z!51m`KAI+In$T=EIX!ui{!*E#3#WAMmu9mW+1*o(aKL7t^BLREQobBQf|8?Z||@EY}#5i93I-kp@HX! zqKL2+;(IQ+j0-j;o9W`#!cB}YfA(@q@AtqepMEv{V|1f&1;_6})!>QJ-R06HASO$8 zT`xcXG{-lWuSKeS_D~b|Rf3};^4{L+HgCuFs?+_*IpR+b|c|M;Eh@2BjA=}RjL zZ`SJJM-Kt+*0~RK)WCLyeueb{zX@Em@B_%nTD{fy+b#T8nSZzZv+e+GZy^;e&C$XD O0000Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PQML_t(I%cYY|XjE4ihM(`;Gxuha%p^|882Y2FwwR=C7CKI+)QX!z zMK@hU!G$`DnoU}YQ0Sr{-Lw`#5dRpYEwzhMf(-?Y6bmi2Bq5Hm!~{XRi4@aLnPieN z$=shg$3>9VWa+d1zL$6LKEf)-`pK(E^-3TaB1xf{wXP|e7z5eU=Ihn>^1sI( zyC>K7=6+)BU7(sEm?QjWlJdwU{=Ri>)VQWEdxnW80>=93aUROG&JWI}y;K4-_Y2}^ zuo|KO8wAjj!=J5i_sdU8Cdu2|Pnih-1)zKio$sGc$J}Y`;xLkU7Lpqw@f;*KAc<#S zp@?gzdHK+>v@Dy#;|6N1pM1x*cXIB!CUAh}O-N%0;w2ET5pkQ5cp7Pb0UV2$jI+M` zt=!F{IuD>!NN?MYeVF-S!~uzEz8xIr`1$M5xPi~kUFYJDw~)jpz{i$;BbD8YU9R^6 zDDla}+Pe`GB9059862AA>d$vTV*Gw%n#;fb1){(L(GszAH?nLq0GfzYWEPRIf{oTA z^@tz7It)sncAue(hq1nooxhDli`ZHjyk>|o-4>3%cZ9n4B3J{aj#K%A*vwDZ#d&1&A<83{k+?Ge(aMmD zM;O_1;8@NLC$ZHj&>o@`SPM~z4QiNLfFxfbh`+|Y!4spI0&n~`q*k}@?l+&7e5VU} z{s1fo*lGp4Fo$_qg+Nd*9VBdgl|R2fQBtj5-x?RjKXQA_d{9Vt?Z~xd_n^~Vh?fMv zLO3%;dF%?Md!wVO)$7~(g+H+-;4#GyojkRAuhhs8v0`IfiV}AQww;XD*!a{u0{u56 U&))pRivR!s07*qoM6N<$f*0eM>Hq)$ literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/emoticons/face-sad.png b/scripts/communityModules/chat/emoticons/face-sad.png new file mode 100644 index 0000000000000000000000000000000000000000..fa258956ae0f075e793bd2451d58989703c6563c GIT binary patch literal 918 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 literal 0 HcmV?d00001 diff --git a/scripts/communityModules/chat/emoticons/face-wink.png b/scripts/communityModules/chat/emoticons/face-wink.png new file mode 100644 index 0000000000000000000000000000000000000000..46be685577ce2122c83c5190cd1c6dedb87ef82c GIT binary patch literal 914 zcmV;D18w|?P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q1gL_t(I%cYY~Xp?6g$3M^WzIoGFO>1gmZAFGtY-`OxW6ZQ}LMJSA zf*`f9gVM`->By(C~S;QFo!X`2-2ws^`fBDL0h`4u2tzs2cs%xMw_OtZQg%* z9uGmB_PFo)_xtkY`$zB=#{21&zU&sRNZ^YICPi(jtO_uk98y2MeJ}p=7?+O7G$y-J z4f}csL|Z}Df;*4*^geT=7y0MzjWK1ZzT^)~y+JVEPuy4(H(CbH#DbAEsQFt6!vt-D z@1k87>QXqx61gA0ET}LCcYm*@03?8P$h3Su6bo3hX!{-_{4Rvwfi)W;ya`da8J4E8 z^ekJCpN@&L%Dhq_$NTAR-1TwFT3ZVS5Ud4Nfn^sF-p;_+x4D_kBiHQ&LlX>#Sl_lk z_4^647eGpn?uL$|sD%-P0XKhr!guE;N%WitQ!+B~h{@b@Ff7197w!;Aeu6Gnx&ch# zkO)NEP>=5*42#Z#?Q|a6%!!i%sIWJ&iO$ZCs&;9>UnUT1LzH!*>VZ$hS4(KG#PrNl zsQ9llvL7-uIKX=?G4#Sca(_Pqy9mM6;1dBbF)5n5CR%Y`aP9VWM*m2Y+FhV=eI4bp z$Dh+vMC$^aJ)h-pM>AU@OK7_UCPe^K*N}Dd6KUzV97%u3qbDUUUHOH{oX2e5p*dDd z`?e-}(s9}nhY-bE`1uFukjR3@q{bMY8@ZT{esF;1XFszp9wD{o0A^@AQfxrfG=XoU z7iLh;e?u9om>a!{2pPlRSBsSWjL~hMo=#cbeJab7U|I+%k-iDOhjwk0U5(WZ?O^8e z;8-HV`>%^sZ}sKQeN}LbR*a@&$VH7PEumk`qZa=KS0J|>!&}wPUl#@ovOd_iVha/, + singlet = /^\w+$/; + + function find(selector, context) { + context = context || doc; + var elems = classMatch.test(selector) ? context.getElementsByClassName(selector.slice(1)) : singlet.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector); + return elems; + } + + var frag; + function parseHTML(str) { + if (!frag) { + frag = doc.implementation.createHTMLDocument(null); + var base = frag.createElement("base"); + base.href = doc.location.href; + frag.head.appendChild(base); + } + + frag.body.innerHTML = str; + + return frag.body.childNodes; + } + + function onReady(fn) { + if (doc.readyState !== "loading") { + fn(); + } else { + doc.addEventListener("DOMContentLoaded", fn); + } + } + + function Init(selector, context) { + if (!selector) { + return this; + } + + // If already a cash collection, don't do any further processing + if (selector.cash && selector !== win) { + return selector; + } + + var elems = selector, + i = 0, + length; + + if (isString(selector)) { + elems = idMatch.test(selector) ? + // If an ID use the faster getElementById check + doc.getElementById(selector.slice(1)) : htmlMatch.test(selector) ? + // If HTML, parse it into real elements + parseHTML(selector) : + // else use `find` + find(selector, context); + + // If function, use as shortcut for DOM ready + } else if (isFunction(selector)) { + onReady(selector);return this; + } + + if (!elems) { + return this; + } + + // If a single DOM element is passed in or received via ID, return the single element + if (elems.nodeType || elems === win) { + this[0] = elems; + this.length = 1; + } else { + // Treat like an array and loop through each item. + length = this.length = elems.length; + for (; i < length; i++) { + this[i] = elems[i]; + } + } + + return this; + } + + function cash(selector, context) { + return new Init(selector, context); + } + + var fn = cash.fn = cash.prototype = Init.prototype = { // jshint ignore:line + cash: true, + length: 0, + push: push, + splice: ArrayProto.splice, + map: ArrayProto.map, + init: Init + }; + + Object.defineProperty(fn, "constructor", { value: cash }); + + cash.parseHTML = parseHTML; + cash.noop = noop; + cash.isFunction = isFunction; + cash.isString = isString; + + cash.extend = fn.extend = function (target) { + target = target || {}; + + var args = slice.call(arguments), + length = args.length, + i = 1; + + if (args.length === 1) { + target = this; + i = 0; + } + + for (; i < length; i++) { + if (!args[i]) { + continue; + } + for (var key in args[i]) { + if (args[i].hasOwnProperty(key)) { + target[key] = args[i][key]; + } + } + } + + return target; + }; + + function each(collection, callback) { + var l = collection.length, + i = 0; + + for (; i < l; i++) { + if (callback.call(collection[i], collection[i], i, collection) === false) { + break; + } + } + } + + function matches(el, selector) { + var m = el && (el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector); + return !!m && m.call(el, selector); + } + + function getCompareFunction(selector) { + return ( + /* Use browser's `matches` function if string */ + isString(selector) ? matches : + /* Match a cash element */ + selector.cash ? function (el) { + return selector.is(el); + } : + /* Direct comparison */ + function (el, selector) { + return el === selector; + } + ); + } + + function unique(collection) { + return cash(slice.call(collection).filter(function (item, index, self) { + return self.indexOf(item) === index; + })); + } + + cash.extend({ + merge: function (first, second) { + var len = +second.length, + i = first.length, + j = 0; + + for (; j < len; i++, j++) { + first[i] = second[j]; + } + + first.length = i; + return first; + }, + + each: each, + matches: matches, + unique: unique, + isArray: Array.isArray, + isNumeric: function (n) { + return !isNaN(parseFloat(n)) && isFinite(n); + } + + }); + + var uid = cash.uid = "_cash" + Date.now(); + + function getDataCache(node) { + return node[uid] = node[uid] || {}; + } + + function setData(node, key, value) { + return getDataCache(node)[key] = value; + } + + function getData(node, key) { + var c = getDataCache(node); + if (c[key] === undefined) { + c[key] = node.dataset ? node.dataset[key] : cash(node).attr("data-" + key); + } + return c[key]; + } + + function removeData(node, key) { + var c = getDataCache(node); + if (c) { + delete c[key]; + } else if (node.dataset) { + delete node.dataset[key]; + } else { + cash(node).removeAttr("data-" + name); + } + } + + fn.extend({ + data: function (name, value) { + if (isString(name)) { + return value === undefined ? getData(this[0], name) : this.each(function (v) { + return setData(v, name, value); + }); + } + + for (var key in name) { + this.data(key, name[key]); + } + + return this; + }, + + removeData: function (key) { + return this.each(function (v) { + return removeData(v, key); + }); + } + + }); + + var notWhiteMatch = /\S+/g; + + function getClasses(c) { + return isString(c) && c.match(notWhiteMatch); + } + + function hasClass(v, c) { + return v.classList ? v.classList.contains(c) : new RegExp("(^| )" + c + "( |$)", "gi").test(v.className); + } + + function addClass(v, c, spacedName) { + if (v.classList) { + v.classList.add(c); + } else if (spacedName.indexOf(" " + c + " ")) { + v.className += " " + c; + } + } + + function removeClass(v, c) { + if (v.classList) { + v.classList.remove(c); + } else { + v.className = v.className.replace(c, ""); + } + } + + fn.extend({ + addClass: function (c) { + var classes = getClasses(c); + + return classes ? this.each(function (v) { + var spacedName = " " + v.className + " "; + each(classes, function (c) { + addClass(v, c, spacedName); + }); + }) : this; + }, + + attr: function (name, value) { + if (!name) { + return undefined; + } + + if (isString(name)) { + if (value === undefined) { + return this[0] ? this[0].getAttribute ? this[0].getAttribute(name) : this[0][name] : undefined; + } + + return this.each(function (v) { + if (v.setAttribute) { + v.setAttribute(name, value); + } else { + v[name] = value; + } + }); + } + + for (var key in name) { + this.attr(key, name[key]); + } + + return this; + }, + + hasClass: function (c) { + var check = false, + classes = getClasses(c); + if (classes && classes.length) { + this.each(function (v) { + check = hasClass(v, classes[0]); + return !check; + }); + } + return check; + }, + + prop: function (name, value) { + if (isString(name)) { + return value === undefined ? this[0][name] : this.each(function (v) { + v[name] = value; + }); + } + + for (var key in name) { + this.prop(key, name[key]); + } + + return this; + }, + + removeAttr: function (name) { + return this.each(function (v) { + if (v.removeAttribute) { + v.removeAttribute(name); + } else { + delete v[name]; + } + }); + }, + + removeClass: function (c) { + if (!arguments.length) { + return this.attr("class", ""); + } + var classes = getClasses(c); + return classes ? this.each(function (v) { + each(classes, function (c) { + removeClass(v, c); + }); + }) : this; + }, + + removeProp: function (name) { + return this.each(function (v) { + delete v[name]; + }); + }, + + toggleClass: function (c, state) { + if (state !== undefined) { + return this[state ? "addClass" : "removeClass"](c); + } + var classes = getClasses(c); + return classes ? this.each(function (v) { + var spacedName = " " + v.className + " "; + each(classes, function (c) { + if (hasClass(v, c)) { + removeClass(v, c); + } else { + addClass(v, c, spacedName); + } + }); + }) : this; + } }); + + fn.extend({ + add: function (selector, context) { + return unique(cash.merge(this, cash(selector, context))); + }, + + each: function (callback) { + each(this, callback); + return this; + }, + + eq: function (index) { + return cash(this.get(index)); + }, + + filter: function (selector) { + if (!selector) { + return this; + } + + var comparator = isFunction(selector) ? selector : getCompareFunction(selector); + + return cash(filter.call(this, function (e) { + return comparator(e, selector); + })); + }, + + first: function () { + return this.eq(0); + }, + + get: function (index) { + if (index === undefined) { + return slice.call(this); + } + return index < 0 ? this[index + this.length] : this[index]; + }, + + index: function (elem) { + var child = elem ? cash(elem)[0] : this[0], + collection = elem ? this : cash(child).parent().children(); + return slice.call(collection).indexOf(child); + }, + + last: function () { + return this.eq(-1); + } + + }); + + var camelCase = function () { + var camelRegex = /(?:^\w|[A-Z]|\b\w)/g, + whiteSpace = /[\s-_]+/g; + return function (str) { + return str.replace(camelRegex, function (letter, index) { + return letter[index === 0 ? "toLowerCase" : "toUpperCase"](); + }).replace(whiteSpace, ""); + }; + }(); + + var getPrefixedProp = function () { + var cache = {}, + doc = document, + div = doc.createElement("div"), + style = div.style; + + return function (prop) { + prop = camelCase(prop); + if (cache[prop]) { + return cache[prop]; + } + + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + prefixes = ["webkit", "moz", "ms", "o"], + props = (prop + " " + prefixes.join(ucProp + " ") + ucProp).split(" "); + + each(props, function (p) { + if (p in style) { + cache[p] = prop = cache[prop] = p; + return false; + } + }); + + return cache[prop]; + }; + }(); + + cash.prefixedProp = getPrefixedProp; + cash.camelCase = camelCase; + + fn.extend({ + css: function (prop, value) { + if (isString(prop)) { + prop = getPrefixedProp(prop); + return arguments.length > 1 ? this.each(function (v) { + return v.style[prop] = value; + }) : win.getComputedStyle(this[0])[prop]; + } + + for (var key in prop) { + this.css(key, prop[key]); + } + + return this; + } + + }); + + function compute(el, prop) { + return parseInt(win.getComputedStyle(el[0], null)[prop], 10) || 0; + } + + each(["Width", "Height"], function (v) { + var lower = v.toLowerCase(); + + fn[lower] = function () { + return this[0].getBoundingClientRect()[lower]; + }; + + fn["inner" + v] = function () { + return this[0]["client" + v]; + }; + + fn["outer" + v] = function (margins) { + return this[0]["offset" + v] + (margins ? compute(this, "margin" + (v === "Width" ? "Left" : "Top")) + compute(this, "margin" + (v === "Width" ? "Right" : "Bottom")) : 0); + }; + }); + + function registerEvent(node, eventName, callback) { + var eventCache = getData(node, "_cashEvents") || setData(node, "_cashEvents", {}); + eventCache[eventName] = eventCache[eventName] || []; + eventCache[eventName].push(callback); + node.addEventListener(eventName, callback); + } + + function removeEvent(node, eventName, callback) { + var events = getData(node, "_cashEvents"), + eventCache = events && events[eventName], + index; + + if (!eventCache) { + return; + } + + if (callback) { + node.removeEventListener(eventName, callback); + index = eventCache.indexOf(callback); + if (index >= 0) { + eventCache.splice(index, 1); + } + } else { + each(eventCache, function (event) { + node.removeEventListener(eventName, event); + }); + eventCache = []; + } + } + + fn.extend({ + off: function (eventName, callback) { + return this.each(function (v) { + return removeEvent(v, eventName, callback); + }); + }, + + on: function (eventName, delegate, callback, runOnce) { + // jshint ignore:line + var originalCallback; + if (!isString(eventName)) { + for (var key in eventName) { + this.on(key, delegate, eventName[key]); + } + return this; + } + + if (isFunction(delegate)) { + callback = delegate; + delegate = null; + } + + if (eventName === "ready") { + onReady(callback); + return this; + } + + if (delegate) { + originalCallback = callback; + callback = function (e) { + var t = e.target; + while (!matches(t, delegate)) { + if (t === this || t === null) { + return t = false; + } + + t = t.parentNode; + } + + if (t) { + originalCallback.call(t, e); + } + }; + } + + return this.each(function (v) { + var finalCallback = callback; + if (runOnce) { + finalCallback = function () { + callback.apply(this, arguments); + removeEvent(v, eventName, finalCallback); + }; + } + registerEvent(v, eventName, finalCallback); + }); + }, + + one: function (eventName, delegate, callback) { + return this.on(eventName, delegate, callback, true); + }, + + ready: onReady, + + /** + * Modified + * Triggers browser event + * @param String eventName + * @param Object data - Add properties to event object + */ + trigger: function (eventName, data) { + if (document.createEvent) { + var evt = document.createEvent('HTMLEvents'); + evt.initEvent(eventName, true, false); + evt = this.extend(evt, data); + return this.each(function (v) { + return v.dispatchEvent(evt); + }); + } + } + + }); + + function encode(name, value) { + return "&" + encodeURIComponent(name) + "=" + encodeURIComponent(value).replace(/%20/g, "+"); + } + + function getSelectMultiple_(el) { + var values = []; + each(el.options, function (o) { + if (o.selected) { + values.push(o.value); + } + }); + return values.length ? values : null; + } + + function getSelectSingle_(el) { + var selectedIndex = el.selectedIndex; + return selectedIndex >= 0 ? el.options[selectedIndex].value : null; + } + + function getValue(el) { + var type = el.type; + if (!type) { + return null; + } + switch (type.toLowerCase()) { + case "select-one": + return getSelectSingle_(el); + case "select-multiple": + return getSelectMultiple_(el); + case "radio": + return el.checked ? el.value : null; + case "checkbox": + return el.checked ? el.value : null; + default: + return el.value ? el.value : null; + } + } + + fn.extend({ + serialize: function () { + var query = ""; + + each(this[0].elements || this, function (el) { + if (el.disabled || el.tagName === "FIELDSET") { + return; + } + var name = el.name; + switch (el.type.toLowerCase()) { + case "file": + case "reset": + case "submit": + case "button": + break; + case "select-multiple": + var values = getValue(el); + if (values !== null) { + each(values, function (value) { + query += encode(name, value); + }); + } + break; + default: + var value = getValue(el); + if (value !== null) { + query += encode(name, value); + } + } + }); + + return query.substr(1); + }, + + val: function (value) { + if (value === undefined) { + return getValue(this[0]); + } + + return this.each(function (v) { + return v.value = value; + }); + } + + }); + + function insertElement(el, child, prepend) { + if (prepend) { + var first = el.childNodes[0]; + el.insertBefore(child, first); + } else { + el.appendChild(child); + } + } + + function insertContent(parent, child, prepend) { + var str = isString(child); + + if (!str && child.length) { + each(child, function (v) { + return insertContent(parent, v, prepend); + }); + return; + } + + each(parent, str ? function (v) { + return v.insertAdjacentHTML(prepend ? "afterbegin" : "beforeend", child); + } : function (v, i) { + return insertElement(v, i === 0 ? child : child.cloneNode(true), prepend); + }); + } + + fn.extend({ + after: function (selector) { + cash(selector).insertAfter(this); + return this; + }, + + append: function (content) { + insertContent(this, content); + return this; + }, + + appendTo: function (parent) { + insertContent(cash(parent), this); + return this; + }, + + before: function (selector) { + cash(selector).insertBefore(this); + return this; + }, + + clone: function () { + return cash(this.map(function (v) { + return v.cloneNode(true); + })); + }, + + empty: function () { + this.html(""); + return this; + }, + + html: function (content) { + if (content === undefined) { + return this[0].innerHTML; + } + var source = content.nodeType ? content[0].outerHTML : content; + return this.each(function (v) { + return v.innerHTML = source; + }); + }, + + insertAfter: function (selector) { + var _this = this; + + cash(selector).each(function (el, i) { + var parent = el.parentNode, + sibling = el.nextSibling; + _this.each(function (v) { + parent.insertBefore(i === 0 ? v : v.cloneNode(true), sibling); + }); + }); + + return this; + }, + + insertBefore: function (selector) { + var _this2 = this; + cash(selector).each(function (el, i) { + var parent = el.parentNode; + _this2.each(function (v) { + parent.insertBefore(i === 0 ? v : v.cloneNode(true), el); + }); + }); + return this; + }, + + prepend: function (content) { + insertContent(this, content, true); + return this; + }, + + prependTo: function (parent) { + insertContent(cash(parent), this, true); + return this; + }, + + remove: function () { + return this.each(function (v) { + if (!!v.parentNode) { + return v.parentNode.removeChild(v); + } + }); + }, + + text: function (content) { + if (content === undefined) { + return this[0].textContent; + } + return this.each(function (v) { + return v.textContent = content; + }); + } + + }); + + var docEl = doc.documentElement; + + fn.extend({ + position: function () { + var el = this[0]; + return { + left: el.offsetLeft, + top: el.offsetTop + }; + }, + + offset: function () { + var rect = this[0].getBoundingClientRect(); + return { + top: rect.top + win.pageYOffset - docEl.clientTop, + left: rect.left + win.pageXOffset - docEl.clientLeft + }; + }, + + offsetParent: function () { + return cash(this[0].offsetParent); + } + + }); + + fn.extend({ + children: function (selector) { + var elems = []; + this.each(function (el) { + push.apply(elems, el.children); + }); + elems = unique(elems); + + return !selector ? elems : elems.filter(function (v) { + return matches(v, selector); + }); + }, + + closest: function (selector) { + if (!selector || this.length < 1) { + return cash(); + } + if (this.is(selector)) { + return this.filter(selector); + } + return this.parent().closest(selector); + }, + + is: function (selector) { + if (!selector) { + return false; + } + + var match = false, + comparator = getCompareFunction(selector); + + this.each(function (el) { + match = comparator(el, selector); + return !match; + }); + + return match; + }, + + find: function (selector) { + if (!selector || selector.nodeType) { + return cash(selector && this.has(selector).length ? selector : null); + } + + var elems = []; + this.each(function (el) { + push.apply(elems, find(selector, el)); + }); + + return unique(elems); + }, + + has: function (selector) { + var comparator = isString(selector) ? function (el) { + return find(selector, el).length !== 0; + } : function (el) { + return el.contains(selector); + }; + + return this.filter(comparator); + }, + + next: function () { + return cash(this[0].nextElementSibling); + }, + + not: function (selector) { + if (!selector) { + return this; + } + + var comparator = getCompareFunction(selector); + + return this.filter(function (el) { + return !comparator(el, selector); + }); + }, + + parent: function () { + var result = []; + + this.each(function (item) { + if (item && item.parentNode) { + result.push(item.parentNode); + } + }); + + return unique(result); + }, + + parents: function (selector) { + var last, + result = []; + + this.each(function (item) { + last = item; + + while (last && last.parentNode && last !== doc.body.parentNode) { + last = last.parentNode; + + if (!selector || selector && matches(last, selector)) { + result.push(last); + } + } + }); + + return unique(result); + }, + + prev: function () { + return cash(this[0].previousElementSibling); + }, + + siblings: function (selector) { + var collection = this.parent().children(selector), + el = this[0]; + + return collection.filter(function (i) { + return i !== el; + }); + } + + }); + + return cash; +}); +; +var Component = function () { + /** + * Generic constructor for all components + * @constructor + * @param {Element} el + * @param {Object} options + */ + function Component(classDef, el, options) { + _classCallCheck(this, Component); + + // Display error if el is valid HTML Element + if (!(el instanceof Element)) { + console.error(Error(el + ' is not an HTML Element')); + } + + // If exists, destroy and reinitialize in child + var ins = classDef.getInstance(el); + if (!!ins) { + ins.destroy(); + } + + this.el = el; + this.$el = cash(el); + } + + /** + * Initializes components + * @param {class} classDef + * @param {Element | NodeList | jQuery} els + * @param {Object} options + */ + + + _createClass(Component, null, [{ + key: "init", + value: function init(classDef, els, options) { + var instances = null; + if (els instanceof Element) { + instances = new classDef(els, options); + } else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) { + var instancesArr = []; + for (var i = 0; i < els.length; i++) { + instancesArr.push(new classDef(els[i], options)); + } + instances = instancesArr; + } + + return instances; + } + }]); + + return Component; +}(); + +; // Required for Meteor package, the use of window prevents export by Meteor +(function (window) { + if (window.Package) { + M = {}; + } else { + window.M = {}; + } + + // Check for jQuery + M.jQueryLoaded = !!window.jQuery; +})(window); + +// AMD +if (typeof define === 'function' && define.amd) { + define('M', [], function () { + return M; + }); + + // Common JS +} else if (typeof exports !== 'undefined' && !exports.nodeType) { + if (typeof module !== 'undefined' && !module.nodeType && module.exports) { + exports = module.exports = M; + } + exports.default = M; +} + +M.version = '1.0.0'; + +M.keys = { + TAB: 9, + ENTER: 13, + ESC: 27, + ARROW_UP: 38, + ARROW_DOWN: 40 +}; + +/** + * TabPress Keydown handler + */ +M.tabPressed = false; +M.keyDown = false; +var docHandleKeydown = function (e) { + M.keyDown = true; + if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) { + M.tabPressed = true; + } +}; +var docHandleKeyup = function (e) { + M.keyDown = false; + if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) { + M.tabPressed = false; + } +}; +var docHandleFocus = function (e) { + if (M.keyDown) { + document.body.classList.add('keyboard-focused'); + } +}; +var docHandleBlur = function (e) { + document.body.classList.remove('keyboard-focused'); +}; +document.addEventListener('keydown', docHandleKeydown, true); +document.addEventListener('keyup', docHandleKeyup, true); +document.addEventListener('focus', docHandleFocus, true); +document.addEventListener('blur', docHandleBlur, true); + +/** + * Initialize jQuery wrapper for plugin + * @param {Class} plugin javascript class + * @param {string} pluginName jQuery plugin name + * @param {string} classRef Class reference name + */ +M.initializeJqueryWrapper = function (plugin, pluginName, classRef) { + jQuery.fn[pluginName] = function (methodOrOptions) { + // Call plugin method if valid method name is passed in + if (plugin.prototype[methodOrOptions]) { + var params = Array.prototype.slice.call(arguments, 1); + + // Getter methods + if (methodOrOptions.slice(0, 3) === 'get') { + var instance = this.first()[0][classRef]; + return instance[methodOrOptions].apply(instance, params); + } + + // Void methods + return this.each(function () { + var instance = this[classRef]; + instance[methodOrOptions].apply(instance, params); + }); + + // Initialize plugin if options or no argument is passed in + } else if (typeof methodOrOptions === 'object' || !methodOrOptions) { + plugin.init(this, arguments[0]); + return this; + } + + // Return error if an unrecognized method name is passed in + jQuery.error("Method " + methodOrOptions + " does not exist on jQuery." + pluginName); + }; +}; + +/** + * Automatically initialize components + * @param {Element} context DOM Element to search within for components + */ +M.AutoInit = function (context) { + // Use document.body if no context is given + var root = !!context ? context : document.body; + + var registry = { + Autocomplete: root.querySelectorAll('.autocomplete:not(.no-autoinit)'), + Carousel: root.querySelectorAll('.carousel:not(.no-autoinit)'), + Chips: root.querySelectorAll('.chips:not(.no-autoinit)'), + Collapsible: root.querySelectorAll('.collapsible:not(.no-autoinit)'), + Datepicker: root.querySelectorAll('.datepicker:not(.no-autoinit)'), + Dropdown: root.querySelectorAll('.dropdown-trigger:not(.no-autoinit)'), + Materialbox: root.querySelectorAll('.materialboxed:not(.no-autoinit)'), + Modal: root.querySelectorAll('.modal:not(.no-autoinit)'), + Parallax: root.querySelectorAll('.parallax:not(.no-autoinit)'), + Pushpin: root.querySelectorAll('.pushpin:not(.no-autoinit)'), + ScrollSpy: root.querySelectorAll('.scrollspy:not(.no-autoinit)'), + FormSelect: root.querySelectorAll('select:not(.no-autoinit)'), + Sidenav: root.querySelectorAll('.sidenav:not(.no-autoinit)'), + Tabs: root.querySelectorAll('.tabs:not(.no-autoinit)'), + TapTarget: root.querySelectorAll('.tap-target:not(.no-autoinit)'), + Timepicker: root.querySelectorAll('.timepicker:not(.no-autoinit)'), + Tooltip: root.querySelectorAll('.tooltipped:not(.no-autoinit)'), + FloatingActionButton: root.querySelectorAll('.fixed-action-btn:not(.no-autoinit)') + }; + + for (var pluginName in registry) { + var plugin = M[pluginName]; + plugin.init(registry[pluginName]); + } +}; + +/** + * Generate approximated selector string for a jQuery object + * @param {jQuery} obj jQuery object to be parsed + * @returns {string} + */ +M.objectSelectorString = function (obj) { + var tagStr = obj.prop('tagName') || ''; + var idStr = obj.attr('id') || ''; + var classStr = obj.attr('class') || ''; + return (tagStr + idStr + classStr).replace(/\s/g, ''); +}; + +// Unique Random ID +M.guid = function () { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); + } + return function () { + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); + }; +}(); + +/** + * Escapes hash from special characters + * @param {string} hash String returned from this.hash + * @returns {string} + */ +M.escapeHash = function (hash) { + return hash.replace(/(:|\.|\[|\]|,|=|\/)/g, '\\$1'); +}; + +M.elementOrParentIsFixed = function (element) { + var $element = $(element); + var $checkElements = $element.add($element.parents()); + var isFixed = false; + $checkElements.each(function () { + if ($(this).css('position') === 'fixed') { + isFixed = true; + return false; + } + }); + return isFixed; +}; + +/** + * @typedef {Object} Edges + * @property {Boolean} top If the top edge was exceeded + * @property {Boolean} right If the right edge was exceeded + * @property {Boolean} bottom If the bottom edge was exceeded + * @property {Boolean} left If the left edge was exceeded + */ + +/** + * @typedef {Object} Bounding + * @property {Number} left left offset coordinate + * @property {Number} top top offset coordinate + * @property {Number} width + * @property {Number} height + */ + +/** + * Escapes hash from special characters + * @param {Element} container Container element that acts as the boundary + * @param {Bounding} bounding element bounding that is being checked + * @param {Number} offset offset from edge that counts as exceeding + * @returns {Edges} + */ +M.checkWithinContainer = function (container, bounding, offset) { + var edges = { + top: false, + right: false, + bottom: false, + left: false + }; + + var containerRect = container.getBoundingClientRect(); + // If body element is smaller than viewport, use viewport height instead. + var containerBottom = container === document.body ? Math.max(containerRect.bottom, window.innerHeight) : containerRect.bottom; + + var scrollLeft = container.scrollLeft; + var scrollTop = container.scrollTop; + + var scrolledX = bounding.left - scrollLeft; + var scrolledY = bounding.top - scrollTop; + + // Check for container and viewport for each edge + if (scrolledX < containerRect.left + offset || scrolledX < offset) { + edges.left = true; + } + + if (scrolledX + bounding.width > containerRect.right - offset || scrolledX + bounding.width > window.innerWidth - offset) { + edges.right = true; + } + + if (scrolledY < containerRect.top + offset || scrolledY < offset) { + edges.top = true; + } + + if (scrolledY + bounding.height > containerBottom - offset || scrolledY + bounding.height > window.innerHeight - offset) { + edges.bottom = true; + } + + return edges; +}; + +M.checkPossibleAlignments = function (el, container, bounding, offset) { + var canAlign = { + top: true, + right: true, + bottom: true, + left: true, + spaceOnTop: null, + spaceOnRight: null, + spaceOnBottom: null, + spaceOnLeft: null + }; + + var containerAllowsOverflow = getComputedStyle(container).overflow === 'visible'; + var containerRect = container.getBoundingClientRect(); + var containerHeight = Math.min(containerRect.height, window.innerHeight); + var containerWidth = Math.min(containerRect.width, window.innerWidth); + var elOffsetRect = el.getBoundingClientRect(); + + var scrollLeft = container.scrollLeft; + var scrollTop = container.scrollTop; + + var scrolledX = bounding.left - scrollLeft; + var scrolledYTopEdge = bounding.top - scrollTop; + var scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop; + + // Check for container and viewport for left + canAlign.spaceOnRight = !containerAllowsOverflow ? containerWidth - (scrolledX + bounding.width) : window.innerWidth - (elOffsetRect.left + bounding.width); + if (canAlign.spaceOnRight < 0) { + canAlign.left = false; + } + + // Check for container and viewport for Right + canAlign.spaceOnLeft = !containerAllowsOverflow ? scrolledX - bounding.width + elOffsetRect.width : elOffsetRect.right - bounding.width; + if (canAlign.spaceOnLeft < 0) { + canAlign.right = false; + } + + // Check for container and viewport for Top + canAlign.spaceOnBottom = !containerAllowsOverflow ? containerHeight - (scrolledYTopEdge + bounding.height + offset) : window.innerHeight - (elOffsetRect.top + bounding.height + offset); + if (canAlign.spaceOnBottom < 0) { + canAlign.top = false; + } + + // Check for container and viewport for Bottom + canAlign.spaceOnTop = !containerAllowsOverflow ? scrolledYBottomEdge - (bounding.height - offset) : elOffsetRect.bottom - (bounding.height + offset); + if (canAlign.spaceOnTop < 0) { + canAlign.bottom = false; + } + + return canAlign; +}; + +M.getOverflowParent = function (element) { + if (element == null) { + return null; + } + + if (element === document.body || getComputedStyle(element).overflow !== 'visible') { + return element; + } + + return M.getOverflowParent(element.parentElement); +}; + +/** + * Gets id of component from a trigger + * @param {Element} trigger trigger + * @returns {string} + */ +M.getIdFromTrigger = function (trigger) { + var id = trigger.getAttribute('data-target'); + if (!id) { + id = trigger.getAttribute('href'); + if (id) { + id = id.slice(1); + } else { + id = ''; + } + } + return id; +}; + +/** + * Multi browser support for document scroll top + * @returns {Number} + */ +M.getDocumentScrollTop = function () { + return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; +}; + +/** + * Multi browser support for document scroll left + * @returns {Number} + */ +M.getDocumentScrollLeft = function () { + return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; +}; + +/** + * @typedef {Object} Edges + * @property {Boolean} top If the top edge was exceeded + * @property {Boolean} right If the right edge was exceeded + * @property {Boolean} bottom If the bottom edge was exceeded + * @property {Boolean} left If the left edge was exceeded + */ + +/** + * @typedef {Object} Bounding + * @property {Number} left left offset coordinate + * @property {Number} top top offset coordinate + * @property {Number} width + * @property {Number} height + */ + +/** + * Get time in ms + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @type {function} + * @return {number} + */ +var getTime = Date.now || function () { + return new Date().getTime(); +}; + +/** + * Returns a function, that, when invoked, will only be triggered at most once + * during a given window of time. Normally, the throttled function will run + * as much as it can, without ever going more than once per `wait` duration; + * but if you'd like to disable the execution on the leading edge, pass + * `{leading: false}`. To disable execution on the trailing edge, ditto. + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @param {function} func + * @param {number} wait + * @param {Object=} options + * @returns {Function} + */ +M.throttle = function (func, wait, options) { + var context = void 0, + args = void 0, + result = void 0; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function () { + previous = options.leading === false ? 0 : getTime(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function () { + var now = getTime(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; +}; +; /* + v2.2.0 + 2017 Julian Garnier + Released under the MIT license + */ +var $jscomp = { scope: {} };$jscomp.defineProperty = "function" == typeof Object.defineProperties ? Object.defineProperty : function (e, r, p) { + if (p.get || p.set) throw new TypeError("ES3 does not support getters and setters.");e != Array.prototype && e != Object.prototype && (e[r] = p.value); +};$jscomp.getGlobal = function (e) { + return "undefined" != typeof window && window === e ? e : "undefined" != typeof global && null != global ? global : e; +};$jscomp.global = $jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX = "jscomp_symbol_"; +$jscomp.initSymbol = function () { + $jscomp.initSymbol = function () {};$jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol); +};$jscomp.symbolCounter_ = 0;$jscomp.Symbol = function (e) { + return $jscomp.SYMBOL_PREFIX + (e || "") + $jscomp.symbolCounter_++; +}; +$jscomp.initSymbolIterator = function () { + $jscomp.initSymbol();var e = $jscomp.global.Symbol.iterator;e || (e = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator"));"function" != typeof Array.prototype[e] && $jscomp.defineProperty(Array.prototype, e, { configurable: !0, writable: !0, value: function () { + return $jscomp.arrayIterator(this); + } });$jscomp.initSymbolIterator = function () {}; +};$jscomp.arrayIterator = function (e) { + var r = 0;return $jscomp.iteratorPrototype(function () { + return r < e.length ? { done: !1, value: e[r++] } : { done: !0 }; + }); +}; +$jscomp.iteratorPrototype = function (e) { + $jscomp.initSymbolIterator();e = { next: e };e[$jscomp.global.Symbol.iterator] = function () { + return this; + };return e; +};$jscomp.array = $jscomp.array || {};$jscomp.iteratorFromArray = function (e, r) { + $jscomp.initSymbolIterator();e instanceof String && (e += "");var p = 0, + m = { next: function () { + if (p < e.length) { + var u = p++;return { value: r(u, e[u]), done: !1 }; + }m.next = function () { + return { done: !0, value: void 0 }; + };return m.next(); + } };m[Symbol.iterator] = function () { + return m; + };return m; +}; +$jscomp.polyfill = function (e, r, p, m) { + if (r) { + p = $jscomp.global;e = e.split(".");for (m = 0; m < e.length - 1; m++) { + var u = e[m];u in p || (p[u] = {});p = p[u]; + }e = e[e.length - 1];m = p[e];r = r(m);r != m && null != r && $jscomp.defineProperty(p, e, { configurable: !0, writable: !0, value: r }); + } +};$jscomp.polyfill("Array.prototype.keys", function (e) { + return e ? e : function () { + return $jscomp.iteratorFromArray(this, function (e) { + return e; + }); + }; +}, "es6-impl", "es3");var $jscomp$this = this; +(function (r) { + M.anime = r(); +})(function () { + function e(a) { + if (!h.col(a)) try { + return document.querySelectorAll(a); + } catch (c) {} + }function r(a, c) { + for (var d = a.length, b = 2 <= arguments.length ? arguments[1] : void 0, f = [], n = 0; n < d; n++) { + if (n in a) { + var k = a[n];c.call(b, k, n, a) && f.push(k); + } + }return f; + }function p(a) { + return a.reduce(function (a, d) { + return a.concat(h.arr(d) ? p(d) : d); + }, []); + }function m(a) { + if (h.arr(a)) return a; + h.str(a) && (a = e(a) || a);return a instanceof NodeList || a instanceof HTMLCollection ? [].slice.call(a) : [a]; + }function u(a, c) { + return a.some(function (a) { + return a === c; + }); + }function C(a) { + var c = {}, + d;for (d in a) { + c[d] = a[d]; + }return c; + }function D(a, c) { + var d = C(a), + b;for (b in a) { + d[b] = c.hasOwnProperty(b) ? c[b] : a[b]; + }return d; + }function z(a, c) { + var d = C(a), + b;for (b in c) { + d[b] = h.und(a[b]) ? c[b] : a[b]; + }return d; + }function T(a) { + a = a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (a, c, d, k) { + return c + c + d + d + k + k; + });var c = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a); + a = parseInt(c[1], 16);var d = parseInt(c[2], 16), + c = parseInt(c[3], 16);return "rgba(" + a + "," + d + "," + c + ",1)"; + }function U(a) { + function c(a, c, b) { + 0 > b && (b += 1);1 < b && --b;return b < 1 / 6 ? a + 6 * (c - a) * b : .5 > b ? c : b < 2 / 3 ? a + (c - a) * (2 / 3 - b) * 6 : a; + }var d = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(a) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(a);a = parseInt(d[1]) / 360;var b = parseInt(d[2]) / 100, + f = parseInt(d[3]) / 100, + d = d[4] || 1;if (0 == b) f = b = a = f;else { + var n = .5 > f ? f * (1 + b) : f + b - f * b, + k = 2 * f - n, + f = c(k, n, a + 1 / 3), + b = c(k, n, a);a = c(k, n, a - 1 / 3); + }return "rgba(" + 255 * f + "," + 255 * b + "," + 255 * a + "," + d + ")"; + }function y(a) { + if (a = /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(a)) return a[2]; + }function V(a) { + if (-1 < a.indexOf("translate") || "perspective" === a) return "px";if (-1 < a.indexOf("rotate") || -1 < a.indexOf("skew")) return "deg"; + }function I(a, c) { + return h.fnc(a) ? a(c.target, c.id, c.total) : a; + }function E(a, c) { + if (c in a.style) return getComputedStyle(a).getPropertyValue(c.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()) || "0"; + }function J(a, c) { + if (h.dom(a) && u(W, c)) return "transform";if (h.dom(a) && (a.getAttribute(c) || h.svg(a) && a[c])) return "attribute";if (h.dom(a) && "transform" !== c && E(a, c)) return "css";if (null != a[c]) return "object"; + }function X(a, c) { + var d = V(c), + d = -1 < c.indexOf("scale") ? 1 : 0 + d;a = a.style.transform;if (!a) return d;for (var b = [], f = [], n = [], k = /(\w+)\((.+?)\)/g; b = k.exec(a);) { + f.push(b[1]), n.push(b[2]); + }a = r(n, function (a, b) { + return f[b] === c; + });return a.length ? a[0] : d; + }function K(a, c) { + switch (J(a, c)) {case "transform": + return X(a, c);case "css": + return E(a, c);case "attribute": + return a.getAttribute(c);}return a[c] || 0; + }function L(a, c) { + var d = /^(\*=|\+=|-=)/.exec(a);if (!d) return a;var b = y(a) || 0;c = parseFloat(c);a = parseFloat(a.replace(d[0], ""));switch (d[0][0]) {case "+": + return c + a + b;case "-": + return c - a + b;case "*": + return c * a + b;} + }function F(a, c) { + return Math.sqrt(Math.pow(c.x - a.x, 2) + Math.pow(c.y - a.y, 2)); + }function M(a) { + a = a.points;for (var c = 0, d, b = 0; b < a.numberOfItems; b++) { + var f = a.getItem(b);0 < b && (c += F(d, f));d = f; + }return c; + }function N(a) { + if (a.getTotalLength) return a.getTotalLength();switch (a.tagName.toLowerCase()) {case "circle": + return 2 * Math.PI * a.getAttribute("r");case "rect": + return 2 * a.getAttribute("width") + 2 * a.getAttribute("height");case "line": + return F({ x: a.getAttribute("x1"), y: a.getAttribute("y1") }, { x: a.getAttribute("x2"), y: a.getAttribute("y2") });case "polyline": + return M(a);case "polygon": + var c = a.points;return M(a) + F(c.getItem(c.numberOfItems - 1), c.getItem(0));} + }function Y(a, c) { + function d(b) { + b = void 0 === b ? 0 : b;return a.el.getPointAtLength(1 <= c + b ? c + b : 0); + }var b = d(), + f = d(-1), + n = d(1);switch (a.property) {case "x": + return b.x;case "y": + return b.y; + case "angle": + return 180 * Math.atan2(n.y - f.y, n.x - f.x) / Math.PI;} + }function O(a, c) { + var d = /-?\d*\.?\d+/g, + b;b = h.pth(a) ? a.totalLength : a;if (h.col(b)) { + if (h.rgb(b)) { + var f = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(b);b = f ? "rgba(" + f[1] + ",1)" : b; + } else b = h.hex(b) ? T(b) : h.hsl(b) ? U(b) : void 0; + } else f = (f = y(b)) ? b.substr(0, b.length - f.length) : b, b = c && !/\s/g.test(b) ? f + c : f;b += "";return { original: b, numbers: b.match(d) ? b.match(d).map(Number) : [0], strings: h.str(a) || c ? b.split(d) : [] }; + }function P(a) { + a = a ? p(h.arr(a) ? a.map(m) : m(a)) : [];return r(a, function (a, d, b) { + return b.indexOf(a) === d; + }); + }function Z(a) { + var c = P(a);return c.map(function (a, b) { + return { target: a, id: b, total: c.length }; + }); + }function aa(a, c) { + var d = C(c);if (h.arr(a)) { + var b = a.length;2 !== b || h.obj(a[0]) ? h.fnc(c.duration) || (d.duration = c.duration / b) : a = { value: a }; + }return m(a).map(function (a, b) { + b = b ? 0 : c.delay;a = h.obj(a) && !h.pth(a) ? a : { value: a };h.und(a.delay) && (a.delay = b);return a; + }).map(function (a) { + return z(a, d); + }); + }function ba(a, c) { + var d = {}, + b;for (b in a) { + var f = I(a[b], c);h.arr(f) && (f = f.map(function (a) { + return I(a, c); + }), 1 === f.length && (f = f[0]));d[b] = f; + }d.duration = parseFloat(d.duration);d.delay = parseFloat(d.delay);return d; + }function ca(a) { + return h.arr(a) ? A.apply(this, a) : Q[a]; + }function da(a, c) { + var d;return a.tweens.map(function (b) { + b = ba(b, c);var f = b.value, + e = K(c.target, a.name), + k = d ? d.to.original : e, + k = h.arr(f) ? f[0] : k, + w = L(h.arr(f) ? f[1] : f, k), + e = y(w) || y(k) || y(e);b.from = O(k, e);b.to = O(w, e);b.start = d ? d.end : a.offset;b.end = b.start + b.delay + b.duration;b.easing = ca(b.easing);b.elasticity = (1E3 - Math.min(Math.max(b.elasticity, 1), 999)) / 1E3;b.isPath = h.pth(f);b.isColor = h.col(b.from.original);b.isColor && (b.round = 1);return d = b; + }); + }function ea(a, c) { + return r(p(a.map(function (a) { + return c.map(function (b) { + var c = J(a.target, b.name);if (c) { + var d = da(b, a);b = { type: c, property: b.name, animatable: a, tweens: d, duration: d[d.length - 1].end, delay: d[0].delay }; + } else b = void 0;return b; + }); + })), function (a) { + return !h.und(a); + }); + }function R(a, c, d, b) { + var f = "delay" === a;return c.length ? (f ? Math.min : Math.max).apply(Math, c.map(function (b) { + return b[a]; + })) : f ? b.delay : d.offset + b.delay + b.duration; + }function fa(a) { + var c = D(ga, a), + d = D(S, a), + b = Z(a.targets), + f = [], + e = z(c, d), + k;for (k in a) { + e.hasOwnProperty(k) || "targets" === k || f.push({ name: k, offset: e.offset, tweens: aa(a[k], d) }); + }a = ea(b, f);return z(c, { children: [], animatables: b, animations: a, duration: R("duration", a, c, d), delay: R("delay", a, c, d) }); + }function q(a) { + function c() { + return window.Promise && new Promise(function (a) { + return p = a; + }); + }function d(a) { + return g.reversed ? g.duration - a : a; + }function b(a) { + for (var b = 0, c = {}, d = g.animations, f = d.length; b < f;) { + var e = d[b], + k = e.animatable, + h = e.tweens, + n = h.length - 1, + l = h[n];n && (l = r(h, function (b) { + return a < b.end; + })[0] || l);for (var h = Math.min(Math.max(a - l.start - l.delay, 0), l.duration) / l.duration, w = isNaN(h) ? 1 : l.easing(h, l.elasticity), h = l.to.strings, p = l.round, n = [], m = void 0, m = l.to.numbers.length, t = 0; t < m; t++) { + var x = void 0, + x = l.to.numbers[t], + q = l.from.numbers[t], + x = l.isPath ? Y(l.value, w * x) : q + w * (x - q);p && (l.isColor && 2 < t || (x = Math.round(x * p) / p));n.push(x); + }if (l = h.length) for (m = h[0], w = 0; w < l; w++) { + p = h[w + 1], t = n[w], isNaN(t) || (m = p ? m + (t + p) : m + (t + " ")); + } else m = n[0];ha[e.type](k.target, e.property, m, c, k.id);e.currentValue = m;b++; + }if (b = Object.keys(c).length) for (d = 0; d < b; d++) { + H || (H = E(document.body, "transform") ? "transform" : "-webkit-transform"), g.animatables[d].target.style[H] = c[d].join(" "); + }g.currentTime = a;g.progress = a / g.duration * 100; + }function f(a) { + if (g[a]) g[a](g); + }function e() { + g.remaining && !0 !== g.remaining && g.remaining--; + }function k(a) { + var k = g.duration, + n = g.offset, + w = n + g.delay, + r = g.currentTime, + x = g.reversed, + q = d(a);if (g.children.length) { + var u = g.children, + v = u.length; + if (q >= g.currentTime) for (var G = 0; G < v; G++) { + u[G].seek(q); + } else for (; v--;) { + u[v].seek(q); + } + }if (q >= w || !k) g.began || (g.began = !0, f("begin")), f("run");if (q > n && q < k) b(q);else if (q <= n && 0 !== r && (b(0), x && e()), q >= k && r !== k || !k) b(k), x || e();f("update");a >= k && (g.remaining ? (t = h, "alternate" === g.direction && (g.reversed = !g.reversed)) : (g.pause(), g.completed || (g.completed = !0, f("complete"), "Promise" in window && (p(), m = c()))), l = 0); + }a = void 0 === a ? {} : a;var h, + t, + l = 0, + p = null, + m = c(), + g = fa(a);g.reset = function () { + var a = g.direction, + c = g.loop;g.currentTime = 0;g.progress = 0;g.paused = !0;g.began = !1;g.completed = !1;g.reversed = "reverse" === a;g.remaining = "alternate" === a && 1 === c ? 2 : c;b(0);for (a = g.children.length; a--;) { + g.children[a].reset(); + } + };g.tick = function (a) { + h = a;t || (t = h);k((l + h - t) * q.speed); + };g.seek = function (a) { + k(d(a)); + };g.pause = function () { + var a = v.indexOf(g);-1 < a && v.splice(a, 1);g.paused = !0; + };g.play = function () { + g.paused && (g.paused = !1, t = 0, l = d(g.currentTime), v.push(g), B || ia()); + };g.reverse = function () { + g.reversed = !g.reversed;t = 0;l = d(g.currentTime); + };g.restart = function () { + g.pause(); + g.reset();g.play(); + };g.finished = m;g.reset();g.autoplay && g.play();return g; + }var ga = { update: void 0, begin: void 0, run: void 0, complete: void 0, loop: 1, direction: "normal", autoplay: !0, offset: 0 }, + S = { duration: 1E3, delay: 0, easing: "easeOutElastic", elasticity: 500, round: 0 }, + W = "translateX translateY translateZ rotate rotateX rotateY rotateZ scale scaleX scaleY scaleZ skewX skewY perspective".split(" "), + H, + h = { arr: function (a) { + return Array.isArray(a); + }, obj: function (a) { + return -1 < Object.prototype.toString.call(a).indexOf("Object"); + }, + pth: function (a) { + return h.obj(a) && a.hasOwnProperty("totalLength"); + }, svg: function (a) { + return a instanceof SVGElement; + }, dom: function (a) { + return a.nodeType || h.svg(a); + }, str: function (a) { + return "string" === typeof a; + }, fnc: function (a) { + return "function" === typeof a; + }, und: function (a) { + return "undefined" === typeof a; + }, hex: function (a) { + return (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a) + ); + }, rgb: function (a) { + return (/^rgb/.test(a) + ); + }, hsl: function (a) { + return (/^hsl/.test(a) + ); + }, col: function (a) { + return h.hex(a) || h.rgb(a) || h.hsl(a); + } }, + A = function () { + function a(a, d, b) { + return (((1 - 3 * b + 3 * d) * a + (3 * b - 6 * d)) * a + 3 * d) * a; + }return function (c, d, b, f) { + if (0 <= c && 1 >= c && 0 <= b && 1 >= b) { + var e = new Float32Array(11);if (c !== d || b !== f) for (var k = 0; 11 > k; ++k) { + e[k] = a(.1 * k, c, b); + }return function (k) { + if (c === d && b === f) return k;if (0 === k) return 0;if (1 === k) return 1;for (var h = 0, l = 1; 10 !== l && e[l] <= k; ++l) { + h += .1; + }--l;var l = h + (k - e[l]) / (e[l + 1] - e[l]) * .1, + n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (.001 <= n) { + for (h = 0; 4 > h; ++h) { + n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (0 === n) break;var m = a(l, c, b) - k, + l = l - m / n; + }k = l; + } else if (0 === n) k = l;else { + var l = h, + h = h + .1, + g = 0;do { + m = l + (h - l) / 2, n = a(m, c, b) - k, 0 < n ? h = m : l = m; + } while (1e-7 < Math.abs(n) && 10 > ++g);k = m; + }return a(k, d, f); + }; + } + }; + }(), + Q = function () { + function a(a, b) { + return 0 === a || 1 === a ? a : -Math.pow(2, 10 * (a - 1)) * Math.sin(2 * (a - 1 - b / (2 * Math.PI) * Math.asin(1)) * Math.PI / b); + }var c = "Quad Cubic Quart Quint Sine Expo Circ Back Elastic".split(" "), + d = { In: [[.55, .085, .68, .53], [.55, .055, .675, .19], [.895, .03, .685, .22], [.755, .05, .855, .06], [.47, 0, .745, .715], [.95, .05, .795, .035], [.6, .04, .98, .335], [.6, -.28, .735, .045], a], Out: [[.25, .46, .45, .94], [.215, .61, .355, 1], [.165, .84, .44, 1], [.23, 1, .32, 1], [.39, .575, .565, 1], [.19, 1, .22, 1], [.075, .82, .165, 1], [.175, .885, .32, 1.275], function (b, c) { + return 1 - a(1 - b, c); + }], InOut: [[.455, .03, .515, .955], [.645, .045, .355, 1], [.77, 0, .175, 1], [.86, 0, .07, 1], [.445, .05, .55, .95], [1, 0, 0, 1], [.785, .135, .15, .86], [.68, -.55, .265, 1.55], function (b, c) { + return .5 > b ? a(2 * b, c) / 2 : 1 - a(-2 * b + 2, c) / 2; + }] }, + b = { linear: A(.25, .25, .75, .75) }, + f = {}, + e;for (e in d) { + f.type = e, d[f.type].forEach(function (a) { + return function (d, f) { + b["ease" + a.type + c[f]] = h.fnc(d) ? d : A.apply($jscomp$this, d); + }; + }(f)), f = { type: f.type }; + }return b; + }(), + ha = { css: function (a, c, d) { + return a.style[c] = d; + }, attribute: function (a, c, d) { + return a.setAttribute(c, d); + }, object: function (a, c, d) { + return a[c] = d; + }, transform: function (a, c, d, b, f) { + b[f] || (b[f] = []);b[f].push(c + "(" + d + ")"); + } }, + v = [], + B = 0, + ia = function () { + function a() { + B = requestAnimationFrame(c); + }function c(c) { + var b = v.length;if (b) { + for (var d = 0; d < b;) { + v[d] && v[d].tick(c), d++; + }a(); + } else cancelAnimationFrame(B), B = 0; + }return a; + }();q.version = "2.2.0";q.speed = 1;q.running = v;q.remove = function (a) { + a = P(a);for (var c = v.length; c--;) { + for (var d = v[c], b = d.animations, f = b.length; f--;) { + u(a, b[f].animatable.target) && (b.splice(f, 1), b.length || d.pause()); + } + } + };q.getValue = K;q.path = function (a, c) { + var d = h.str(a) ? e(a)[0] : a, + b = c || 100;return function (a) { + return { el: d, property: a, totalLength: N(d) * (b / 100) }; + }; + };q.setDashoffset = function (a) { + var c = N(a);a.setAttribute("stroke-dasharray", c);return c; + };q.bezier = A;q.easings = Q;q.timeline = function (a) { + var c = q(a);c.pause();c.duration = 0;c.add = function (d) { + c.children.forEach(function (a) { + a.began = !0;a.completed = !0; + });m(d).forEach(function (b) { + var d = z(b, D(S, a || {}));d.targets = d.targets || a.targets;b = c.duration;var e = d.offset;d.autoplay = !1;d.direction = c.direction;d.offset = h.und(e) ? b : L(e, b);c.began = !0;c.completed = !0;c.seek(d.offset);d = q(d);d.began = !0;d.completed = !0;d.duration > b && (c.duration = d.duration);c.children.push(d); + });c.seek(0);c.reset();c.autoplay && c.restart();return c; + };return c; + };q.random = function (a, c) { + return Math.floor(Math.random() * (c - a + 1)) + a; + };return q; +}); +;(function ($, anim) { + 'use strict'; + + var _defaults = { + accordion: true, + onOpenStart: undefined, + onOpenEnd: undefined, + onCloseStart: undefined, + onCloseEnd: undefined, + inDuration: 300, + outDuration: 300 + }; + + /** + * @class + * + */ + + var Collapsible = function (_Component) { + _inherits(Collapsible, _Component); + + /** + * Construct Collapsible instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function Collapsible(el, options) { + _classCallCheck(this, Collapsible); + + var _this3 = _possibleConstructorReturn(this, (Collapsible.__proto__ || Object.getPrototypeOf(Collapsible)).call(this, Collapsible, el, options)); + + _this3.el.M_Collapsible = _this3; + + /** + * Options for the collapsible + * @member Collapsible#options + * @prop {Boolean} [accordion=false] - Type of the collapsible + * @prop {Function} onOpenStart - Callback function called before collapsible is opened + * @prop {Function} onOpenEnd - Callback function called after collapsible is opened + * @prop {Function} onCloseStart - Callback function called before collapsible is closed + * @prop {Function} onCloseEnd - Callback function called after collapsible is closed + * @prop {Number} inDuration - Transition in duration in milliseconds. + * @prop {Number} outDuration - Transition duration in milliseconds. + */ + _this3.options = $.extend({}, Collapsible.defaults, options); + + // Setup tab indices + _this3.$headers = _this3.$el.children('li').children('.collapsible-header'); + _this3.$headers.attr('tabindex', 0); + + _this3._setupEventHandlers(); + + // Open first active + var $activeBodies = _this3.$el.children('li.active').children('.collapsible-body'); + if (_this3.options.accordion) { + // Handle Accordion + $activeBodies.first().css('display', 'block'); + } else { + // Handle Expandables + $activeBodies.css('display', 'block'); + } + return _this3; + } + + _createClass(Collapsible, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this.el.M_Collapsible = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + var _this4 = this; + + this._handleCollapsibleClickBound = this._handleCollapsibleClick.bind(this); + this._handleCollapsibleKeydownBound = this._handleCollapsibleKeydown.bind(this); + this.el.addEventListener('click', this._handleCollapsibleClickBound); + this.$headers.each(function (header) { + header.addEventListener('keydown', _this4._handleCollapsibleKeydownBound); + }); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + var _this5 = this; + + this.el.removeEventListener('click', this._handleCollapsibleClickBound); + this.$headers.each(function (header) { + header.removeEventListener('keydown', _this5._handleCollapsibleKeydownBound); + }); + } + + /** + * Handle Collapsible Click + * @param {Event} e + */ + + }, { + key: "_handleCollapsibleClick", + value: function _handleCollapsibleClick(e) { + var $header = $(e.target).closest('.collapsible-header'); + if (e.target && $header.length) { + var $collapsible = $header.closest('.collapsible'); + if ($collapsible[0] === this.el) { + var $collapsibleLi = $header.closest('li'); + var $collapsibleLis = $collapsible.children('li'); + var isActive = $collapsibleLi[0].classList.contains('active'); + var index = $collapsibleLis.index($collapsibleLi); + + if (isActive) { + this.close(index); + } else { + this.open(index); + } + } + } + } + + /** + * Handle Collapsible Keydown + * @param {Event} e + */ + + }, { + key: "_handleCollapsibleKeydown", + value: function _handleCollapsibleKeydown(e) { + if (e.keyCode === 13) { + this._handleCollapsibleClickBound(e); + } + } + + /** + * Animate in collapsible slide + * @param {Number} index - 0th index of slide + */ + + }, { + key: "_animateIn", + value: function _animateIn(index) { + var _this6 = this; + + var $collapsibleLi = this.$el.children('li').eq(index); + if ($collapsibleLi.length) { + var $body = $collapsibleLi.children('.collapsible-body'); + + anim.remove($body[0]); + $body.css({ + display: 'block', + overflow: 'hidden', + height: 0, + paddingTop: '', + paddingBottom: '' + }); + + var pTop = $body.css('padding-top'); + var pBottom = $body.css('padding-bottom'); + var finalHeight = $body[0].scrollHeight; + $body.css({ + paddingTop: 0, + paddingBottom: 0 + }); + + anim({ + targets: $body[0], + height: finalHeight, + paddingTop: pTop, + paddingBottom: pBottom, + duration: this.options.inDuration, + easing: 'easeInOutCubic', + complete: function (anim) { + $body.css({ + overflow: '', + paddingTop: '', + paddingBottom: '', + height: '' + }); + + // onOpenEnd callback + if (typeof _this6.options.onOpenEnd === 'function') { + _this6.options.onOpenEnd.call(_this6, $collapsibleLi[0]); + } + } + }); + } + } + + /** + * Animate out collapsible slide + * @param {Number} index - 0th index of slide to open + */ + + }, { + key: "_animateOut", + value: function _animateOut(index) { + var _this7 = this; + + var $collapsibleLi = this.$el.children('li').eq(index); + if ($collapsibleLi.length) { + var $body = $collapsibleLi.children('.collapsible-body'); + anim.remove($body[0]); + $body.css('overflow', 'hidden'); + anim({ + targets: $body[0], + height: 0, + paddingTop: 0, + paddingBottom: 0, + duration: this.options.outDuration, + easing: 'easeInOutCubic', + complete: function () { + $body.css({ + height: '', + overflow: '', + padding: '', + display: '' + }); + + // onCloseEnd callback + if (typeof _this7.options.onCloseEnd === 'function') { + _this7.options.onCloseEnd.call(_this7, $collapsibleLi[0]); + } + } + }); + } + } + + /** + * Open Collapsible + * @param {Number} index - 0th index of slide + */ + + }, { + key: "open", + value: function open(index) { + var _this8 = this; + + var $collapsibleLi = this.$el.children('li').eq(index); + if ($collapsibleLi.length && !$collapsibleLi[0].classList.contains('active')) { + // onOpenStart callback + if (typeof this.options.onOpenStart === 'function') { + this.options.onOpenStart.call(this, $collapsibleLi[0]); + } + + // Handle accordion behavior + if (this.options.accordion) { + var $collapsibleLis = this.$el.children('li'); + var $activeLis = this.$el.children('li.active'); + $activeLis.each(function (el) { + var index = $collapsibleLis.index($(el)); + _this8.close(index); + }); + } + + // Animate in + $collapsibleLi[0].classList.add('active'); + this._animateIn(index); + } + } + + /** + * Close Collapsible + * @param {Number} index - 0th index of slide + */ + + }, { + key: "close", + value: function close(index) { + var $collapsibleLi = this.$el.children('li').eq(index); + if ($collapsibleLi.length && $collapsibleLi[0].classList.contains('active')) { + // onCloseStart callback + if (typeof this.options.onCloseStart === 'function') { + this.options.onCloseStart.call(this, $collapsibleLi[0]); + } + + // Animate out + $collapsibleLi[0].classList.remove('active'); + this._animateOut(index); + } + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(Collapsible.__proto__ || Object.getPrototypeOf(Collapsible), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_Collapsible; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return Collapsible; + }(Component); + + M.Collapsible = Collapsible; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(Collapsible, 'collapsible', 'M_Collapsible'); + } +})(cash, M.anime); +;(function ($, anim) { + 'use strict'; + + var _defaults = { + alignment: 'left', + autoFocus: true, + constrainWidth: true, + container: null, + coverTrigger: true, + closeOnClick: true, + hover: false, + inDuration: 150, + outDuration: 250, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + onItemClick: null + }; + + /** + * @class + */ + + var Dropdown = function (_Component2) { + _inherits(Dropdown, _Component2); + + function Dropdown(el, options) { + _classCallCheck(this, Dropdown); + + var _this9 = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, Dropdown, el, options)); + + _this9.el.M_Dropdown = _this9; + Dropdown._dropdowns.push(_this9); + + _this9.id = M.getIdFromTrigger(el); + _this9.dropdownEl = document.getElementById(_this9.id); + _this9.$dropdownEl = $(_this9.dropdownEl); + + /** + * Options for the dropdown + * @member Dropdown#options + * @prop {String} [alignment='left'] - Edge which the dropdown is aligned to + * @prop {Boolean} [autoFocus=true] - Automatically focus dropdown el for keyboard + * @prop {Boolean} [constrainWidth=true] - Constrain width to width of the button + * @prop {Element} container - Container element to attach dropdown to (optional) + * @prop {Boolean} [coverTrigger=true] - Place dropdown over trigger + * @prop {Boolean} [closeOnClick=true] - Close on click of dropdown item + * @prop {Boolean} [hover=false] - Open dropdown on hover + * @prop {Number} [inDuration=150] - Duration of open animation in ms + * @prop {Number} [outDuration=250] - Duration of close animation in ms + * @prop {Function} onOpenStart - Function called when dropdown starts opening + * @prop {Function} onOpenEnd - Function called when dropdown finishes opening + * @prop {Function} onCloseStart - Function called when dropdown starts closing + * @prop {Function} onCloseEnd - Function called when dropdown finishes closing + */ + _this9.options = $.extend({}, Dropdown.defaults, options); + + /** + * Describes open/close state of dropdown + * @type {Boolean} + */ + _this9.isOpen = false; + + /** + * Describes if dropdown content is scrollable + * @type {Boolean} + */ + _this9.isScrollable = false; + + /** + * Describes if touch moving on dropdown content + * @type {Boolean} + */ + _this9.isTouchMoving = false; + + _this9.focusedIndex = -1; + _this9.filterQuery = []; + + // Move dropdown-content after dropdown-trigger + if (!!_this9.options.container) { + $(_this9.options.container).append(_this9.dropdownEl); + } else { + _this9.$el.after(_this9.dropdownEl); + } + + _this9._makeDropdownFocusable(); + _this9._resetFilterQueryBound = _this9._resetFilterQuery.bind(_this9); + _this9._handleDocumentClickBound = _this9._handleDocumentClick.bind(_this9); + _this9._handleDocumentTouchmoveBound = _this9._handleDocumentTouchmove.bind(_this9); + _this9._handleDropdownClickBound = _this9._handleDropdownClick.bind(_this9); + _this9._handleDropdownKeydownBound = _this9._handleDropdownKeydown.bind(_this9); + _this9._handleTriggerKeydownBound = _this9._handleTriggerKeydown.bind(_this9); + _this9._setupEventHandlers(); + return _this9; + } + + _createClass(Dropdown, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._resetDropdownStyles(); + this._removeEventHandlers(); + Dropdown._dropdowns.splice(Dropdown._dropdowns.indexOf(this), 1); + this.el.M_Dropdown = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + // Trigger keydown handler + this.el.addEventListener('keydown', this._handleTriggerKeydownBound); + + // Item click handler + this.dropdownEl.addEventListener('click', this._handleDropdownClickBound); + + // Hover event handlers + if (this.options.hover) { + this._handleMouseEnterBound = this._handleMouseEnter.bind(this); + this.el.addEventListener('mouseenter', this._handleMouseEnterBound); + this._handleMouseLeaveBound = this._handleMouseLeave.bind(this); + this.el.addEventListener('mouseleave', this._handleMouseLeaveBound); + this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeaveBound); + + // Click event handlers + } else { + this._handleClickBound = this._handleClick.bind(this); + this.el.addEventListener('click', this._handleClickBound); + } + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('keydown', this._handleTriggerKeydownBound); + this.dropdownEl.removeEventListener('click', this._handleDropdownClickBound); + + if (this.options.hover) { + this.el.removeEventListener('mouseenter', this._handleMouseEnterBound); + this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound); + this.dropdownEl.removeEventListener('mouseleave', this._handleMouseLeaveBound); + } else { + this.el.removeEventListener('click', this._handleClickBound); + } + } + }, { + key: "_setupTemporaryEventHandlers", + value: function _setupTemporaryEventHandlers() { + // Use capture phase event handler to prevent click + document.body.addEventListener('click', this._handleDocumentClickBound, true); + document.body.addEventListener('touchend', this._handleDocumentClickBound); + document.body.addEventListener('touchmove', this._handleDocumentTouchmoveBound); + this.dropdownEl.addEventListener('keydown', this._handleDropdownKeydownBound); + } + }, { + key: "_removeTemporaryEventHandlers", + value: function _removeTemporaryEventHandlers() { + // Use capture phase event handler to prevent click + document.body.removeEventListener('click', this._handleDocumentClickBound, true); + document.body.removeEventListener('touchend', this._handleDocumentClickBound); + document.body.removeEventListener('touchmove', this._handleDocumentTouchmoveBound); + this.dropdownEl.removeEventListener('keydown', this._handleDropdownKeydownBound); + } + }, { + key: "_handleClick", + value: function _handleClick(e) { + e.preventDefault(); + this.open(); + } + }, { + key: "_handleMouseEnter", + value: function _handleMouseEnter() { + this.open(); + } + }, { + key: "_handleMouseLeave", + value: function _handleMouseLeave(e) { + var toEl = e.toElement || e.relatedTarget; + var leaveToDropdownContent = !!$(toEl).closest('.dropdown-content').length; + var leaveToActiveDropdownTrigger = false; + + var $closestTrigger = $(toEl).closest('.dropdown-trigger'); + if ($closestTrigger.length && !!$closestTrigger[0].M_Dropdown && $closestTrigger[0].M_Dropdown.isOpen) { + leaveToActiveDropdownTrigger = true; + } + + // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content + if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) { + this.close(); + } + } + }, { + key: "_handleDocumentClick", + value: function _handleDocumentClick(e) { + var _this10 = this; + + var $target = $(e.target); + if (this.options.closeOnClick && $target.closest('.dropdown-content').length && !this.isTouchMoving) { + // isTouchMoving to check if scrolling on mobile. + setTimeout(function () { + _this10.close(); + }, 0); + } else if ($target.closest('.dropdown-trigger').length || !$target.closest('.dropdown-content').length) { + setTimeout(function () { + _this10.close(); + }, 0); + } + this.isTouchMoving = false; + } + }, { + key: "_handleTriggerKeydown", + value: function _handleTriggerKeydown(e) { + // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown + if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ENTER) && !this.isOpen) { + e.preventDefault(); + this.open(); + } + } + + /** + * Handle Document Touchmove + * @param {Event} e + */ + + }, { + key: "_handleDocumentTouchmove", + value: function _handleDocumentTouchmove(e) { + var $target = $(e.target); + if ($target.closest('.dropdown-content').length) { + this.isTouchMoving = true; + } + } + + /** + * Handle Dropdown Click + * @param {Event} e + */ + + }, { + key: "_handleDropdownClick", + value: function _handleDropdownClick(e) { + // onItemClick callback + if (typeof this.options.onItemClick === 'function') { + var itemEl = $(e.target).closest('li')[0]; + this.options.onItemClick.call(this, itemEl); + } + } + + /** + * Handle Dropdown Keydown + * @param {Event} e + */ + + }, { + key: "_handleDropdownKeydown", + value: function _handleDropdownKeydown(e) { + if (e.which === M.keys.TAB) { + e.preventDefault(); + this.close(); + + // Navigate down dropdown list + } else if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) && this.isOpen) { + e.preventDefault(); + var direction = e.which === M.keys.ARROW_DOWN ? 1 : -1; + var newFocusedIndex = this.focusedIndex; + var foundNewIndex = false; + do { + newFocusedIndex = newFocusedIndex + direction; + + if (!!this.dropdownEl.children[newFocusedIndex] && this.dropdownEl.children[newFocusedIndex].tabIndex !== -1) { + foundNewIndex = true; + break; + } + } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0); + + if (foundNewIndex) { + this.focusedIndex = newFocusedIndex; + this._focusFocusedItem(); + } + + // ENTER selects choice on focused item + } else if (e.which === M.keys.ENTER && this.isOpen) { + // Search for and ") + ''; + } + }, { + key: "renderRow", + value: function renderRow(days, isRTL, isRowSelected) { + return '' + (isRTL ? days.reverse() : days).join('') + ''; + } + }, { + key: "renderTable", + value: function renderTable(opts, data, randId) { + return '
' + this.renderHead(opts) + this.renderBody(data) + '
'; + } + }, { + key: "renderHead", + value: function renderHead(opts) { + var i = void 0, + arr = []; + for (i = 0; i < 7; i++) { + arr.push("" + this.renderDayName(opts, i, true) + ""); + } + return '' + (opts.isRTL ? arr.reverse() : arr).join('') + ''; + } + }, { + key: "renderBody", + value: function renderBody(rows) { + return '' + rows.join('') + ''; + } + }, { + key: "renderTitle", + value: function renderTitle(instance, c, year, month, refYear, randId) { + var i = void 0, + j = void 0, + arr = void 0, + opts = this.options, + isMinYear = year === opts.minYear, + isMaxYear = year === opts.maxYear, + html = '
', + monthHtml = void 0, + yearHtml = void 0, + prev = true, + next = true; + + for (arr = [], i = 0; i < 12; i++) { + arr.push(''); + } + + monthHtml = ''; + + if ($.isArray(opts.yearRange)) { + i = opts.yearRange[0]; + j = opts.yearRange[1] + 1; + } else { + i = year - opts.yearRange; + j = 1 + year + opts.yearRange; + } + + for (arr = []; i < j && i <= opts.maxYear; i++) { + if (i >= opts.minYear) { + arr.push(""); + } + } + + yearHtml = ""; + + var leftArrow = ''; + html += ""; + + html += '
'; + if (opts.showMonthAfterYear) { + html += yearHtml + monthHtml; + } else { + html += monthHtml + yearHtml; + } + html += '
'; + + if (isMinYear && (month === 0 || opts.minMonth >= month)) { + prev = false; + } + + if (isMaxYear && (month === 11 || opts.maxMonth <= month)) { + next = false; + } + + var rightArrow = ''; + html += ""; + + return html += '
'; + } + + /** + * refresh the HTML + */ + + }, { + key: "draw", + value: function draw(force) { + if (!this.isOpen && !force) { + return; + } + var opts = this.options, + minYear = opts.minYear, + maxYear = opts.maxYear, + minMonth = opts.minMonth, + maxMonth = opts.maxMonth, + html = '', + randId = void 0; + + if (this._y <= minYear) { + this._y = minYear; + if (!isNaN(minMonth) && this._m < minMonth) { + this._m = minMonth; + } + } + if (this._y >= maxYear) { + this._y = maxYear; + if (!isNaN(maxMonth) && this._m > maxMonth) { + this._m = maxMonth; + } + } + + randId = 'datepicker-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2); + + for (var c = 0; c < 1; c++) { + this._renderDateDisplay(); + html += this.renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId); + } + + this.destroySelects(); + + this.calendarEl.innerHTML = html; + + // Init Materialize Select + var yearSelect = this.calendarEl.querySelector('.orig-select-year'); + var monthSelect = this.calendarEl.querySelector('.orig-select-month'); + M.FormSelect.init(yearSelect, { + classes: 'select-year', + dropdownOptions: { container: document.body, constrainWidth: false } + }); + M.FormSelect.init(monthSelect, { + classes: 'select-month', + dropdownOptions: { container: document.body, constrainWidth: false } + }); + + // Add change handlers for select + yearSelect.addEventListener('change', this._handleYearChange.bind(this)); + monthSelect.addEventListener('change', this._handleMonthChange.bind(this)); + + if (typeof this.options.onDraw === 'function') { + this.options.onDraw(this); + } + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + this._handleInputKeydownBound = this._handleInputKeydown.bind(this); + this._handleInputClickBound = this._handleInputClick.bind(this); + this._handleInputChangeBound = this._handleInputChange.bind(this); + this._handleCalendarClickBound = this._handleCalendarClick.bind(this); + this._finishSelectionBound = this._finishSelection.bind(this); + this._handleMonthChange = this._handleMonthChange.bind(this); + this._closeBound = this.close.bind(this); + + this.el.addEventListener('click', this._handleInputClickBound); + this.el.addEventListener('keydown', this._handleInputKeydownBound); + this.el.addEventListener('change', this._handleInputChangeBound); + this.calendarEl.addEventListener('click', this._handleCalendarClickBound); + this.doneBtn.addEventListener('click', this._finishSelectionBound); + this.cancelBtn.addEventListener('click', this._closeBound); + + if (this.options.showClearBtn) { + this._handleClearClickBound = this._handleClearClick.bind(this); + this.clearBtn.addEventListener('click', this._handleClearClickBound); + } + } + }, { + key: "_setupVariables", + value: function _setupVariables() { + var _this56 = this; + + this.$modalEl = $(Datepicker._template); + this.modalEl = this.$modalEl[0]; + + this.calendarEl = this.modalEl.querySelector('.datepicker-calendar'); + + this.yearTextEl = this.modalEl.querySelector('.year-text'); + this.dateTextEl = this.modalEl.querySelector('.date-text'); + if (this.options.showClearBtn) { + this.clearBtn = this.modalEl.querySelector('.datepicker-clear'); + } + this.doneBtn = this.modalEl.querySelector('.datepicker-done'); + this.cancelBtn = this.modalEl.querySelector('.datepicker-cancel'); + + this.formats = { + d: function () { + return _this56.date.getDate(); + }, + dd: function () { + var d = _this56.date.getDate(); + return (d < 10 ? '0' : '') + d; + }, + ddd: function () { + return _this56.options.i18n.weekdaysShort[_this56.date.getDay()]; + }, + dddd: function () { + return _this56.options.i18n.weekdays[_this56.date.getDay()]; + }, + m: function () { + return _this56.date.getMonth() + 1; + }, + mm: function () { + var m = _this56.date.getMonth() + 1; + return (m < 10 ? '0' : '') + m; + }, + mmm: function () { + return _this56.options.i18n.monthsShort[_this56.date.getMonth()]; + }, + mmmm: function () { + return _this56.options.i18n.months[_this56.date.getMonth()]; + }, + yy: function () { + return ('' + _this56.date.getFullYear()).slice(2); + }, + yyyy: function () { + return _this56.date.getFullYear(); + } + }; + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('click', this._handleInputClickBound); + this.el.removeEventListener('keydown', this._handleInputKeydownBound); + this.el.removeEventListener('change', this._handleInputChangeBound); + this.calendarEl.removeEventListener('click', this._handleCalendarClickBound); + } + }, { + key: "_handleInputClick", + value: function _handleInputClick() { + this.open(); + } + }, { + key: "_handleInputKeydown", + value: function _handleInputKeydown(e) { + if (e.which === M.keys.ENTER) { + e.preventDefault(); + this.open(); + } + } + }, { + key: "_handleCalendarClick", + value: function _handleCalendarClick(e) { + if (!this.isOpen) { + return; + } + + var $target = $(e.target); + if (!$target.hasClass('is-disabled')) { + if ($target.hasClass('datepicker-day-button') && !$target.hasClass('is-empty') && !$target.parent().hasClass('is-disabled')) { + this.setDate(new Date(e.target.getAttribute('data-year'), e.target.getAttribute('data-month'), e.target.getAttribute('data-day'))); + if (this.options.autoClose) { + this._finishSelection(); + } + } else if ($target.closest('.month-prev').length) { + this.prevMonth(); + } else if ($target.closest('.month-next').length) { + this.nextMonth(); + } + } + } + }, { + key: "_handleClearClick", + value: function _handleClearClick() { + this.date = null; + this.setInputValue(); + this.close(); + } + }, { + key: "_handleMonthChange", + value: function _handleMonthChange(e) { + this.gotoMonth(e.target.value); + } + }, { + key: "_handleYearChange", + value: function _handleYearChange(e) { + this.gotoYear(e.target.value); + } + + /** + * change view to a specific month (zero-index, e.g. 0: January) + */ + + }, { + key: "gotoMonth", + value: function gotoMonth(month) { + if (!isNaN(month)) { + this.calendars[0].month = parseInt(month, 10); + this.adjustCalendars(); + } + } + + /** + * change view to a specific full year (e.g. "2012") + */ + + }, { + key: "gotoYear", + value: function gotoYear(year) { + if (!isNaN(year)) { + this.calendars[0].year = parseInt(year, 10); + this.adjustCalendars(); + } + } + }, { + key: "_handleInputChange", + value: function _handleInputChange(e) { + var date = void 0; + + // Prevent change event from being fired when triggered by the plugin + if (e.firedBy === this) { + return; + } + if (this.options.parse) { + date = this.options.parse(this.el.value, this.options.format); + } else { + date = new Date(Date.parse(this.el.value)); + } + + if (Datepicker._isDate(date)) { + this.setDate(date); + } + } + }, { + key: "renderDayName", + value: function renderDayName(opts, day, abbr) { + day += opts.firstDay; + while (day >= 7) { + day -= 7; + } + return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day]; + } + + /** + * Set input value to the selected date and close Datepicker + */ + + }, { + key: "_finishSelection", + value: function _finishSelection() { + this.setInputValue(); + this.close(); + } + + /** + * Open Datepicker + */ + + }, { + key: "open", + value: function open() { + if (this.isOpen) { + return; + } + + this.isOpen = true; + if (typeof this.options.onOpen === 'function') { + this.options.onOpen.call(this); + } + this.draw(); + this.modal.open(); + return this; + } + + /** + * Close Datepicker + */ + + }, { + key: "close", + value: function close() { + if (!this.isOpen) { + return; + } + + this.isOpen = false; + if (typeof this.options.onClose === 'function') { + this.options.onClose.call(this); + } + this.modal.close(); + return this; + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(Datepicker.__proto__ || Object.getPrototypeOf(Datepicker), "init", this).call(this, this, els, options); + } + }, { + key: "_isDate", + value: function _isDate(obj) { + return (/Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime()) + ); + } + }, { + key: "_isWeekend", + value: function _isWeekend(date) { + var day = date.getDay(); + return day === 0 || day === 6; + } + }, { + key: "_setToStartOfDay", + value: function _setToStartOfDay(date) { + if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0); + } + }, { + key: "_getDaysInMonth", + value: function _getDaysInMonth(year, month) { + return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; + } + }, { + key: "_isLeapYear", + value: function _isLeapYear(year) { + // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951 + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + } + }, { + key: "_compareDates", + value: function _compareDates(a, b) { + // weak date comparison (use setToStartOfDay(date) to ensure correct result) + return a.getTime() === b.getTime(); + } + }, { + key: "_setToStartOfDay", + value: function _setToStartOfDay(date) { + if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_Datepicker; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return Datepicker; + }(Component); + + Datepicker._template = [''].join(''); + + M.Datepicker = Datepicker; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(Datepicker, 'datepicker', 'M_Datepicker'); + } +})(cash); +;(function ($) { + 'use strict'; + + var _defaults = { + dialRadius: 135, + outerRadius: 105, + innerRadius: 70, + tickRadius: 20, + duration: 350, + container: null, + defaultTime: 'now', // default time, 'now' or '13:14' e.g. + fromNow: 0, // Millisecond offset from the defaultTime + showClearBtn: false, + + // internationalization + i18n: { + cancel: 'Cancel', + clear: 'Clear', + done: 'Ok' + }, + + autoClose: false, // auto close when minute is selected + twelveHour: true, // change to 12 hour AM/PM clock from 24 hour + vibrate: true, // vibrate the device when dragging clock hand + + // Callbacks + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + onSelect: null + }; + + /** + * @class + * + */ + + var Timepicker = function (_Component16) { + _inherits(Timepicker, _Component16); + + function Timepicker(el, options) { + _classCallCheck(this, Timepicker); + + var _this57 = _possibleConstructorReturn(this, (Timepicker.__proto__ || Object.getPrototypeOf(Timepicker)).call(this, Timepicker, el, options)); + + _this57.el.M_Timepicker = _this57; + + _this57.options = $.extend({}, Timepicker.defaults, options); + + _this57.id = M.guid(); + _this57._insertHTMLIntoDOM(); + _this57._setupModal(); + _this57._setupVariables(); + _this57._setupEventHandlers(); + + _this57._clockSetup(); + _this57._pickerSetup(); + return _this57; + } + + _createClass(Timepicker, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this.modal.destroy(); + $(this.modalEl).remove(); + this.el.M_Timepicker = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + this._handleInputKeydownBound = this._handleInputKeydown.bind(this); + this._handleInputClickBound = this._handleInputClick.bind(this); + this._handleClockClickStartBound = this._handleClockClickStart.bind(this); + this._handleDocumentClickMoveBound = this._handleDocumentClickMove.bind(this); + this._handleDocumentClickEndBound = this._handleDocumentClickEnd.bind(this); + + this.el.addEventListener('click', this._handleInputClickBound); + this.el.addEventListener('keydown', this._handleInputKeydownBound); + this.plate.addEventListener('mousedown', this._handleClockClickStartBound); + this.plate.addEventListener('touchstart', this._handleClockClickStartBound); + + $(this.spanHours).on('click', this.showView.bind(this, 'hours')); + $(this.spanMinutes).on('click', this.showView.bind(this, 'minutes')); + } + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('click', this._handleInputClickBound); + this.el.removeEventListener('keydown', this._handleInputKeydownBound); + } + }, { + key: "_handleInputClick", + value: function _handleInputClick() { + this.open(); + } + }, { + key: "_handleInputKeydown", + value: function _handleInputKeydown(e) { + if (e.which === M.keys.ENTER) { + e.preventDefault(); + this.open(); + } + } + }, { + key: "_handleClockClickStart", + value: function _handleClockClickStart(e) { + e.preventDefault(); + var clockPlateBR = this.plate.getBoundingClientRect(); + var offset = { x: clockPlateBR.left, y: clockPlateBR.top }; + + this.x0 = offset.x + this.options.dialRadius; + this.y0 = offset.y + this.options.dialRadius; + this.moved = false; + var clickPos = Timepicker._Pos(e); + this.dx = clickPos.x - this.x0; + this.dy = clickPos.y - this.y0; + + // Set clock hands + this.setHand(this.dx, this.dy, false); + + // Mousemove on document + document.addEventListener('mousemove', this._handleDocumentClickMoveBound); + document.addEventListener('touchmove', this._handleDocumentClickMoveBound); + + // Mouseup on document + document.addEventListener('mouseup', this._handleDocumentClickEndBound); + document.addEventListener('touchend', this._handleDocumentClickEndBound); + } + }, { + key: "_handleDocumentClickMove", + value: function _handleDocumentClickMove(e) { + e.preventDefault(); + var clickPos = Timepicker._Pos(e); + var x = clickPos.x - this.x0; + var y = clickPos.y - this.y0; + this.moved = true; + this.setHand(x, y, false, true); + } + }, { + key: "_handleDocumentClickEnd", + value: function _handleDocumentClickEnd(e) { + var _this58 = this; + + e.preventDefault(); + document.removeEventListener('mouseup', this._handleDocumentClickEndBound); + document.removeEventListener('touchend', this._handleDocumentClickEndBound); + var clickPos = Timepicker._Pos(e); + var x = clickPos.x - this.x0; + var y = clickPos.y - this.y0; + if (this.moved && x === this.dx && y === this.dy) { + this.setHand(x, y); + } + + if (this.currentView === 'hours') { + this.showView('minutes', this.options.duration / 2); + } else if (this.options.autoClose) { + $(this.minutesView).addClass('timepicker-dial-out'); + setTimeout(function () { + _this58.done(); + }, this.options.duration / 2); + } + + if (typeof this.options.onSelect === 'function') { + this.options.onSelect.call(this, this.hours, this.minutes); + } + + // Unbind mousemove event + document.removeEventListener('mousemove', this._handleDocumentClickMoveBound); + document.removeEventListener('touchmove', this._handleDocumentClickMoveBound); + } + }, { + key: "_insertHTMLIntoDOM", + value: function _insertHTMLIntoDOM() { + this.$modalEl = $(Timepicker._template); + this.modalEl = this.$modalEl[0]; + this.modalEl.id = 'modal-' + this.id; + + // Append popover to input by default + var containerEl = document.querySelector(this.options.container); + if (this.options.container && !!containerEl) { + this.$modalEl.appendTo(containerEl); + } else { + this.$modalEl.insertBefore(this.el); + } + } + }, { + key: "_setupModal", + value: function _setupModal() { + var _this59 = this; + + this.modal = M.Modal.init(this.modalEl, { + onOpenStart: this.options.onOpenStart, + onOpenEnd: this.options.onOpenEnd, + onCloseStart: this.options.onCloseStart, + onCloseEnd: function () { + if (typeof _this59.options.onCloseEnd === 'function') { + _this59.options.onCloseEnd.call(_this59); + } + _this59.isOpen = false; + } + }); + } + }, { + key: "_setupVariables", + value: function _setupVariables() { + this.currentView = 'hours'; + this.vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null; + + this._canvas = this.modalEl.querySelector('.timepicker-canvas'); + this.plate = this.modalEl.querySelector('.timepicker-plate'); + + this.hoursView = this.modalEl.querySelector('.timepicker-hours'); + this.minutesView = this.modalEl.querySelector('.timepicker-minutes'); + this.spanHours = this.modalEl.querySelector('.timepicker-span-hours'); + this.spanMinutes = this.modalEl.querySelector('.timepicker-span-minutes'); + this.spanAmPm = this.modalEl.querySelector('.timepicker-span-am-pm'); + this.footer = this.modalEl.querySelector('.timepicker-footer'); + this.amOrPm = 'PM'; + } + }, { + key: "_pickerSetup", + value: function _pickerSetup() { + var $clearBtn = $("").appendTo(this.footer).on('click', this.clear.bind(this)); + if (this.options.showClearBtn) { + $clearBtn.css({ visibility: '' }); + } + + var confirmationBtnsContainer = $('
'); + $('').appendTo(confirmationBtnsContainer).on('click', this.close.bind(this)); + $('').appendTo(confirmationBtnsContainer).on('click', this.done.bind(this)); + confirmationBtnsContainer.appendTo(this.footer); + } + }, { + key: "_clockSetup", + value: function _clockSetup() { + if (this.options.twelveHour) { + this.$amBtn = $('
AM
'); + this.$pmBtn = $('
PM
'); + this.$amBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm); + this.$pmBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm); + } + + this._buildHoursView(); + this._buildMinutesView(); + this._buildSVGClock(); + } + }, { + key: "_buildSVGClock", + value: function _buildSVGClock() { + // Draw clock hands and others + var dialRadius = this.options.dialRadius; + var tickRadius = this.options.tickRadius; + var diameter = dialRadius * 2; + + var svg = Timepicker._createSVGEl('svg'); + svg.setAttribute('class', 'timepicker-svg'); + svg.setAttribute('width', diameter); + svg.setAttribute('height', diameter); + var g = Timepicker._createSVGEl('g'); + g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')'); + var bearing = Timepicker._createSVGEl('circle'); + bearing.setAttribute('class', 'timepicker-canvas-bearing'); + bearing.setAttribute('cx', 0); + bearing.setAttribute('cy', 0); + bearing.setAttribute('r', 4); + var hand = Timepicker._createSVGEl('line'); + hand.setAttribute('x1', 0); + hand.setAttribute('y1', 0); + var bg = Timepicker._createSVGEl('circle'); + bg.setAttribute('class', 'timepicker-canvas-bg'); + bg.setAttribute('r', tickRadius); + g.appendChild(hand); + g.appendChild(bg); + g.appendChild(bearing); + svg.appendChild(g); + this._canvas.appendChild(svg); + + this.hand = hand; + this.bg = bg; + this.bearing = bearing; + this.g = g; + } + }, { + key: "_buildHoursView", + value: function _buildHoursView() { + var $tick = $('
'); + // Hours view + if (this.options.twelveHour) { + for (var i = 1; i < 13; i += 1) { + var tick = $tick.clone(); + var radian = i / 6 * Math.PI; + var radius = this.options.outerRadius; + tick.css({ + left: this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px', + top: this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px' + }); + tick.html(i === 0 ? '00' : i); + this.hoursView.appendChild(tick[0]); + // tick.on(mousedownEvent, mousedown); + } + } else { + for (var _i2 = 0; _i2 < 24; _i2 += 1) { + var _tick = $tick.clone(); + var _radian = _i2 / 6 * Math.PI; + var inner = _i2 > 0 && _i2 < 13; + var _radius = inner ? this.options.innerRadius : this.options.outerRadius; + _tick.css({ + left: this.options.dialRadius + Math.sin(_radian) * _radius - this.options.tickRadius + 'px', + top: this.options.dialRadius - Math.cos(_radian) * _radius - this.options.tickRadius + 'px' + }); + _tick.html(_i2 === 0 ? '00' : _i2); + this.hoursView.appendChild(_tick[0]); + // tick.on(mousedownEvent, mousedown); + } + } + } + }, { + key: "_buildMinutesView", + value: function _buildMinutesView() { + var $tick = $('
'); + // Minutes view + for (var i = 0; i < 60; i += 5) { + var tick = $tick.clone(); + var radian = i / 30 * Math.PI; + tick.css({ + left: this.options.dialRadius + Math.sin(radian) * this.options.outerRadius - this.options.tickRadius + 'px', + top: this.options.dialRadius - Math.cos(radian) * this.options.outerRadius - this.options.tickRadius + 'px' + }); + tick.html(Timepicker._addLeadingZero(i)); + this.minutesView.appendChild(tick[0]); + } + } + }, { + key: "_handleAmPmClick", + value: function _handleAmPmClick(e) { + var $btnClicked = $(e.target); + this.amOrPm = $btnClicked.hasClass('am-btn') ? 'AM' : 'PM'; + this._updateAmPmView(); + } + }, { + key: "_updateAmPmView", + value: function _updateAmPmView() { + if (this.options.twelveHour) { + this.$amBtn.toggleClass('text-primary', this.amOrPm === 'AM'); + this.$pmBtn.toggleClass('text-primary', this.amOrPm === 'PM'); + } + } + }, { + key: "_updateTimeFromInput", + value: function _updateTimeFromInput() { + // Get the time + var value = ((this.el.value || this.options.defaultTime || '') + '').split(':'); + if (this.options.twelveHour && !(typeof value[1] === 'undefined')) { + if (value[1].toUpperCase().indexOf('AM') > 0) { + this.amOrPm = 'AM'; + } else { + this.amOrPm = 'PM'; + } + value[1] = value[1].replace('AM', '').replace('PM', ''); + } + if (value[0] === 'now') { + var now = new Date(+new Date() + this.options.fromNow); + value = [now.getHours(), now.getMinutes()]; + if (this.options.twelveHour) { + this.amOrPm = value[0] >= 12 && value[0] < 24 ? 'PM' : 'AM'; + } + } + this.hours = +value[0] || 0; + this.minutes = +value[1] || 0; + this.spanHours.innerHTML = this.hours; + this.spanMinutes.innerHTML = Timepicker._addLeadingZero(this.minutes); + + this._updateAmPmView(); + } + }, { + key: "showView", + value: function showView(view, delay) { + if (view === 'minutes' && $(this.hoursView).css('visibility') === 'visible') { + // raiseCallback(this.options.beforeHourSelect); + } + var isHours = view === 'hours', + nextView = isHours ? this.hoursView : this.minutesView, + hideView = isHours ? this.minutesView : this.hoursView; + this.currentView = view; + + $(this.spanHours).toggleClass('text-primary', isHours); + $(this.spanMinutes).toggleClass('text-primary', !isHours); + + // Transition view + hideView.classList.add('timepicker-dial-out'); + $(nextView).css('visibility', 'visible').removeClass('timepicker-dial-out'); + + // Reset clock hand + this.resetClock(delay); + + // After transitions ended + clearTimeout(this.toggleViewTimer); + this.toggleViewTimer = setTimeout(function () { + $(hideView).css('visibility', 'hidden'); + }, this.options.duration); + } + }, { + key: "resetClock", + value: function resetClock(delay) { + var view = this.currentView, + value = this[view], + isHours = view === 'hours', + unit = Math.PI / (isHours ? 6 : 30), + radian = value * unit, + radius = isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius, + x = Math.sin(radian) * radius, + y = -Math.cos(radian) * radius, + self = this; + + if (delay) { + $(this.canvas).addClass('timepicker-canvas-out'); + setTimeout(function () { + $(self.canvas).removeClass('timepicker-canvas-out'); + self.setHand(x, y); + }, delay); + } else { + this.setHand(x, y); + } + } + }, { + key: "setHand", + value: function setHand(x, y, roundBy5) { + var _this60 = this; + + var radian = Math.atan2(x, -y), + isHours = this.currentView === 'hours', + unit = Math.PI / (isHours || roundBy5 ? 6 : 30), + z = Math.sqrt(x * x + y * y), + inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2, + radius = inner ? this.options.innerRadius : this.options.outerRadius; + + if (this.options.twelveHour) { + radius = this.options.outerRadius; + } + + // Radian should in range [0, 2PI] + if (radian < 0) { + radian = Math.PI * 2 + radian; + } + + // Get the round value + var value = Math.round(radian / unit); + + // Get the round radian + radian = value * unit; + + // Correct the hours or minutes + if (this.options.twelveHour) { + if (isHours) { + if (value === 0) value = 12; + } else { + if (roundBy5) value *= 5; + if (value === 60) value = 0; + } + } else { + if (isHours) { + if (value === 12) { + value = 0; + } + value = inner ? value === 0 ? 12 : value : value === 0 ? 0 : value + 12; + } else { + if (roundBy5) { + value *= 5; + } + if (value === 60) { + value = 0; + } + } + } + + // Once hours or minutes changed, vibrate the device + if (this[this.currentView] !== value) { + if (this.vibrate && this.options.vibrate) { + // Do not vibrate too frequently + if (!this.vibrateTimer) { + navigator[this.vibrate](10); + this.vibrateTimer = setTimeout(function () { + _this60.vibrateTimer = null; + }, 100); + } + } + } + + this[this.currentView] = value; + if (isHours) { + this['spanHours'].innerHTML = value; + } else { + this['spanMinutes'].innerHTML = Timepicker._addLeadingZero(value); + } + + // Set clock hand and others' position + var cx1 = Math.sin(radian) * (radius - this.options.tickRadius), + cy1 = -Math.cos(radian) * (radius - this.options.tickRadius), + cx2 = Math.sin(radian) * radius, + cy2 = -Math.cos(radian) * radius; + this.hand.setAttribute('x2', cx1); + this.hand.setAttribute('y2', cy1); + this.bg.setAttribute('cx', cx2); + this.bg.setAttribute('cy', cy2); + } + }, { + key: "open", + value: function open() { + if (this.isOpen) { + return; + } + + this.isOpen = true; + this._updateTimeFromInput(); + this.showView('hours'); + + this.modal.open(); + } + }, { + key: "close", + value: function close() { + if (!this.isOpen) { + return; + } + + this.isOpen = false; + this.modal.close(); + } + + /** + * Finish timepicker selection. + */ + + }, { + key: "done", + value: function done(e, clearValue) { + // Set input value + var last = this.el.value; + var value = clearValue ? '' : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes); + this.time = value; + if (!clearValue && this.options.twelveHour) { + value = value + " " + this.amOrPm; + } + this.el.value = value; + + // Trigger change event + if (value !== last) { + this.$el.trigger('change'); + } + + this.close(); + this.el.focus(); + } + }, { + key: "clear", + value: function clear() { + this.done(null, true); + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(Timepicker.__proto__ || Object.getPrototypeOf(Timepicker), "init", this).call(this, this, els, options); + } + }, { + key: "_addLeadingZero", + value: function _addLeadingZero(num) { + return (num < 10 ? '0' : '') + num; + } + }, { + key: "_createSVGEl", + value: function _createSVGEl(name) { + var svgNS = 'http://www.w3.org/2000/svg'; + return document.createElementNS(svgNS, name); + } + + /** + * @typedef {Object} Point + * @property {number} x The X Coordinate + * @property {number} y The Y Coordinate + */ + + /** + * Get x position of mouse or touch event + * @param {Event} e + * @return {Point} x and y location + */ + + }, { + key: "_Pos", + value: function _Pos(e) { + if (e.targetTouches && e.targetTouches.length >= 1) { + return { x: e.targetTouches[0].clientX, y: e.targetTouches[0].clientY }; + } + // mouse event + return { x: e.clientX, y: e.clientY }; + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_Timepicker; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return Timepicker; + }(Component); + + Timepicker._template = [''].join(''); + + M.Timepicker = Timepicker; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(Timepicker, 'timepicker', 'M_Timepicker'); + } +})(cash); +;(function ($) { + 'use strict'; + + var _defaults = {}; + + /** + * @class + * + */ + + var CharacterCounter = function (_Component17) { + _inherits(CharacterCounter, _Component17); + + /** + * Construct CharacterCounter instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function CharacterCounter(el, options) { + _classCallCheck(this, CharacterCounter); + + var _this61 = _possibleConstructorReturn(this, (CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter)).call(this, CharacterCounter, el, options)); + + _this61.el.M_CharacterCounter = _this61; + + /** + * Options for the character counter + */ + _this61.options = $.extend({}, CharacterCounter.defaults, options); + + _this61.isInvalid = false; + _this61.isValidLength = false; + _this61._setupCounter(); + _this61._setupEventHandlers(); + return _this61; + } + + _createClass(CharacterCounter, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this.el.CharacterCounter = undefined; + this._removeCounter(); + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + this._handleUpdateCounterBound = this.updateCounter.bind(this); + + this.el.addEventListener('focus', this._handleUpdateCounterBound, true); + this.el.addEventListener('input', this._handleUpdateCounterBound, true); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('focus', this._handleUpdateCounterBound, true); + this.el.removeEventListener('input', this._handleUpdateCounterBound, true); + } + + /** + * Setup counter element + */ + + }, { + key: "_setupCounter", + value: function _setupCounter() { + this.counterEl = document.createElement('span'); + $(this.counterEl).addClass('character-counter').css({ + float: 'right', + 'font-size': '12px', + height: 1 + }); + + this.$el.parent().append(this.counterEl); + } + + /** + * Remove counter element + */ + + }, { + key: "_removeCounter", + value: function _removeCounter() { + $(this.counterEl).remove(); + } + + /** + * Update counter + */ + + }, { + key: "updateCounter", + value: function updateCounter() { + var maxLength = +this.$el.attr('data-length'), + actualLength = this.el.value.length; + this.isValidLength = actualLength <= maxLength; + var counterString = actualLength; + + if (maxLength) { + counterString += '/' + maxLength; + this._validateInput(); + } + + $(this.counterEl).html(counterString); + } + + /** + * Add validation classes + */ + + }, { + key: "_validateInput", + value: function _validateInput() { + if (this.isValidLength && this.isInvalid) { + this.isInvalid = false; + this.$el.removeClass('invalid'); + } else if (!this.isValidLength && !this.isInvalid) { + this.isInvalid = true; + this.$el.removeClass('valid'); + this.$el.addClass('invalid'); + } + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_CharacterCounter; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return CharacterCounter; + }(Component); + + M.CharacterCounter = CharacterCounter; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(CharacterCounter, 'characterCounter', 'M_CharacterCounter'); + } +})(cash); +;(function ($) { + 'use strict'; + + var _defaults = { + duration: 200, // ms + dist: -100, // zoom scale TODO: make this more intuitive as an option + shift: 0, // spacing for center image + padding: 0, // Padding between non center items + numVisible: 5, // Number of visible items in carousel + fullWidth: false, // Change to full width styles + indicators: false, // Toggle indicators + noWrap: false, // Don't wrap around and cycle through items. + onCycleTo: null // Callback for when a new slide is cycled to. + }; + + /** + * @class + * + */ + + var Carousel = function (_Component18) { + _inherits(Carousel, _Component18); + + /** + * Construct Carousel instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function Carousel(el, options) { + _classCallCheck(this, Carousel); + + var _this62 = _possibleConstructorReturn(this, (Carousel.__proto__ || Object.getPrototypeOf(Carousel)).call(this, Carousel, el, options)); + + _this62.el.M_Carousel = _this62; + + /** + * Options for the carousel + * @member Carousel#options + * @prop {Number} duration + * @prop {Number} dist + * @prop {Number} shift + * @prop {Number} padding + * @prop {Number} numVisible + * @prop {Boolean} fullWidth + * @prop {Boolean} indicators + * @prop {Boolean} noWrap + * @prop {Function} onCycleTo + */ + _this62.options = $.extend({}, Carousel.defaults, options); + + // Setup + _this62.hasMultipleSlides = _this62.$el.find('.carousel-item').length > 1; + _this62.showIndicators = _this62.options.indicators && _this62.hasMultipleSlides; + _this62.noWrap = _this62.options.noWrap || !_this62.hasMultipleSlides; + _this62.pressed = false; + _this62.dragged = false; + _this62.offset = _this62.target = 0; + _this62.images = []; + _this62.itemWidth = _this62.$el.find('.carousel-item').first().innerWidth(); + _this62.itemHeight = _this62.$el.find('.carousel-item').first().innerHeight(); + _this62.dim = _this62.itemWidth * 2 + _this62.options.padding || 1; // Make sure dim is non zero for divisions. + _this62._autoScrollBound = _this62._autoScroll.bind(_this62); + _this62._trackBound = _this62._track.bind(_this62); + + // Full Width carousel setup + if (_this62.options.fullWidth) { + _this62.options.dist = 0; + _this62._setCarouselHeight(); + + // Offset fixed items when indicators. + if (_this62.showIndicators) { + _this62.$el.find('.carousel-fixed-item').addClass('with-indicators'); + } + } + + // Iterate through slides + _this62.$indicators = $('
    '); + _this62.$el.find('.carousel-item').each(function (el, i) { + _this62.images.push(el); + if (_this62.showIndicators) { + var $indicator = $('
  • '); + + // Add active to first by default. + if (i === 0) { + $indicator[0].classList.add('active'); + } + + _this62.$indicators.append($indicator); + } + }); + if (_this62.showIndicators) { + _this62.$el.append(_this62.$indicators); + } + _this62.count = _this62.images.length; + + // Cap numVisible at count + _this62.options.numVisible = Math.min(_this62.count, _this62.options.numVisible); + + // Setup cross browser string + _this62.xform = 'transform'; + ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) { + var e = prefix + 'Transform'; + if (typeof document.body.style[e] !== 'undefined') { + _this62.xform = e; + return false; + } + return true; + }); + + _this62._setupEventHandlers(); + _this62._scroll(_this62.offset); + return _this62; + } + + _createClass(Carousel, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this.el.M_Carousel = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + var _this63 = this; + + this._handleCarouselTapBound = this._handleCarouselTap.bind(this); + this._handleCarouselDragBound = this._handleCarouselDrag.bind(this); + this._handleCarouselReleaseBound = this._handleCarouselRelease.bind(this); + this._handleCarouselClickBound = this._handleCarouselClick.bind(this); + + if (typeof window.ontouchstart !== 'undefined') { + this.el.addEventListener('touchstart', this._handleCarouselTapBound); + this.el.addEventListener('touchmove', this._handleCarouselDragBound); + this.el.addEventListener('touchend', this._handleCarouselReleaseBound); + } + + this.el.addEventListener('mousedown', this._handleCarouselTapBound); + this.el.addEventListener('mousemove', this._handleCarouselDragBound); + this.el.addEventListener('mouseup', this._handleCarouselReleaseBound); + this.el.addEventListener('mouseleave', this._handleCarouselReleaseBound); + this.el.addEventListener('click', this._handleCarouselClickBound); + + if (this.showIndicators && this.$indicators) { + this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this); + this.$indicators.find('.indicator-item').each(function (el, i) { + el.addEventListener('click', _this63._handleIndicatorClickBound); + }); + } + + // Resize + var throttledResize = M.throttle(this._handleResize, 200); + this._handleThrottledResizeBound = throttledResize.bind(this); + + window.addEventListener('resize', this._handleThrottledResizeBound); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + var _this64 = this; + + if (typeof window.ontouchstart !== 'undefined') { + this.el.removeEventListener('touchstart', this._handleCarouselTapBound); + this.el.removeEventListener('touchmove', this._handleCarouselDragBound); + this.el.removeEventListener('touchend', this._handleCarouselReleaseBound); + } + this.el.removeEventListener('mousedown', this._handleCarouselTapBound); + this.el.removeEventListener('mousemove', this._handleCarouselDragBound); + this.el.removeEventListener('mouseup', this._handleCarouselReleaseBound); + this.el.removeEventListener('mouseleave', this._handleCarouselReleaseBound); + this.el.removeEventListener('click', this._handleCarouselClickBound); + + if (this.showIndicators && this.$indicators) { + this.$indicators.find('.indicator-item').each(function (el, i) { + el.removeEventListener('click', _this64._handleIndicatorClickBound); + }); + } + + window.removeEventListener('resize', this._handleThrottledResizeBound); + } + + /** + * Handle Carousel Tap + * @param {Event} e + */ + + }, { + key: "_handleCarouselTap", + value: function _handleCarouselTap(e) { + // Fixes firefox draggable image bug + if (e.type === 'mousedown' && $(e.target).is('img')) { + e.preventDefault(); + } + this.pressed = true; + this.dragged = false; + this.verticalDragged = false; + this.reference = this._xpos(e); + this.referenceY = this._ypos(e); + + this.velocity = this.amplitude = 0; + this.frame = this.offset; + this.timestamp = Date.now(); + clearInterval(this.ticker); + this.ticker = setInterval(this._trackBound, 100); + } + + /** + * Handle Carousel Drag + * @param {Event} e + */ + + }, { + key: "_handleCarouselDrag", + value: function _handleCarouselDrag(e) { + var x = void 0, + y = void 0, + delta = void 0, + deltaY = void 0; + if (this.pressed) { + x = this._xpos(e); + y = this._ypos(e); + delta = this.reference - x; + deltaY = Math.abs(this.referenceY - y); + if (deltaY < 30 && !this.verticalDragged) { + // If vertical scrolling don't allow dragging. + if (delta > 2 || delta < -2) { + this.dragged = true; + this.reference = x; + this._scroll(this.offset + delta); + } + } else if (this.dragged) { + // If dragging don't allow vertical scroll. + e.preventDefault(); + e.stopPropagation(); + return false; + } else { + // Vertical scrolling. + this.verticalDragged = true; + } + } + + if (this.dragged) { + // If dragging don't allow vertical scroll. + e.preventDefault(); + e.stopPropagation(); + return false; + } + } + + /** + * Handle Carousel Release + * @param {Event} e + */ + + }, { + key: "_handleCarouselRelease", + value: function _handleCarouselRelease(e) { + if (this.pressed) { + this.pressed = false; + } else { + return; + } + + clearInterval(this.ticker); + this.target = this.offset; + if (this.velocity > 10 || this.velocity < -10) { + this.amplitude = 0.9 * this.velocity; + this.target = this.offset + this.amplitude; + } + this.target = Math.round(this.target / this.dim) * this.dim; + + // No wrap of items. + if (this.noWrap) { + if (this.target >= this.dim * (this.count - 1)) { + this.target = this.dim * (this.count - 1); + } else if (this.target < 0) { + this.target = 0; + } + } + this.amplitude = this.target - this.offset; + this.timestamp = Date.now(); + requestAnimationFrame(this._autoScrollBound); + + if (this.dragged) { + e.preventDefault(); + e.stopPropagation(); + } + return false; + } + + /** + * Handle Carousel CLick + * @param {Event} e + */ + + }, { + key: "_handleCarouselClick", + value: function _handleCarouselClick(e) { + // Disable clicks if carousel was dragged. + if (this.dragged) { + e.preventDefault(); + e.stopPropagation(); + return false; + } else if (!this.options.fullWidth) { + var clickedIndex = $(e.target).closest('.carousel-item').index(); + var diff = this._wrap(this.center) - clickedIndex; + + // Disable clicks if carousel was shifted by click + if (diff !== 0) { + e.preventDefault(); + e.stopPropagation(); + } + this._cycleTo(clickedIndex); + } + } + + /** + * Handle Indicator CLick + * @param {Event} e + */ + + }, { + key: "_handleIndicatorClick", + value: function _handleIndicatorClick(e) { + e.stopPropagation(); + + var indicator = $(e.target).closest('.indicator-item'); + if (indicator.length) { + this._cycleTo(indicator.index()); + } + } + + /** + * Handle Throttle Resize + * @param {Event} e + */ + + }, { + key: "_handleResize", + value: function _handleResize(e) { + if (this.options.fullWidth) { + this.itemWidth = this.$el.find('.carousel-item').first().innerWidth(); + this.imageHeight = this.$el.find('.carousel-item.active').height(); + this.dim = this.itemWidth * 2 + this.options.padding; + this.offset = this.center * 2 * this.itemWidth; + this.target = this.offset; + this._setCarouselHeight(true); + } else { + this._scroll(); + } + } + + /** + * Set carousel height based on first slide + * @param {Booleam} imageOnly - true for image slides + */ + + }, { + key: "_setCarouselHeight", + value: function _setCarouselHeight(imageOnly) { + var _this65 = this; + + var firstSlide = this.$el.find('.carousel-item.active').length ? this.$el.find('.carousel-item.active').first() : this.$el.find('.carousel-item').first(); + var firstImage = firstSlide.find('img').first(); + if (firstImage.length) { + if (firstImage[0].complete) { + // If image won't trigger the load event + var imageHeight = firstImage.height(); + if (imageHeight > 0) { + this.$el.css('height', imageHeight + 'px'); + } else { + // If image still has no height, use the natural dimensions to calculate + var naturalWidth = firstImage[0].naturalWidth; + var naturalHeight = firstImage[0].naturalHeight; + var adjustedHeight = this.$el.width() / naturalWidth * naturalHeight; + this.$el.css('height', adjustedHeight + 'px'); + } + } else { + // Get height when image is loaded normally + firstImage.one('load', function (el, i) { + _this65.$el.css('height', el.offsetHeight + 'px'); + }); + } + } else if (!imageOnly) { + var slideHeight = firstSlide.height(); + this.$el.css('height', slideHeight + 'px'); + } + } + + /** + * Get x position from event + * @param {Event} e + */ + + }, { + key: "_xpos", + value: function _xpos(e) { + // touch event + if (e.targetTouches && e.targetTouches.length >= 1) { + return e.targetTouches[0].clientX; + } + + // mouse event + return e.clientX; + } + + /** + * Get y position from event + * @param {Event} e + */ + + }, { + key: "_ypos", + value: function _ypos(e) { + // touch event + if (e.targetTouches && e.targetTouches.length >= 1) { + return e.targetTouches[0].clientY; + } + + // mouse event + return e.clientY; + } + + /** + * Wrap index + * @param {Number} x + */ + + }, { + key: "_wrap", + value: function _wrap(x) { + return x >= this.count ? x % this.count : x < 0 ? this._wrap(this.count + x % this.count) : x; + } + + /** + * Tracks scrolling information + */ + + }, { + key: "_track", + value: function _track() { + var now = void 0, + elapsed = void 0, + delta = void 0, + v = void 0; + + now = Date.now(); + elapsed = now - this.timestamp; + this.timestamp = now; + delta = this.offset - this.frame; + this.frame = this.offset; + + v = 1000 * delta / (1 + elapsed); + this.velocity = 0.8 * v + 0.2 * this.velocity; + } + + /** + * Auto scrolls to nearest carousel item. + */ + + }, { + key: "_autoScroll", + value: function _autoScroll() { + var elapsed = void 0, + delta = void 0; + + if (this.amplitude) { + elapsed = Date.now() - this.timestamp; + delta = this.amplitude * Math.exp(-elapsed / this.options.duration); + if (delta > 2 || delta < -2) { + this._scroll(this.target - delta); + requestAnimationFrame(this._autoScrollBound); + } else { + this._scroll(this.target); + } + } + } + + /** + * Scroll to target + * @param {Number} x + */ + + }, { + key: "_scroll", + value: function _scroll(x) { + var _this66 = this; + + // Track scrolling state + if (!this.$el.hasClass('scrolling')) { + this.el.classList.add('scrolling'); + } + if (this.scrollingTimeout != null) { + window.clearTimeout(this.scrollingTimeout); + } + this.scrollingTimeout = window.setTimeout(function () { + _this66.$el.removeClass('scrolling'); + }, this.options.duration); + + // Start actual scroll + var i = void 0, + half = void 0, + delta = void 0, + dir = void 0, + tween = void 0, + el = void 0, + alignment = void 0, + zTranslation = void 0, + tweenedOpacity = void 0, + centerTweenedOpacity = void 0; + var lastCenter = this.center; + var numVisibleOffset = 1 / this.options.numVisible; + + this.offset = typeof x === 'number' ? x : this.offset; + this.center = Math.floor((this.offset + this.dim / 2) / this.dim); + delta = this.offset - this.center * this.dim; + dir = delta < 0 ? 1 : -1; + tween = -dir * delta * 2 / this.dim; + half = this.count >> 1; + + if (this.options.fullWidth) { + alignment = 'translateX(0)'; + centerTweenedOpacity = 1; + } else { + alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) '; + alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)'; + centerTweenedOpacity = 1 - numVisibleOffset * tween; + } + + // Set indicator active + if (this.showIndicators) { + var diff = this.center % this.count; + var activeIndicator = this.$indicators.find('.indicator-item.active'); + if (activeIndicator.index() !== diff) { + activeIndicator.removeClass('active'); + this.$indicators.find('.indicator-item').eq(diff)[0].classList.add('active'); + } + } + + // center + // Don't show wrapped items. + if (!this.noWrap || this.center >= 0 && this.center < this.count) { + el = this.images[this._wrap(this.center)]; + + // Add active class to center item. + if (!$(el).hasClass('active')) { + this.$el.find('.carousel-item').removeClass('active'); + el.classList.add('active'); + } + var transformString = alignment + " translateX(" + -delta / 2 + "px) translateX(" + dir * this.options.shift * tween * i + "px) translateZ(" + this.options.dist * tween + "px)"; + this._updateItemStyle(el, centerTweenedOpacity, 0, transformString); + } + + for (i = 1; i <= half; ++i) { + // right side + if (this.options.fullWidth) { + zTranslation = this.options.dist; + tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1; + } else { + zTranslation = this.options.dist * (i * 2 + tween * dir); + tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir); + } + // Don't show wrapped items. + if (!this.noWrap || this.center + i < this.count) { + el = this.images[this._wrap(this.center + i)]; + var _transformString = alignment + " translateX(" + (this.options.shift + (this.dim * i - delta) / 2) + "px) translateZ(" + zTranslation + "px)"; + this._updateItemStyle(el, tweenedOpacity, -i, _transformString); + } + + // left side + if (this.options.fullWidth) { + zTranslation = this.options.dist; + tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1; + } else { + zTranslation = this.options.dist * (i * 2 - tween * dir); + tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir); + } + // Don't show wrapped items. + if (!this.noWrap || this.center - i >= 0) { + el = this.images[this._wrap(this.center - i)]; + var _transformString2 = alignment + " translateX(" + (-this.options.shift + (-this.dim * i - delta) / 2) + "px) translateZ(" + zTranslation + "px)"; + this._updateItemStyle(el, tweenedOpacity, -i, _transformString2); + } + } + + // center + // Don't show wrapped items. + if (!this.noWrap || this.center >= 0 && this.center < this.count) { + el = this.images[this._wrap(this.center)]; + var _transformString3 = alignment + " translateX(" + -delta / 2 + "px) translateX(" + dir * this.options.shift * tween + "px) translateZ(" + this.options.dist * tween + "px)"; + this._updateItemStyle(el, centerTweenedOpacity, 0, _transformString3); + } + + // onCycleTo callback + var $currItem = this.$el.find('.carousel-item').eq(this._wrap(this.center)); + if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') { + this.options.onCycleTo.call(this, $currItem[0], this.dragged); + } + + // One time callback + if (typeof this.oneTimeCallback === 'function') { + this.oneTimeCallback.call(this, $currItem[0], this.dragged); + this.oneTimeCallback = null; + } + } + + /** + * Cycle to target + * @param {Element} el + * @param {Number} opacity + * @param {Number} zIndex + * @param {String} transform + */ + + }, { + key: "_updateItemStyle", + value: function _updateItemStyle(el, opacity, zIndex, transform) { + el.style[this.xform] = transform; + el.style.zIndex = zIndex; + el.style.opacity = opacity; + el.style.visibility = 'visible'; + } + + /** + * Cycle to target + * @param {Number} n + * @param {Function} callback + */ + + }, { + key: "_cycleTo", + value: function _cycleTo(n, callback) { + var diff = this.center % this.count - n; + + // Account for wraparound. + if (!this.noWrap) { + if (diff < 0) { + if (Math.abs(diff + this.count) < Math.abs(diff)) { + diff += this.count; + } + } else if (diff > 0) { + if (Math.abs(diff - this.count) < diff) { + diff -= this.count; + } + } + } + + this.target = this.dim * Math.round(this.offset / this.dim); + // Next + if (diff < 0) { + this.target += this.dim * Math.abs(diff); + + // Prev + } else if (diff > 0) { + this.target -= this.dim * diff; + } + + // Set one time callback + if (typeof callback === 'function') { + this.oneTimeCallback = callback; + } + + // Scroll + if (this.offset !== this.target) { + this.amplitude = this.target - this.offset; + this.timestamp = Date.now(); + requestAnimationFrame(this._autoScrollBound); + } + } + + /** + * Cycle to next item + * @param {Number} [n] + */ + + }, { + key: "next", + value: function next(n) { + if (n === undefined || isNaN(n)) { + n = 1; + } + + var index = this.center + n; + if (index >= this.count || index < 0) { + if (this.noWrap) { + return; + } + + index = this._wrap(index); + } + this._cycleTo(index); + } + + /** + * Cycle to previous item + * @param {Number} [n] + */ + + }, { + key: "prev", + value: function prev(n) { + if (n === undefined || isNaN(n)) { + n = 1; + } + + var index = this.center - n; + if (index >= this.count || index < 0) { + if (this.noWrap) { + return; + } + + index = this._wrap(index); + } + + this._cycleTo(index); + } + + /** + * Cycle to nth item + * @param {Number} [n] + * @param {Function} callback + */ + + }, { + key: "set", + value: function set(n, callback) { + if (n === undefined || isNaN(n)) { + n = 0; + } + + if (n > this.count || n < 0) { + if (this.noWrap) { + return; + } + + n = this._wrap(n); + } + + this._cycleTo(n, callback); + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(Carousel.__proto__ || Object.getPrototypeOf(Carousel), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_Carousel; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return Carousel; + }(Component); + + M.Carousel = Carousel; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(Carousel, 'carousel', 'M_Carousel'); + } +})(cash); +;(function ($) { + 'use strict'; + + var _defaults = { + onOpen: undefined, + onClose: undefined + }; + + /** + * @class + * + */ + + var TapTarget = function (_Component19) { + _inherits(TapTarget, _Component19); + + /** + * Construct TapTarget instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function TapTarget(el, options) { + _classCallCheck(this, TapTarget); + + var _this67 = _possibleConstructorReturn(this, (TapTarget.__proto__ || Object.getPrototypeOf(TapTarget)).call(this, TapTarget, el, options)); + + _this67.el.M_TapTarget = _this67; + + /** + * Options for the select + * @member TapTarget#options + * @prop {Function} onOpen - Callback function called when feature discovery is opened + * @prop {Function} onClose - Callback function called when feature discovery is closed + */ + _this67.options = $.extend({}, TapTarget.defaults, options); + + _this67.isOpen = false; + + // setup + _this67.$origin = $('#' + _this67.$el.attr('data-target')); + _this67._setup(); + + _this67._calculatePositioning(); + _this67._setupEventHandlers(); + return _this67; + } + + _createClass(TapTarget, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this.el.TapTarget = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + this._handleDocumentClickBound = this._handleDocumentClick.bind(this); + this._handleTargetClickBound = this._handleTargetClick.bind(this); + this._handleOriginClickBound = this._handleOriginClick.bind(this); + + this.el.addEventListener('click', this._handleTargetClickBound); + this.originEl.addEventListener('click', this._handleOriginClickBound); + + // Resize + var throttledResize = M.throttle(this._handleResize, 200); + this._handleThrottledResizeBound = throttledResize.bind(this); + + window.addEventListener('resize', this._handleThrottledResizeBound); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('click', this._handleTargetClickBound); + this.originEl.removeEventListener('click', this._handleOriginClickBound); + window.removeEventListener('resize', this._handleThrottledResizeBound); + } + + /** + * Handle Target Click + * @param {Event} e + */ + + }, { + key: "_handleTargetClick", + value: function _handleTargetClick(e) { + this.open(); + } + + /** + * Handle Origin Click + * @param {Event} e + */ + + }, { + key: "_handleOriginClick", + value: function _handleOriginClick(e) { + this.close(); + } + + /** + * Handle Resize + * @param {Event} e + */ + + }, { + key: "_handleResize", + value: function _handleResize(e) { + this._calculatePositioning(); + } + + /** + * Handle Resize + * @param {Event} e + */ + + }, { + key: "_handleDocumentClick", + value: function _handleDocumentClick(e) { + if (!$(e.target).closest('.tap-target-wrapper').length) { + this.close(); + e.preventDefault(); + e.stopPropagation(); + } + } + + /** + * Setup Tap Target + */ + + }, { + key: "_setup", + value: function _setup() { + // Creating tap target + this.wrapper = this.$el.parent()[0]; + this.waveEl = $(this.wrapper).find('.tap-target-wave')[0]; + this.originEl = $(this.wrapper).find('.tap-target-origin')[0]; + this.contentEl = this.$el.find('.tap-target-content')[0]; + + // Creating wrapper + if (!$(this.wrapper).hasClass('.tap-target-wrapper')) { + this.wrapper = document.createElement('div'); + this.wrapper.classList.add('tap-target-wrapper'); + this.$el.before($(this.wrapper)); + this.wrapper.append(this.el); + } + + // Creating content + if (!this.contentEl) { + this.contentEl = document.createElement('div'); + this.contentEl.classList.add('tap-target-content'); + this.$el.append(this.contentEl); + } + + // Creating foreground wave + if (!this.waveEl) { + this.waveEl = document.createElement('div'); + this.waveEl.classList.add('tap-target-wave'); + + // Creating origin + if (!this.originEl) { + this.originEl = this.$origin.clone(true, true); + this.originEl.addClass('tap-target-origin'); + this.originEl.removeAttr('id'); + this.originEl.removeAttr('style'); + this.originEl = this.originEl[0]; + this.waveEl.append(this.originEl); + } + + this.wrapper.append(this.waveEl); + } + } + + /** + * Calculate positioning + */ + + }, { + key: "_calculatePositioning", + value: function _calculatePositioning() { + // Element or parent is fixed position? + var isFixed = this.$origin.css('position') === 'fixed'; + if (!isFixed) { + var parents = this.$origin.parents(); + for (var i = 0; i < parents.length; i++) { + isFixed = $(parents[i]).css('position') == 'fixed'; + if (isFixed) { + break; + } + } + } + + // Calculating origin + var originWidth = this.$origin.outerWidth(); + var originHeight = this.$origin.outerHeight(); + var originTop = isFixed ? this.$origin.offset().top - M.getDocumentScrollTop() : this.$origin.offset().top; + var originLeft = isFixed ? this.$origin.offset().left - M.getDocumentScrollLeft() : this.$origin.offset().left; + + // Calculating screen + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var centerX = windowWidth / 2; + var centerY = windowHeight / 2; + var isLeft = originLeft <= centerX; + var isRight = originLeft > centerX; + var isTop = originTop <= centerY; + var isBottom = originTop > centerY; + var isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75; + + // Calculating tap target + var tapTargetWidth = this.$el.outerWidth(); + var tapTargetHeight = this.$el.outerHeight(); + var tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2; + var tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2; + var tapTargetPosition = isFixed ? 'fixed' : 'absolute'; + + // Calculating content + var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth; + var tapTargetTextHeight = tapTargetHeight / 2; + var tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0; + var tapTargetTextBottom = 0; + var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0; + var tapTargetTextRight = 0; + var tapTargetTextPadding = originWidth; + var tapTargetTextAlign = isBottom ? 'bottom' : 'top'; + + // Calculating wave + var tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2; + var tapTargetWaveHeight = tapTargetWaveWidth; + var tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2; + var tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2; + + // Setting tap target + var tapTargetWrapperCssObj = {}; + tapTargetWrapperCssObj.top = isTop ? tapTargetTop + 'px' : ''; + tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth + 'px' : ''; + tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight + 'px' : ''; + tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft + 'px' : ''; + tapTargetWrapperCssObj.position = tapTargetPosition; + $(this.wrapper).css(tapTargetWrapperCssObj); + + // Setting content + $(this.contentEl).css({ + width: tapTargetTextWidth + 'px', + height: tapTargetTextHeight + 'px', + top: tapTargetTextTop + 'px', + right: tapTargetTextRight + 'px', + bottom: tapTargetTextBottom + 'px', + left: tapTargetTextLeft + 'px', + padding: tapTargetTextPadding + 'px', + verticalAlign: tapTargetTextAlign + }); + + // Setting wave + $(this.waveEl).css({ + top: tapTargetWaveTop + 'px', + left: tapTargetWaveLeft + 'px', + width: tapTargetWaveWidth + 'px', + height: tapTargetWaveHeight + 'px' + }); + } + + /** + * Open TapTarget + */ + + }, { + key: "open", + value: function open() { + if (this.isOpen) { + return; + } + + // onOpen callback + if (typeof this.options.onOpen === 'function') { + this.options.onOpen.call(this, this.$origin[0]); + } + + this.isOpen = true; + this.wrapper.classList.add('open'); + + document.body.addEventListener('click', this._handleDocumentClickBound, true); + document.body.addEventListener('touchend', this._handleDocumentClickBound); + } + + /** + * Close Tap Target + */ + + }, { + key: "close", + value: function close() { + if (!this.isOpen) { + return; + } + + // onClose callback + if (typeof this.options.onClose === 'function') { + this.options.onClose.call(this, this.$origin[0]); + } + + this.isOpen = false; + this.wrapper.classList.remove('open'); + + document.body.removeEventListener('click', this._handleDocumentClickBound, true); + document.body.removeEventListener('touchend', this._handleDocumentClickBound); + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(TapTarget.__proto__ || Object.getPrototypeOf(TapTarget), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_TapTarget; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return TapTarget; + }(Component); + + M.TapTarget = TapTarget; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(TapTarget, 'tapTarget', 'M_TapTarget'); + } +})(cash); +;(function ($) { + 'use strict'; + + var _defaults = { + classes: '', + dropdownOptions: {} + }; + + /** + * @class + * + */ + + var FormSelect = function (_Component20) { + _inherits(FormSelect, _Component20); + + /** + * Construct FormSelect instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function FormSelect(el, options) { + _classCallCheck(this, FormSelect); + + // Don't init if browser default version + var _this68 = _possibleConstructorReturn(this, (FormSelect.__proto__ || Object.getPrototypeOf(FormSelect)).call(this, FormSelect, el, options)); + + if (_this68.$el.hasClass('browser-default')) { + return _possibleConstructorReturn(_this68); + } + + _this68.el.M_FormSelect = _this68; + + /** + * Options for the select + * @member FormSelect#options + */ + _this68.options = $.extend({}, FormSelect.defaults, options); + + _this68.isMultiple = _this68.$el.prop('multiple'); + + // Setup + _this68.el.tabIndex = -1; + _this68._keysSelected = {}; + _this68._valueDict = {}; // Maps key to original and generated option element. + _this68._setupDropdown(); + + _this68._setupEventHandlers(); + return _this68; + } + + _createClass(FormSelect, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this._removeDropdown(); + this.el.M_FormSelect = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + var _this69 = this; + + this._handleSelectChangeBound = this._handleSelectChange.bind(this); + this._handleOptionClickBound = this._handleOptionClick.bind(this); + this._handleInputClickBound = this._handleInputClick.bind(this); + + $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) { + el.addEventListener('click', _this69._handleOptionClickBound); + }); + this.el.addEventListener('change', this._handleSelectChangeBound); + this.input.addEventListener('click', this._handleInputClickBound); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + var _this70 = this; + + $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) { + el.removeEventListener('click', _this70._handleOptionClickBound); + }); + this.el.removeEventListener('change', this._handleSelectChangeBound); + this.input.removeEventListener('click', this._handleInputClickBound); + } + + /** + * Handle Select Change + * @param {Event} e + */ + + }, { + key: "_handleSelectChange", + value: function _handleSelectChange(e) { + this._setValueToInput(); + } + + /** + * Handle Option Click + * @param {Event} e + */ + + }, { + key: "_handleOptionClick", + value: function _handleOptionClick(e) { + e.preventDefault(); + var option = $(e.target).closest('li')[0]; + var key = option.id; + if (!$(option).hasClass('disabled') && !$(option).hasClass('optgroup') && key.length) { + var selected = true; + + if (this.isMultiple) { + // Deselect placeholder option if still selected. + var placeholderOption = $(this.dropdownOptions).find('li.disabled.selected'); + if (placeholderOption.length) { + placeholderOption.removeClass('selected'); + placeholderOption.find('input[type="checkbox"]').prop('checked', false); + this._toggleEntryFromArray(placeholderOption[0].id); + } + selected = this._toggleEntryFromArray(key); + } else { + $(this.dropdownOptions).find('li').removeClass('selected'); + $(option).toggleClass('selected', selected); + } + + // Set selected on original select option + // Only trigger if selected state changed + var prevSelected = $(this._valueDict[key].el).prop('selected'); + if (prevSelected !== selected) { + $(this._valueDict[key].el).prop('selected', selected); + this.$el.trigger('change'); + } + } + + e.stopPropagation(); + } + + /** + * Handle Input Click + */ + + }, { + key: "_handleInputClick", + value: function _handleInputClick() { + if (this.dropdown && this.dropdown.isOpen) { + this._setValueToInput(); + this._setSelectedStates(); + } + } + + /** + * Setup dropdown + */ + + }, { + key: "_setupDropdown", + value: function _setupDropdown() { + var _this71 = this; + + this.wrapper = document.createElement('div'); + $(this.wrapper).addClass('select-wrapper ' + this.options.classes); + this.$el.before($(this.wrapper)); + this.wrapper.appendChild(this.el); + + if (this.el.disabled) { + this.wrapper.classList.add('disabled'); + } + + // Create dropdown + this.$selectOptions = this.$el.children('option, optgroup'); + this.dropdownOptions = document.createElement('ul'); + this.dropdownOptions.id = "select-options-" + M.guid(); + $(this.dropdownOptions).addClass('dropdown-content select-dropdown ' + (this.isMultiple ? 'multiple-select-dropdown' : '')); + + // Create dropdown structure. + if (this.$selectOptions.length) { + this.$selectOptions.each(function (el) { + if ($(el).is('option')) { + // Direct descendant option. + var optionEl = void 0; + if (_this71.isMultiple) { + optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'multiple'); + } else { + optionEl = _this71._appendOptionWithIcon(_this71.$el, el); + } + + _this71._addOptionToValueDict(el, optionEl); + } else if ($(el).is('optgroup')) { + // Optgroup. + var selectOptions = $(el).children('option'); + $(_this71.dropdownOptions).append($('
  • ' + el.getAttribute('label') + '
  • ')[0]); + + selectOptions.each(function (el) { + var optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'optgroup-option'); + _this71._addOptionToValueDict(el, optionEl); + }); + } + }); + } + + this.$el.after(this.dropdownOptions); + + // Add input dropdown + this.input = document.createElement('input'); + $(this.input).addClass('select-dropdown dropdown-trigger'); + this.input.setAttribute('type', 'text'); + this.input.setAttribute('readonly', 'true'); + this.input.setAttribute('data-target', this.dropdownOptions.id); + if (this.el.disabled) { + $(this.input).prop('disabled', 'true'); + } + + this.$el.before(this.input); + this._setValueToInput(); + + // Add caret + var dropdownIcon = $(''); + this.$el.before(dropdownIcon[0]); + + // Initialize dropdown + if (!this.el.disabled) { + var dropdownOptions = $.extend({}, this.options.dropdownOptions); + + // Add callback for centering selected option when dropdown content is scrollable + dropdownOptions.onOpenEnd = function (el) { + var selectedOption = $(_this71.dropdownOptions).find('.selected').first(); + + if (selectedOption.length) { + // Focus selected option in dropdown + M.keyDown = true; + _this71.dropdown.focusedIndex = selectedOption.index(); + _this71.dropdown._focusFocusedItem(); + M.keyDown = false; + + // Handle scrolling to selected option + if (_this71.dropdown.isScrollable) { + var scrollOffset = selectedOption[0].getBoundingClientRect().top - _this71.dropdownOptions.getBoundingClientRect().top; // scroll to selected option + scrollOffset -= _this71.dropdownOptions.clientHeight / 2; // center in dropdown + _this71.dropdownOptions.scrollTop = scrollOffset; + } + } + }; + + if (this.isMultiple) { + dropdownOptions.closeOnClick = false; + } + this.dropdown = M.Dropdown.init(this.input, dropdownOptions); + } + + // Add initial selections + this._setSelectedStates(); + } + + /** + * Add option to value dict + * @param {Element} el original option element + * @param {Element} optionEl generated option element + */ + + }, { + key: "_addOptionToValueDict", + value: function _addOptionToValueDict(el, optionEl) { + var index = Object.keys(this._valueDict).length; + var key = this.dropdownOptions.id + index; + var obj = {}; + optionEl.id = key; + + obj.el = el; + obj.optionEl = optionEl; + this._valueDict[key] = obj; + } + + /** + * Remove dropdown + */ + + }, { + key: "_removeDropdown", + value: function _removeDropdown() { + $(this.wrapper).find('.caret').remove(); + $(this.input).remove(); + $(this.dropdownOptions).remove(); + $(this.wrapper).before(this.$el); + $(this.wrapper).remove(); + } + + /** + * Setup dropdown + * @param {Element} select select element + * @param {Element} option option element from select + * @param {String} type + * @return {Element} option element added + */ + + }, { + key: "_appendOptionWithIcon", + value: function _appendOptionWithIcon(select, option, type) { + // Add disabled attr if disabled + var disabledClass = option.disabled ? 'disabled ' : ''; + var optgroupClass = type === 'optgroup-option' ? 'optgroup-option ' : ''; + var multipleCheckbox = this.isMultiple ? "" : option.innerHTML; + var liEl = $('
  • '); + var spanEl = $(''); + spanEl.html(multipleCheckbox); + liEl.addClass(disabledClass + " " + optgroupClass); + liEl.append(spanEl); + + // add icons + var iconUrl = option.getAttribute('data-icon'); + if (!!iconUrl) { + var imgEl = $("\"\""); + liEl.prepend(imgEl); + } + + // Check for multiple type. + $(this.dropdownOptions).append(liEl[0]); + return liEl[0]; + } + + /** + * Toggle entry from option + * @param {String} key Option key + * @return {Boolean} if entry was added or removed + */ + + }, { + key: "_toggleEntryFromArray", + value: function _toggleEntryFromArray(key) { + var notAdded = !this._keysSelected.hasOwnProperty(key); + var $optionLi = $(this._valueDict[key].optionEl); + + if (notAdded) { + this._keysSelected[key] = true; + } else { + delete this._keysSelected[key]; + } + + $optionLi.toggleClass('selected', notAdded); + + // Set checkbox checked value + $optionLi.find('input[type="checkbox"]').prop('checked', notAdded); + + // use notAdded instead of true (to detect if the option is selected or not) + $optionLi.prop('selected', notAdded); + + return notAdded; + } + + /** + * Set text value to input + */ + + }, { + key: "_setValueToInput", + value: function _setValueToInput() { + var values = []; + var options = this.$el.find('option'); + + options.each(function (el) { + if ($(el).prop('selected')) { + var text = $(el).text(); + values.push(text); + } + }); + + if (!values.length) { + var firstDisabled = this.$el.find('option:disabled').eq(0); + if (firstDisabled.length && firstDisabled[0].value === '') { + values.push(firstDisabled.text()); + } + } + + this.input.value = values.join(', '); + } + + /** + * Set selected state of dropdown to match actual select element + */ + + }, { + key: "_setSelectedStates", + value: function _setSelectedStates() { + this._keysSelected = {}; + + for (var key in this._valueDict) { + var option = this._valueDict[key]; + var optionIsSelected = $(option.el).prop('selected'); + $(option.optionEl).find('input[type="checkbox"]').prop('checked', optionIsSelected); + if (optionIsSelected) { + this._activateOption($(this.dropdownOptions), $(option.optionEl)); + this._keysSelected[key] = true; + } else { + $(option.optionEl).removeClass('selected'); + } + } + } + + /** + * Make option as selected and scroll to selected position + * @param {jQuery} collection Select options jQuery element + * @param {Element} newOption element of the new option + */ + + }, { + key: "_activateOption", + value: function _activateOption(collection, newOption) { + if (newOption) { + if (!this.isMultiple) { + collection.find('li.selected').removeClass('selected'); + } + var option = $(newOption); + option.addClass('selected'); + } + } + + /** + * Get Selected Values + * @return {Array} Array of selected values + */ + + }, { + key: "getSelectedValues", + value: function getSelectedValues() { + var selectedValues = []; + for (var key in this._keysSelected) { + selectedValues.push(this._valueDict[key].el.value); + } + return selectedValues; + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(FormSelect.__proto__ || Object.getPrototypeOf(FormSelect), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_FormSelect; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return FormSelect; + }(Component); + + M.FormSelect = FormSelect; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(FormSelect, 'formSelect', 'M_FormSelect'); + } +})(cash); +;(function ($, anim) { + 'use strict'; + + var _defaults = {}; + + /** + * @class + * + */ + + var Range = function (_Component21) { + _inherits(Range, _Component21); + + /** + * Construct Range instance + * @constructor + * @param {Element} el + * @param {Object} options + */ + function Range(el, options) { + _classCallCheck(this, Range); + + var _this72 = _possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this, Range, el, options)); + + _this72.el.M_Range = _this72; + + /** + * Options for the range + * @member Range#options + */ + _this72.options = $.extend({}, Range.defaults, options); + + _this72._mousedown = false; + + // Setup + _this72._setupThumb(); + + _this72._setupEventHandlers(); + return _this72; + } + + _createClass(Range, [{ + key: "destroy", + + + /** + * Teardown component + */ + value: function destroy() { + this._removeEventHandlers(); + this._removeThumb(); + this.el.M_Range = undefined; + } + + /** + * Setup Event Handlers + */ + + }, { + key: "_setupEventHandlers", + value: function _setupEventHandlers() { + this._handleRangeChangeBound = this._handleRangeChange.bind(this); + this._handleRangeMousedownTouchstartBound = this._handleRangeMousedownTouchstart.bind(this); + this._handleRangeInputMousemoveTouchmoveBound = this._handleRangeInputMousemoveTouchmove.bind(this); + this._handleRangeMouseupTouchendBound = this._handleRangeMouseupTouchend.bind(this); + this._handleRangeBlurMouseoutTouchleaveBound = this._handleRangeBlurMouseoutTouchleave.bind(this); + + this.el.addEventListener('change', this._handleRangeChangeBound); + + this.el.addEventListener('mousedown', this._handleRangeMousedownTouchstartBound); + this.el.addEventListener('touchstart', this._handleRangeMousedownTouchstartBound); + + this.el.addEventListener('input', this._handleRangeInputMousemoveTouchmoveBound); + this.el.addEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound); + this.el.addEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound); + + this.el.addEventListener('mouseup', this._handleRangeMouseupTouchendBound); + this.el.addEventListener('touchend', this._handleRangeMouseupTouchendBound); + + this.el.addEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound); + this.el.addEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound); + this.el.addEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound); + } + + /** + * Remove Event Handlers + */ + + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + this.el.removeEventListener('change', this._handleRangeChangeBound); + + this.el.removeEventListener('mousedown', this._handleRangeMousedownTouchstartBound); + this.el.removeEventListener('touchstart', this._handleRangeMousedownTouchstartBound); + + this.el.removeEventListener('input', this._handleRangeInputMousemoveTouchmoveBound); + this.el.removeEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound); + this.el.removeEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound); + + this.el.removeEventListener('mouseup', this._handleRangeMouseupTouchendBound); + this.el.removeEventListener('touchend', this._handleRangeMouseupTouchendBound); + + this.el.removeEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound); + this.el.removeEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound); + this.el.removeEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound); + } + + /** + * Handle Range Change + * @param {Event} e + */ + + }, { + key: "_handleRangeChange", + value: function _handleRangeChange() { + $(this.value).html(this.$el.val()); + + if (!$(this.thumb).hasClass('active')) { + this._showRangeBubble(); + } + + var offsetLeft = this._calcRangeOffset(); + $(this.thumb).addClass('active').css('left', offsetLeft + 'px'); + } + + /** + * Handle Range Mousedown and Touchstart + * @param {Event} e + */ + + }, { + key: "_handleRangeMousedownTouchstart", + value: function _handleRangeMousedownTouchstart(e) { + // Set indicator value + $(this.value).html(this.$el.val()); + + this._mousedown = true; + this.$el.addClass('active'); + + if (!$(this.thumb).hasClass('active')) { + this._showRangeBubble(); + } + + if (e.type !== 'input') { + var offsetLeft = this._calcRangeOffset(); + $(this.thumb).addClass('active').css('left', offsetLeft + 'px'); + } + } + + /** + * Handle Range Input, Mousemove and Touchmove + */ + + }, { + key: "_handleRangeInputMousemoveTouchmove", + value: function _handleRangeInputMousemoveTouchmove() { + if (this._mousedown) { + if (!$(this.thumb).hasClass('active')) { + this._showRangeBubble(); + } + + var offsetLeft = this._calcRangeOffset(); + $(this.thumb).addClass('active').css('left', offsetLeft + 'px'); + $(this.value).html(this.$el.val()); + } + } + + /** + * Handle Range Mouseup and Touchend + */ + + }, { + key: "_handleRangeMouseupTouchend", + value: function _handleRangeMouseupTouchend() { + this._mousedown = false; + this.$el.removeClass('active'); + } + + /** + * Handle Range Blur, Mouseout and Touchleave + */ + + }, { + key: "_handleRangeBlurMouseoutTouchleave", + value: function _handleRangeBlurMouseoutTouchleave() { + if (!this._mousedown) { + var paddingLeft = parseInt(this.$el.css('padding-left')); + var marginLeft = 7 + paddingLeft + 'px'; + + if ($(this.thumb).hasClass('active')) { + anim.remove(this.thumb); + anim({ + targets: this.thumb, + height: 0, + width: 0, + top: 10, + easing: 'easeOutQuad', + marginLeft: marginLeft, + duration: 100 + }); + } + $(this.thumb).removeClass('active'); + } + } + + /** + * Setup dropdown + */ + + }, { + key: "_setupThumb", + value: function _setupThumb() { + this.thumb = document.createElement('span'); + this.value = document.createElement('span'); + $(this.thumb).addClass('thumb'); + $(this.value).addClass('value'); + $(this.thumb).append(this.value); + this.$el.after(this.thumb); + } + + /** + * Remove dropdown + */ + + }, { + key: "_removeThumb", + value: function _removeThumb() { + $(this.thumb).remove(); + } + + /** + * morph thumb into bubble + */ + + }, { + key: "_showRangeBubble", + value: function _showRangeBubble() { + var paddingLeft = parseInt($(this.thumb).parent().css('padding-left')); + var marginLeft = -7 + paddingLeft + 'px'; // TODO: fix magic number? + anim.remove(this.thumb); + anim({ + targets: this.thumb, + height: 30, + width: 30, + top: -30, + marginLeft: marginLeft, + duration: 300, + easing: 'easeOutQuint' + }); + } + + /** + * Calculate the offset of the thumb + * @return {Number} offset in pixels + */ + + }, { + key: "_calcRangeOffset", + value: function _calcRangeOffset() { + var width = this.$el.width() - 15; + var max = parseFloat(this.$el.attr('max')) || 100; // Range default max + var min = parseFloat(this.$el.attr('min')) || 0; // Range default min + var percent = (parseFloat(this.$el.val()) - min) / (max - min); + return percent * width; + } + }], [{ + key: "init", + value: function init(els, options) { + return _get(Range.__proto__ || Object.getPrototypeOf(Range), "init", this).call(this, this, els, options); + } + + /** + * Get Instance + */ + + }, { + key: "getInstance", + value: function getInstance(el) { + var domElem = !!el.jquery ? el[0] : el; + return domElem.M_Range; + } + }, { + key: "defaults", + get: function () { + return _defaults; + } + }]); + + return Range; + }(Component); + + M.Range = Range; + + if (M.jQueryLoaded) { + M.initializeJqueryWrapper(Range, 'range', 'M_Range'); + } + + Range.init($('input[type=range]')); +})(cash, M.anime); diff --git a/scripts/communityModules/chat/js/materialize.min.js b/scripts/communityModules/chat/js/materialize.min.js new file mode 100644 index 0000000000..7d80c9375b --- /dev/null +++ b/scripts/communityModules/chat/js/materialize.min.js @@ -0,0 +1,6 @@ +/*! + * Materialize v1.0.0 (http://materializecss.com) + * Copyright 2014-2017 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +var _get=function t(e,i,n){null===e&&(e=Function.prototype);var s=Object.getOwnPropertyDescriptor(e,i);if(void 0===s){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,i,n)}if("value"in s)return s.value;var a=s.get;return void 0!==a?a.call(n):void 0},_createClass=function(){function n(t,e){for(var i=0;i/,p=/^\w+$/;function v(t,e){e=e||o;var i=u.test(t)?e.getElementsByClassName(t.slice(1)):p.test(t)?e.getElementsByTagName(t):e.querySelectorAll(t);return i}function f(t){if(!i){var e=(i=o.implementation.createHTMLDocument(null)).createElement("base");e.href=o.location.href,i.head.appendChild(e)}return i.body.innerHTML=t,i.body.childNodes}function m(t){"loading"!==o.readyState?t():o.addEventListener("DOMContentLoaded",t)}function g(t,e){if(!t)return this;if(t.cash&&t!==a)return t;var i,n=t,s=0;if(d(t))n=l.test(t)?o.getElementById(t.slice(1)):c.test(t)?f(t):v(t,e);else if(h(t))return m(t),this;if(!n)return this;if(n.nodeType||n===a)this[0]=n,this.length=1;else for(i=this.length=n.length;ss.right-i||l+e.width>window.innerWidth-i)&&(n.right=!0),(ho-i||h+e.height>window.innerHeight-i)&&(n.bottom=!0),n},M.checkPossibleAlignments=function(t,e,i,n){var s={top:!0,right:!0,bottom:!0,left:!0,spaceOnTop:null,spaceOnRight:null,spaceOnBottom:null,spaceOnLeft:null},o="visible"===getComputedStyle(e).overflow,a=e.getBoundingClientRect(),r=Math.min(a.height,window.innerHeight),l=Math.min(a.width,window.innerWidth),h=t.getBoundingClientRect(),d=e.scrollLeft,u=e.scrollTop,c=i.left-d,p=i.top-u,v=i.top+h.height-u;return s.spaceOnRight=o?window.innerWidth-(h.left+i.width):l-(c+i.width),s.spaceOnRight<0&&(s.left=!1),s.spaceOnLeft=o?h.right-i.width:c-i.width+h.width,s.spaceOnLeft<0&&(s.right=!1),s.spaceOnBottom=o?window.innerHeight-(h.top+i.height+n):r-(p+i.height+n),s.spaceOnBottom<0&&(s.top=!1),s.spaceOnTop=o?h.bottom-(i.height+n):v-(i.height-n),s.spaceOnTop<0&&(s.bottom=!1),s},M.getOverflowParent=function(t){return null==t?null:t===document.body||"visible"!==getComputedStyle(t).overflow?t:M.getOverflowParent(t.parentElement)},M.getIdFromTrigger=function(t){var e=t.getAttribute("data-target");return e||(e=(e=t.getAttribute("href"))?e.slice(1):""),e},M.getDocumentScrollTop=function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},M.getDocumentScrollLeft=function(){return window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0};var getTime=Date.now||function(){return(new Date).getTime()};M.throttle=function(i,n,s){var o=void 0,a=void 0,r=void 0,l=null,h=0;s||(s={});var d=function(){h=!1===s.leading?0:getTime(),l=null,r=i.apply(o,a),o=a=null};return function(){var t=getTime();h||!1!==s.leading||(h=t);var e=n-(t-h);return o=this,a=arguments,e<=0?(clearTimeout(l),l=null,h=t,r=i.apply(o,a),o=a=null):l||!1===s.trailing||(l=setTimeout(d,e)),r}};var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(t,e,i){if(i.get||i.set)throw new TypeError("ES3 does not support getters and setters.");t!=Array.prototype&&t!=Object.prototype&&(t[e]=i.value)},$jscomp.getGlobal=function(t){return"undefined"!=typeof window&&window===t?t:"undefined"!=typeof global&&null!=global?global:t},$jscomp.global=$jscomp.getGlobal(this),$jscomp.SYMBOL_PREFIX="jscomp_symbol_",$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){},$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)},$jscomp.symbolCounter_=0,$jscomp.Symbol=function(t){return $jscomp.SYMBOL_PREFIX+(t||"")+$jscomp.symbolCounter_++},$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var t=$jscomp.global.Symbol.iterator;t||(t=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator")),"function"!=typeof Array.prototype[t]&&$jscomp.defineProperty(Array.prototype,t,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}}),$jscomp.initSymbolIterator=function(){}},$jscomp.arrayIterator=function(t){var e=0;return $jscomp.iteratorPrototype(function(){return e=k.currentTime)for(var h=0;ht&&(s.duration=e.duration),s.children.push(e)}),s.seek(0),s.reset(),s.autoplay&&s.restart(),s},s},O.random=function(t,e){return Math.floor(Math.random()*(e-t+1))+t},O}(),function(r,l){"use strict";var e={accordion:!0,onOpenStart:void 0,onOpenEnd:void 0,onCloseStart:void 0,onCloseEnd:void 0,inDuration:300,outDuration:300},t=function(t){function s(t,e){_classCallCheck(this,s);var i=_possibleConstructorReturn(this,(s.__proto__||Object.getPrototypeOf(s)).call(this,s,t,e));(i.el.M_Collapsible=i).options=r.extend({},s.defaults,e),i.$headers=i.$el.children("li").children(".collapsible-header"),i.$headers.attr("tabindex",0),i._setupEventHandlers();var n=i.$el.children("li.active").children(".collapsible-body");return i.options.accordion?n.first().css("display","block"):n.css("display","block"),i}return _inherits(s,Component),_createClass(s,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.M_Collapsible=void 0}},{key:"_setupEventHandlers",value:function(){var e=this;this._handleCollapsibleClickBound=this._handleCollapsibleClick.bind(this),this._handleCollapsibleKeydownBound=this._handleCollapsibleKeydown.bind(this),this.el.addEventListener("click",this._handleCollapsibleClickBound),this.$headers.each(function(t){t.addEventListener("keydown",e._handleCollapsibleKeydownBound)})}},{key:"_removeEventHandlers",value:function(){var e=this;this.el.removeEventListener("click",this._handleCollapsibleClickBound),this.$headers.each(function(t){t.removeEventListener("keydown",e._handleCollapsibleKeydownBound)})}},{key:"_handleCollapsibleClick",value:function(t){var e=r(t.target).closest(".collapsible-header");if(t.target&&e.length){var i=e.closest(".collapsible");if(i[0]===this.el){var n=e.closest("li"),s=i.children("li"),o=n[0].classList.contains("active"),a=s.index(n);o?this.close(a):this.open(a)}}}},{key:"_handleCollapsibleKeydown",value:function(t){13===t.keyCode&&this._handleCollapsibleClickBound(t)}},{key:"_animateIn",value:function(t){var e=this,i=this.$el.children("li").eq(t);if(i.length){var n=i.children(".collapsible-body");l.remove(n[0]),n.css({display:"block",overflow:"hidden",height:0,paddingTop:"",paddingBottom:""});var s=n.css("padding-top"),o=n.css("padding-bottom"),a=n[0].scrollHeight;n.css({paddingTop:0,paddingBottom:0}),l({targets:n[0],height:a,paddingTop:s,paddingBottom:o,duration:this.options.inDuration,easing:"easeInOutCubic",complete:function(t){n.css({overflow:"",paddingTop:"",paddingBottom:"",height:""}),"function"==typeof e.options.onOpenEnd&&e.options.onOpenEnd.call(e,i[0])}})}}},{key:"_animateOut",value:function(t){var e=this,i=this.$el.children("li").eq(t);if(i.length){var n=i.children(".collapsible-body");l.remove(n[0]),n.css("overflow","hidden"),l({targets:n[0],height:0,paddingTop:0,paddingBottom:0,duration:this.options.outDuration,easing:"easeInOutCubic",complete:function(){n.css({height:"",overflow:"",padding:"",display:""}),"function"==typeof e.options.onCloseEnd&&e.options.onCloseEnd.call(e,i[0])}})}}},{key:"open",value:function(t){var i=this,e=this.$el.children("li").eq(t);if(e.length&&!e[0].classList.contains("active")){if("function"==typeof this.options.onOpenStart&&this.options.onOpenStart.call(this,e[0]),this.options.accordion){var n=this.$el.children("li");this.$el.children("li.active").each(function(t){var e=n.index(r(t));i.close(e)})}e[0].classList.add("active"),this._animateIn(t)}}},{key:"close",value:function(t){var e=this.$el.children("li").eq(t);e.length&&e[0].classList.contains("active")&&("function"==typeof this.options.onCloseStart&&this.options.onCloseStart.call(this,e[0]),e[0].classList.remove("active"),this._animateOut(t))}}],[{key:"init",value:function(t,e){return _get(s.__proto__||Object.getPrototypeOf(s),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Collapsible}},{key:"defaults",get:function(){return e}}]),s}();M.Collapsible=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"collapsible","M_Collapsible")}(cash,M.anime),function(h,i){"use strict";var e={alignment:"left",autoFocus:!0,constrainWidth:!0,container:null,coverTrigger:!0,closeOnClick:!0,hover:!1,inDuration:150,outDuration:250,onOpenStart:null,onOpenEnd:null,onCloseStart:null,onCloseEnd:null,onItemClick:null},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return i.el.M_Dropdown=i,n._dropdowns.push(i),i.id=M.getIdFromTrigger(t),i.dropdownEl=document.getElementById(i.id),i.$dropdownEl=h(i.dropdownEl),i.options=h.extend({},n.defaults,e),i.isOpen=!1,i.isScrollable=!1,i.isTouchMoving=!1,i.focusedIndex=-1,i.filterQuery=[],i.options.container?h(i.options.container).append(i.dropdownEl):i.$el.after(i.dropdownEl),i._makeDropdownFocusable(),i._resetFilterQueryBound=i._resetFilterQuery.bind(i),i._handleDocumentClickBound=i._handleDocumentClick.bind(i),i._handleDocumentTouchmoveBound=i._handleDocumentTouchmove.bind(i),i._handleDropdownClickBound=i._handleDropdownClick.bind(i),i._handleDropdownKeydownBound=i._handleDropdownKeydown.bind(i),i._handleTriggerKeydownBound=i._handleTriggerKeydown.bind(i),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._resetDropdownStyles(),this._removeEventHandlers(),n._dropdowns.splice(n._dropdowns.indexOf(this),1),this.el.M_Dropdown=void 0}},{key:"_setupEventHandlers",value:function(){this.el.addEventListener("keydown",this._handleTriggerKeydownBound),this.dropdownEl.addEventListener("click",this._handleDropdownClickBound),this.options.hover?(this._handleMouseEnterBound=this._handleMouseEnter.bind(this),this.el.addEventListener("mouseenter",this._handleMouseEnterBound),this._handleMouseLeaveBound=this._handleMouseLeave.bind(this),this.el.addEventListener("mouseleave",this._handleMouseLeaveBound),this.dropdownEl.addEventListener("mouseleave",this._handleMouseLeaveBound)):(this._handleClickBound=this._handleClick.bind(this),this.el.addEventListener("click",this._handleClickBound))}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("keydown",this._handleTriggerKeydownBound),this.dropdownEl.removeEventListener("click",this._handleDropdownClickBound),this.options.hover?(this.el.removeEventListener("mouseenter",this._handleMouseEnterBound),this.el.removeEventListener("mouseleave",this._handleMouseLeaveBound),this.dropdownEl.removeEventListener("mouseleave",this._handleMouseLeaveBound)):this.el.removeEventListener("click",this._handleClickBound)}},{key:"_setupTemporaryEventHandlers",value:function(){document.body.addEventListener("click",this._handleDocumentClickBound,!0),document.body.addEventListener("touchend",this._handleDocumentClickBound),document.body.addEventListener("touchmove",this._handleDocumentTouchmoveBound),this.dropdownEl.addEventListener("keydown",this._handleDropdownKeydownBound)}},{key:"_removeTemporaryEventHandlers",value:function(){document.body.removeEventListener("click",this._handleDocumentClickBound,!0),document.body.removeEventListener("touchend",this._handleDocumentClickBound),document.body.removeEventListener("touchmove",this._handleDocumentTouchmoveBound),this.dropdownEl.removeEventListener("keydown",this._handleDropdownKeydownBound)}},{key:"_handleClick",value:function(t){t.preventDefault(),this.open()}},{key:"_handleMouseEnter",value:function(){this.open()}},{key:"_handleMouseLeave",value:function(t){var e=t.toElement||t.relatedTarget,i=!!h(e).closest(".dropdown-content").length,n=!1,s=h(e).closest(".dropdown-trigger");s.length&&s[0].M_Dropdown&&s[0].M_Dropdown.isOpen&&(n=!0),n||i||this.close()}},{key:"_handleDocumentClick",value:function(t){var e=this,i=h(t.target);this.options.closeOnClick&&i.closest(".dropdown-content").length&&!this.isTouchMoving?setTimeout(function(){e.close()},0):!i.closest(".dropdown-trigger").length&&i.closest(".dropdown-content").length||setTimeout(function(){e.close()},0),this.isTouchMoving=!1}},{key:"_handleTriggerKeydown",value:function(t){t.which!==M.keys.ARROW_DOWN&&t.which!==M.keys.ENTER||this.isOpen||(t.preventDefault(),this.open())}},{key:"_handleDocumentTouchmove",value:function(t){h(t.target).closest(".dropdown-content").length&&(this.isTouchMoving=!0)}},{key:"_handleDropdownClick",value:function(t){if("function"==typeof this.options.onItemClick){var e=h(t.target).closest("li")[0];this.options.onItemClick.call(this,e)}}},{key:"_handleDropdownKeydown",value:function(t){if(t.which===M.keys.TAB)t.preventDefault(),this.close();else if(t.which!==M.keys.ARROW_DOWN&&t.which!==M.keys.ARROW_UP||!this.isOpen)if(t.which===M.keys.ENTER&&this.isOpen){var e=this.dropdownEl.children[this.focusedIndex],i=h(e).find("a, button").first();i.length?i[0].click():e&&e.click()}else t.which===M.keys.ESC&&this.isOpen&&(t.preventDefault(),this.close());else{t.preventDefault();var n=t.which===M.keys.ARROW_DOWN?1:-1,s=this.focusedIndex,o=!1;do{if(s+=n,this.dropdownEl.children[s]&&-1!==this.dropdownEl.children[s].tabIndex){o=!0;break}}while(sl.spaceOnBottom?(h="bottom",i+=l.spaceOnTop,o-=l.spaceOnTop):i+=l.spaceOnBottom)),!l[d]){var u="left"===d?"right":"left";l[u]?d=u:l.spaceOnLeft>l.spaceOnRight?(d="right",n+=l.spaceOnLeft,s-=l.spaceOnLeft):(d="left",n+=l.spaceOnRight)}return"bottom"===h&&(o=o-e.height+(this.options.coverTrigger?t.height:0)),"right"===d&&(s=s-e.width+t.width),{x:s,y:o,verticalAlignment:h,horizontalAlignment:d,height:i,width:n}}},{key:"_animateIn",value:function(){var e=this;i.remove(this.dropdownEl),i({targets:this.dropdownEl,opacity:{value:[0,1],easing:"easeOutQuad"},scaleX:[.3,1],scaleY:[.3,1],duration:this.options.inDuration,easing:"easeOutQuint",complete:function(t){e.options.autoFocus&&e.dropdownEl.focus(),"function"==typeof e.options.onOpenEnd&&e.options.onOpenEnd.call(e,e.el)}})}},{key:"_animateOut",value:function(){var e=this;i.remove(this.dropdownEl),i({targets:this.dropdownEl,opacity:{value:0,easing:"easeOutQuint"},scaleX:.3,scaleY:.3,duration:this.options.outDuration,easing:"easeOutQuint",complete:function(t){e._resetDropdownStyles(),"function"==typeof e.options.onCloseEnd&&e.options.onCloseEnd.call(e,e.el)}})}},{key:"_placeDropdown",value:function(){var t=this.options.constrainWidth?this.el.getBoundingClientRect().width:this.dropdownEl.getBoundingClientRect().width;this.dropdownEl.style.width=t+"px";var e=this._getDropdownPosition();this.dropdownEl.style.left=e.x+"px",this.dropdownEl.style.top=e.y+"px",this.dropdownEl.style.height=e.height+"px",this.dropdownEl.style.width=e.width+"px",this.dropdownEl.style.transformOrigin=("left"===e.horizontalAlignment?"0":"100%")+" "+("top"===e.verticalAlignment?"0":"100%")}},{key:"open",value:function(){this.isOpen||(this.isOpen=!0,"function"==typeof this.options.onOpenStart&&this.options.onOpenStart.call(this,this.el),this._resetDropdownStyles(),this.dropdownEl.style.display="block",this._placeDropdown(),this._animateIn(),this._setupTemporaryEventHandlers())}},{key:"close",value:function(){this.isOpen&&(this.isOpen=!1,this.focusedIndex=-1,"function"==typeof this.options.onCloseStart&&this.options.onCloseStart.call(this,this.el),this._animateOut(),this._removeTemporaryEventHandlers(),this.options.autoFocus&&this.el.focus())}},{key:"recalculateDimensions",value:function(){this.isOpen&&(this.$dropdownEl.css({width:"",height:"",left:"",top:"","transform-origin":""}),this._placeDropdown())}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Dropdown}},{key:"defaults",get:function(){return e}}]),n}();t._dropdowns=[],M.Dropdown=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"dropdown","M_Dropdown")}(cash,M.anime),function(s,i){"use strict";var e={opacity:.5,inDuration:250,outDuration:250,onOpenStart:null,onOpenEnd:null,onCloseStart:null,onCloseEnd:null,preventScrolling:!0,dismissible:!0,startingTop:"4%",endingTop:"10%"},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Modal=i).options=s.extend({},n.defaults,e),i.isOpen=!1,i.id=i.$el.attr("id"),i._openingTrigger=void 0,i.$overlay=s(''),i.el.tabIndex=0,i._nthModalOpened=0,n._count++,i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){n._count--,this._removeEventHandlers(),this.el.removeAttribute("style"),this.$overlay.remove(),this.el.M_Modal=void 0}},{key:"_setupEventHandlers",value:function(){this._handleOverlayClickBound=this._handleOverlayClick.bind(this),this._handleModalCloseClickBound=this._handleModalCloseClick.bind(this),1===n._count&&document.body.addEventListener("click",this._handleTriggerClick),this.$overlay[0].addEventListener("click",this._handleOverlayClickBound),this.el.addEventListener("click",this._handleModalCloseClickBound)}},{key:"_removeEventHandlers",value:function(){0===n._count&&document.body.removeEventListener("click",this._handleTriggerClick),this.$overlay[0].removeEventListener("click",this._handleOverlayClickBound),this.el.removeEventListener("click",this._handleModalCloseClickBound)}},{key:"_handleTriggerClick",value:function(t){var e=s(t.target).closest(".modal-trigger");if(e.length){var i=M.getIdFromTrigger(e[0]),n=document.getElementById(i).M_Modal;n&&n.open(e),t.preventDefault()}}},{key:"_handleOverlayClick",value:function(){this.options.dismissible&&this.close()}},{key:"_handleModalCloseClick",value:function(t){s(t.target).closest(".modal-close").length&&this.close()}},{key:"_handleKeydown",value:function(t){27===t.keyCode&&this.options.dismissible&&this.close()}},{key:"_handleFocus",value:function(t){this.el.contains(t.target)||this._nthModalOpened!==n._modalsOpen||this.el.focus()}},{key:"_animateIn",value:function(){var t=this;s.extend(this.el.style,{display:"block",opacity:0}),s.extend(this.$overlay[0].style,{display:"block",opacity:0}),i({targets:this.$overlay[0],opacity:this.options.opacity,duration:this.options.inDuration,easing:"easeOutQuad"});var e={targets:this.el,duration:this.options.inDuration,easing:"easeOutCubic",complete:function(){"function"==typeof t.options.onOpenEnd&&t.options.onOpenEnd.call(t,t.el,t._openingTrigger)}};this.el.classList.contains("bottom-sheet")?s.extend(e,{bottom:0,opacity:1}):s.extend(e,{top:[this.options.startingTop,this.options.endingTop],opacity:1,scaleX:[.8,1],scaleY:[.8,1]}),i(e)}},{key:"_animateOut",value:function(){var t=this;i({targets:this.$overlay[0],opacity:0,duration:this.options.outDuration,easing:"easeOutQuart"});var e={targets:this.el,duration:this.options.outDuration,easing:"easeOutCubic",complete:function(){t.el.style.display="none",t.$overlay.remove(),"function"==typeof t.options.onCloseEnd&&t.options.onCloseEnd.call(t,t.el)}};this.el.classList.contains("bottom-sheet")?s.extend(e,{bottom:"-100%",opacity:0}):s.extend(e,{top:[this.options.endingTop,this.options.startingTop],opacity:0,scaleX:.8,scaleY:.8}),i(e)}},{key:"open",value:function(t){if(!this.isOpen)return this.isOpen=!0,n._modalsOpen++,this._nthModalOpened=n._modalsOpen,this.$overlay[0].style.zIndex=1e3+2*n._modalsOpen,this.el.style.zIndex=1e3+2*n._modalsOpen+1,this._openingTrigger=t?t[0]:void 0,"function"==typeof this.options.onOpenStart&&this.options.onOpenStart.call(this,this.el,this._openingTrigger),this.options.preventScrolling&&(document.body.style.overflow="hidden"),this.el.classList.add("open"),this.el.insertAdjacentElement("afterend",this.$overlay[0]),this.options.dismissible&&(this._handleKeydownBound=this._handleKeydown.bind(this),this._handleFocusBound=this._handleFocus.bind(this),document.addEventListener("keydown",this._handleKeydownBound),document.addEventListener("focus",this._handleFocusBound,!0)),i.remove(this.el),i.remove(this.$overlay[0]),this._animateIn(),this.el.focus(),this}},{key:"close",value:function(){if(this.isOpen)return this.isOpen=!1,n._modalsOpen--,this._nthModalOpened=0,"function"==typeof this.options.onCloseStart&&this.options.onCloseStart.call(this,this.el),this.el.classList.remove("open"),0===n._modalsOpen&&(document.body.style.overflow=""),this.options.dismissible&&(document.removeEventListener("keydown",this._handleKeydownBound),document.removeEventListener("focus",this._handleFocusBound,!0)),i.remove(this.el),i.remove(this.$overlay[0]),this._animateOut(),this}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Modal}},{key:"defaults",get:function(){return e}}]),n}();t._modalsOpen=0,t._count=0,M.Modal=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"modal","M_Modal")}(cash,M.anime),function(o,a){"use strict";var e={inDuration:275,outDuration:200,onOpenStart:null,onOpenEnd:null,onCloseStart:null,onCloseEnd:null},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Materialbox=i).options=o.extend({},n.defaults,e),i.overlayActive=!1,i.doneAnimating=!0,i.placeholder=o("
    ").addClass("material-placeholder"),i.originalWidth=0,i.originalHeight=0,i.originInlineStyles=i.$el.attr("style"),i.caption=i.el.getAttribute("data-caption")||"",i.$el.before(i.placeholder),i.placeholder.append(i.$el),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.M_Materialbox=void 0,o(this.placeholder).after(this.el).remove(),this.$el.removeAttr("style")}},{key:"_setupEventHandlers",value:function(){this._handleMaterialboxClickBound=this._handleMaterialboxClick.bind(this),this.el.addEventListener("click",this._handleMaterialboxClickBound)}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("click",this._handleMaterialboxClickBound)}},{key:"_handleMaterialboxClick",value:function(t){!1===this.doneAnimating||this.overlayActive&&this.doneAnimating?this.close():this.open()}},{key:"_handleWindowScroll",value:function(){this.overlayActive&&this.close()}},{key:"_handleWindowResize",value:function(){this.overlayActive&&this.close()}},{key:"_handleWindowEscape",value:function(t){27===t.keyCode&&this.doneAnimating&&this.overlayActive&&this.close()}},{key:"_makeAncestorsOverflowVisible",value:function(){this.ancestorsChanged=o();for(var t=this.placeholder[0].parentNode;null!==t&&!o(t).is(document);){var e=o(t);"visible"!==e.css("overflow")&&(e.css("overflow","visible"),void 0===this.ancestorsChanged?this.ancestorsChanged=e:this.ancestorsChanged=this.ancestorsChanged.add(e)),t=t.parentNode}}},{key:"_animateImageIn",value:function(){var t=this,e={targets:this.el,height:[this.originalHeight,this.newHeight],width:[this.originalWidth,this.newWidth],left:M.getDocumentScrollLeft()+this.windowWidth/2-this.placeholder.offset().left-this.newWidth/2,top:M.getDocumentScrollTop()+this.windowHeight/2-this.placeholder.offset().top-this.newHeight/2,duration:this.options.inDuration,easing:"easeOutQuad",complete:function(){t.doneAnimating=!0,"function"==typeof t.options.onOpenEnd&&t.options.onOpenEnd.call(t,t.el)}};this.maxWidth=this.$el.css("max-width"),this.maxHeight=this.$el.css("max-height"),"none"!==this.maxWidth&&(e.maxWidth=this.newWidth),"none"!==this.maxHeight&&(e.maxHeight=this.newHeight),a(e)}},{key:"_animateImageOut",value:function(){var t=this,e={targets:this.el,width:this.originalWidth,height:this.originalHeight,left:0,top:0,duration:this.options.outDuration,easing:"easeOutQuad",complete:function(){t.placeholder.css({height:"",width:"",position:"",top:"",left:""}),t.attrWidth&&t.$el.attr("width",t.attrWidth),t.attrHeight&&t.$el.attr("height",t.attrHeight),t.$el.removeAttr("style"),t.originInlineStyles&&t.$el.attr("style",t.originInlineStyles),t.$el.removeClass("active"),t.doneAnimating=!0,t.ancestorsChanged.length&&t.ancestorsChanged.css("overflow",""),"function"==typeof t.options.onCloseEnd&&t.options.onCloseEnd.call(t,t.el)}};a(e)}},{key:"_updateVars",value:function(){this.windowWidth=window.innerWidth,this.windowHeight=window.innerHeight,this.caption=this.el.getAttribute("data-caption")||""}},{key:"open",value:function(){var t=this;this._updateVars(),this.originalWidth=this.el.getBoundingClientRect().width,this.originalHeight=this.el.getBoundingClientRect().height,this.doneAnimating=!1,this.$el.addClass("active"),this.overlayActive=!0,"function"==typeof this.options.onOpenStart&&this.options.onOpenStart.call(this,this.el),this.placeholder.css({width:this.placeholder[0].getBoundingClientRect().width+"px",height:this.placeholder[0].getBoundingClientRect().height+"px",position:"relative",top:0,left:0}),this._makeAncestorsOverflowVisible(),this.$el.css({position:"absolute","z-index":1e3,"will-change":"left, top, width, height"}),this.attrWidth=this.$el.attr("width"),this.attrHeight=this.$el.attr("height"),this.attrWidth&&(this.$el.css("width",this.attrWidth+"px"),this.$el.removeAttr("width")),this.attrHeight&&(this.$el.css("width",this.attrHeight+"px"),this.$el.removeAttr("height")),this.$overlay=o('
    ').css({opacity:0}).one("click",function(){t.doneAnimating&&t.close()}),this.$el.before(this.$overlay);var e=this.$overlay[0].getBoundingClientRect();this.$overlay.css({width:this.windowWidth+"px",height:this.windowHeight+"px",left:-1*e.left+"px",top:-1*e.top+"px"}),a.remove(this.el),a.remove(this.$overlay[0]),a({targets:this.$overlay[0],opacity:1,duration:this.options.inDuration,easing:"easeOutQuad"}),""!==this.caption&&(this.$photocaption&&a.remove(this.$photoCaption[0]),this.$photoCaption=o('
    '),this.$photoCaption.text(this.caption),o("body").append(this.$photoCaption),this.$photoCaption.css({display:"inline"}),a({targets:this.$photoCaption[0],opacity:1,duration:this.options.inDuration,easing:"easeOutQuad"}));var i=0,n=this.originalWidth/this.windowWidth,s=this.originalHeight/this.windowHeight;this.newWidth=0,this.newHeight=0,si.options.responsiveThreshold,i.$img=i.$el.find("img").first(),i.$img.each(function(){this.complete&&s(this).trigger("load")}),i._updateParallax(),i._setupEventHandlers(),i._setupStyles(),n._parallaxes.push(i),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){n._parallaxes.splice(n._parallaxes.indexOf(this),1),this.$img[0].style.transform="",this._removeEventHandlers(),this.$el[0].M_Parallax=void 0}},{key:"_setupEventHandlers",value:function(){this._handleImageLoadBound=this._handleImageLoad.bind(this),this.$img[0].addEventListener("load",this._handleImageLoadBound),0===n._parallaxes.length&&(n._handleScrollThrottled=M.throttle(n._handleScroll,5),window.addEventListener("scroll",n._handleScrollThrottled),n._handleWindowResizeThrottled=M.throttle(n._handleWindowResize,5),window.addEventListener("resize",n._handleWindowResizeThrottled))}},{key:"_removeEventHandlers",value:function(){this.$img[0].removeEventListener("load",this._handleImageLoadBound),0===n._parallaxes.length&&(window.removeEventListener("scroll",n._handleScrollThrottled),window.removeEventListener("resize",n._handleWindowResizeThrottled))}},{key:"_setupStyles",value:function(){this.$img[0].style.opacity=1}},{key:"_handleImageLoad",value:function(){this._updateParallax()}},{key:"_updateParallax",value:function(){var t=0e.options.responsiveThreshold}}},{key:"defaults",get:function(){return e}}]),n}();t._parallaxes=[],M.Parallax=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"parallax","M_Parallax")}(cash),function(a,s){"use strict";var e={duration:300,onShow:null,swipeable:!1,responsiveThreshold:1/0},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Tabs=i).options=a.extend({},n.defaults,e),i.$tabLinks=i.$el.children("li.tab").children("a"),i.index=0,i._setupActiveTabLink(),i.options.swipeable?i._setupSwipeableTabs():i._setupNormalTabs(),i._setTabsAndTabWidth(),i._createIndicator(),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this._indicator.parentNode.removeChild(this._indicator),this.options.swipeable?this._teardownSwipeableTabs():this._teardownNormalTabs(),this.$el[0].M_Tabs=void 0}},{key:"_setupEventHandlers",value:function(){this._handleWindowResizeBound=this._handleWindowResize.bind(this),window.addEventListener("resize",this._handleWindowResizeBound),this._handleTabClickBound=this._handleTabClick.bind(this),this.el.addEventListener("click",this._handleTabClickBound)}},{key:"_removeEventHandlers",value:function(){window.removeEventListener("resize",this._handleWindowResizeBound),this.el.removeEventListener("click",this._handleTabClickBound)}},{key:"_handleWindowResize",value:function(){this._setTabsAndTabWidth(),0!==this.tabWidth&&0!==this.tabsWidth&&(this._indicator.style.left=this._calcLeftPos(this.$activeTabLink)+"px",this._indicator.style.right=this._calcRightPos(this.$activeTabLink)+"px")}},{key:"_handleTabClick",value:function(t){var e=this,i=a(t.target).closest("li.tab"),n=a(t.target).closest("a");if(n.length&&n.parent().hasClass("tab"))if(i.hasClass("disabled"))t.preventDefault();else if(!n.attr("target")){this.$activeTabLink.removeClass("active");var s=this.$content;this.$activeTabLink=n,this.$content=a(M.escapeHash(n[0].hash)),this.$tabLinks=this.$el.children("li.tab").children("a"),this.$activeTabLink.addClass("active");var o=this.index;this.index=Math.max(this.$tabLinks.index(n),0),this.options.swipeable?this._tabsCarousel&&this._tabsCarousel.set(this.index,function(){"function"==typeof e.options.onShow&&e.options.onShow.call(e,e.$content[0])}):this.$content.length&&(this.$content[0].style.display="block",this.$content.addClass("active"),"function"==typeof this.options.onShow&&this.options.onShow.call(this,this.$content[0]),s.length&&!s.is(this.$content)&&(s[0].style.display="none",s.removeClass("active"))),this._setTabsAndTabWidth(),this._animateIndicator(o),t.preventDefault()}}},{key:"_createIndicator",value:function(){var t=this,e=document.createElement("li");e.classList.add("indicator"),this.el.appendChild(e),this._indicator=e,setTimeout(function(){t._indicator.style.left=t._calcLeftPos(t.$activeTabLink)+"px",t._indicator.style.right=t._calcRightPos(t.$activeTabLink)+"px"},0)}},{key:"_setupActiveTabLink",value:function(){this.$activeTabLink=a(this.$tabLinks.filter('[href="'+location.hash+'"]')),0===this.$activeTabLink.length&&(this.$activeTabLink=this.$el.children("li.tab").children("a.active").first()),0===this.$activeTabLink.length&&(this.$activeTabLink=this.$el.children("li.tab").children("a").first()),this.$tabLinks.removeClass("active"),this.$activeTabLink[0].classList.add("active"),this.index=Math.max(this.$tabLinks.index(this.$activeTabLink),0),this.$activeTabLink.length&&(this.$content=a(M.escapeHash(this.$activeTabLink[0].hash)),this.$content.addClass("active"))}},{key:"_setupSwipeableTabs",value:function(){var i=this;window.innerWidth>this.options.responsiveThreshold&&(this.options.swipeable=!1);var n=a();this.$tabLinks.each(function(t){var e=a(M.escapeHash(t.hash));e.addClass("carousel-item"),n=n.add(e)});var t=a('');n.first().before(t),t.append(n),n[0].style.display="";var e=this.$activeTabLink.closest(".tab").index();this._tabsCarousel=M.Carousel.init(t[0],{fullWidth:!0,noWrap:!0,onCycleTo:function(t){var e=i.index;i.index=a(t).index(),i.$activeTabLink.removeClass("active"),i.$activeTabLink=i.$tabLinks.eq(i.index),i.$activeTabLink.addClass("active"),i._animateIndicator(e),"function"==typeof i.options.onShow&&i.options.onShow.call(i,i.$content[0])}}),this._tabsCarousel.set(e)}},{key:"_teardownSwipeableTabs",value:function(){var t=this._tabsCarousel.$el;this._tabsCarousel.destroy(),t.after(t.children()),t.remove()}},{key:"_setupNormalTabs",value:function(){this.$tabLinks.not(this.$activeTabLink).each(function(t){if(t.hash){var e=a(M.escapeHash(t.hash));e.length&&(e[0].style.display="none")}})}},{key:"_teardownNormalTabs",value:function(){this.$tabLinks.each(function(t){if(t.hash){var e=a(M.escapeHash(t.hash));e.length&&(e[0].style.display="")}})}},{key:"_setTabsAndTabWidth",value:function(){this.tabsWidth=this.$el.width(),this.tabWidth=Math.max(this.tabsWidth,this.el.scrollWidth)/this.$tabLinks.length}},{key:"_calcRightPos",value:function(t){return Math.ceil(this.tabsWidth-t.position().left-t[0].getBoundingClientRect().width)}},{key:"_calcLeftPos",value:function(t){return Math.floor(t.position().left)}},{key:"updateTabIndicator",value:function(){this._setTabsAndTabWidth(),this._animateIndicator(this.index)}},{key:"_animateIndicator",value:function(t){var e=0,i=0;0<=this.index-t?e=90:i=90;var n={targets:this._indicator,left:{value:this._calcLeftPos(this.$activeTabLink),delay:e},right:{value:this._calcRightPos(this.$activeTabLink),delay:i},duration:this.options.duration,easing:"easeOutQuad"};s.remove(this._indicator),s(n)}},{key:"select",value:function(t){var e=this.$tabLinks.filter('[href="#'+t+'"]');e.length&&e.trigger("click")}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Tabs}},{key:"defaults",get:function(){return e}}]),n}();M.Tabs=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"tabs","M_Tabs")}(cash,M.anime),function(d,e){"use strict";var i={exitDelay:200,enterDelay:0,html:null,margin:5,inDuration:250,outDuration:200,position:"bottom",transitionMovement:10},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Tooltip=i).options=d.extend({},n.defaults,e),i.isOpen=!1,i.isHovered=!1,i.isFocused=!1,i._appendTooltipEl(),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){d(this.tooltipEl).remove(),this._removeEventHandlers(),this.el.M_Tooltip=void 0}},{key:"_appendTooltipEl",value:function(){var t=document.createElement("div");t.classList.add("material-tooltip"),this.tooltipEl=t;var e=document.createElement("div");e.classList.add("tooltip-content"),e.innerHTML=this.options.html,t.appendChild(e),document.body.appendChild(t)}},{key:"_updateTooltipContent",value:function(){this.tooltipEl.querySelector(".tooltip-content").innerHTML=this.options.html}},{key:"_setupEventHandlers",value:function(){this._handleMouseEnterBound=this._handleMouseEnter.bind(this),this._handleMouseLeaveBound=this._handleMouseLeave.bind(this),this._handleFocusBound=this._handleFocus.bind(this),this._handleBlurBound=this._handleBlur.bind(this),this.el.addEventListener("mouseenter",this._handleMouseEnterBound),this.el.addEventListener("mouseleave",this._handleMouseLeaveBound),this.el.addEventListener("focus",this._handleFocusBound,!0),this.el.addEventListener("blur",this._handleBlurBound,!0)}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("mouseenter",this._handleMouseEnterBound),this.el.removeEventListener("mouseleave",this._handleMouseLeaveBound),this.el.removeEventListener("focus",this._handleFocusBound,!0),this.el.removeEventListener("blur",this._handleBlurBound,!0)}},{key:"open",value:function(t){this.isOpen||(t=void 0===t||void 0,this.isOpen=!0,this.options=d.extend({},this.options,this._getAttributeOptions()),this._updateTooltipContent(),this._setEnterDelayTimeout(t))}},{key:"close",value:function(){this.isOpen&&(this.isHovered=!1,this.isFocused=!1,this.isOpen=!1,this._setExitDelayTimeout())}},{key:"_setExitDelayTimeout",value:function(){var t=this;clearTimeout(this._exitDelayTimeout),this._exitDelayTimeout=setTimeout(function(){t.isHovered||t.isFocused||t._animateOut()},this.options.exitDelay)}},{key:"_setEnterDelayTimeout",value:function(t){var e=this;clearTimeout(this._enterDelayTimeout),this._enterDelayTimeout=setTimeout(function(){(e.isHovered||e.isFocused||t)&&e._animateIn()},this.options.enterDelay)}},{key:"_positionTooltip",value:function(){var t,e=this.el,i=this.tooltipEl,n=e.offsetHeight,s=e.offsetWidth,o=i.offsetHeight,a=i.offsetWidth,r=this.options.margin,l=void 0,h=void 0;this.xMovement=0,this.yMovement=0,l=e.getBoundingClientRect().top+M.getDocumentScrollTop(),h=e.getBoundingClientRect().left+M.getDocumentScrollLeft(),"top"===this.options.position?(l+=-o-r,h+=s/2-a/2,this.yMovement=-this.options.transitionMovement):"right"===this.options.position?(l+=n/2-o/2,h+=s+r,this.xMovement=this.options.transitionMovement):"left"===this.options.position?(l+=n/2-o/2,h+=-a-r,this.xMovement=-this.options.transitionMovement):(l+=n+r,h+=s/2-a/2,this.yMovement=this.options.transitionMovement),t=this._repositionWithinScreen(h,l,a,o),d(i).css({top:t.y+"px",left:t.x+"px"})}},{key:"_repositionWithinScreen",value:function(t,e,i,n){var s=M.getDocumentScrollLeft(),o=M.getDocumentScrollTop(),a=t-s,r=e-o,l={left:a,top:r,width:i,height:n},h=this.options.margin+this.options.transitionMovement,d=M.checkWithinContainer(document.body,l,h);return d.left?a=h:d.right&&(a-=a+i-window.innerWidth),d.top?r=h:d.bottom&&(r-=r+n-window.innerHeight),{x:a+s,y:r+o}}},{key:"_animateIn",value:function(){this._positionTooltip(),this.tooltipEl.style.visibility="visible",e.remove(this.tooltipEl),e({targets:this.tooltipEl,opacity:1,translateX:this.xMovement,translateY:this.yMovement,duration:this.options.inDuration,easing:"easeOutCubic"})}},{key:"_animateOut",value:function(){e.remove(this.tooltipEl),e({targets:this.tooltipEl,opacity:0,translateX:0,translateY:0,duration:this.options.outDuration,easing:"easeOutCubic"})}},{key:"_handleMouseEnter",value:function(){this.isHovered=!0,this.isFocused=!1,this.open(!1)}},{key:"_handleMouseLeave",value:function(){this.isHovered=!1,this.isFocused=!1,this.close()}},{key:"_handleFocus",value:function(){M.tabPressed&&(this.isFocused=!0,this.open(!1))}},{key:"_handleBlur",value:function(){this.isFocused=!1,this.close()}},{key:"_getAttributeOptions",value:function(){var t={},e=this.el.getAttribute("data-tooltip"),i=this.el.getAttribute("data-position");return e&&(t.html=e),i&&(t.position=i),t}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Tooltip}},{key:"defaults",get:function(){return i}}]),n}();M.Tooltip=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"tooltip","M_Tooltip")}(cash,M.anime),function(i){"use strict";var t=t||{},e=document.querySelectorAll.bind(document);function m(t){var e="";for(var i in t)t.hasOwnProperty(i)&&(e+=i+":"+t[i]+";");return e}var g={duration:750,show:function(t,e){if(2===t.button)return!1;var i=e||this,n=document.createElement("div");n.className="waves-ripple",i.appendChild(n);var s,o,a,r,l,h,d,u=(h={top:0,left:0},d=(s=i)&&s.ownerDocument,o=d.documentElement,void 0!==s.getBoundingClientRect&&(h=s.getBoundingClientRect()),a=null!==(l=r=d)&&l===l.window?r:9===r.nodeType&&r.defaultView,{top:h.top+a.pageYOffset-o.clientTop,left:h.left+a.pageXOffset-o.clientLeft}),c=t.pageY-u.top,p=t.pageX-u.left,v="scale("+i.clientWidth/100*10+")";"touches"in t&&(c=t.touches[0].pageY-u.top,p=t.touches[0].pageX-u.left),n.setAttribute("data-hold",Date.now()),n.setAttribute("data-scale",v),n.setAttribute("data-x",p),n.setAttribute("data-y",c);var f={top:c+"px",left:p+"px"};n.className=n.className+" waves-notransition",n.setAttribute("style",m(f)),n.className=n.className.replace("waves-notransition",""),f["-webkit-transform"]=v,f["-moz-transform"]=v,f["-ms-transform"]=v,f["-o-transform"]=v,f.transform=v,f.opacity="1",f["-webkit-transition-duration"]=g.duration+"ms",f["-moz-transition-duration"]=g.duration+"ms",f["-o-transition-duration"]=g.duration+"ms",f["transition-duration"]=g.duration+"ms",f["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",n.setAttribute("style",m(f))},hide:function(t){l.touchup(t);var e=this,i=(e.clientWidth,null),n=e.getElementsByClassName("waves-ripple");if(!(0i||1"+o+""+a+""+r+""),i.length&&e.prepend(i)}},{key:"_resetCurrentElement",value:function(){this.activeIndex=-1,this.$active.removeClass("active")}},{key:"_resetAutocomplete",value:function(){h(this.container).empty(),this._resetCurrentElement(),this.oldVal=null,this.isOpen=!1,this._mousedown=!1}},{key:"selectOption",value:function(t){var e=t.text().trim();this.el.value=e,this.$el.trigger("change"),this._resetAutocomplete(),this.close(),"function"==typeof this.options.onAutocomplete&&this.options.onAutocomplete.call(this,e)}},{key:"_renderDropdown",value:function(t,i){var n=this;this._resetAutocomplete();var e=[];for(var s in t)if(t.hasOwnProperty(s)&&-1!==s.toLowerCase().indexOf(i)){if(this.count>=this.options.limit)break;var o={data:t[s],key:s};e.push(o),this.count++}if(this.options.sortFunction){e.sort(function(t,e){return n.options.sortFunction(t.key.toLowerCase(),e.key.toLowerCase(),i.toLowerCase())})}for(var a=0;a");r.data?l.append(''+r.key+""):l.append(""+r.key+""),h(this.container).append(l),this._highlight(i,l)}}},{key:"open",value:function(){var t=this.el.value.toLowerCase();this._resetAutocomplete(),t.length>=this.options.minLength&&(this.isOpen=!0,this._renderDropdown(this.options.data,t)),this.dropdown.isOpen?this.dropdown.recalculateDimensions():this.dropdown.open()}},{key:"close",value:function(){this.dropdown.close()}},{key:"updateData",value:function(t){var e=this.el.value.toLowerCase();this.options.data=t,this.isOpen&&this._renderDropdown(t,e)}}],[{key:"init",value:function(t,e){return _get(s.__proto__||Object.getPrototypeOf(s),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Autocomplete}},{key:"defaults",get:function(){return e}}]),s}();t._keydown=!1,M.Autocomplete=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"autocomplete","M_Autocomplete")}(cash),function(d){M.updateTextFields=function(){d("input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], input[type=date], input[type=time], textarea").each(function(t,e){var i=d(this);0'),d("body").append(e));var i=t.css("font-family"),n=t.css("font-size"),s=t.css("line-height"),o=t.css("padding-top"),a=t.css("padding-right"),r=t.css("padding-bottom"),l=t.css("padding-left");n&&e.css("font-size",n),i&&e.css("font-family",i),s&&e.css("line-height",s),o&&e.css("padding-top",o),a&&e.css("padding-right",a),r&&e.css("padding-bottom",r),l&&e.css("padding-left",l),t.data("original-height")||t.data("original-height",t.height()),"off"===t.attr("wrap")&&e.css("overflow-wrap","normal").css("white-space","pre"),e.text(t[0].value+"\n");var h=e.html().replace(/\n/g,"
    ");e.html(h),0'),this.$slides.each(function(t,e){var i=s('
  • ');n.$indicators.append(i[0])}),this.$el.append(this.$indicators[0]),this.$indicators=this.$indicators.children("li.indicator-item"))}},{key:"_removeIndicators",value:function(){this.$el.find("ul.indicators").remove()}},{key:"set",value:function(t){var e=this;if(t>=this.$slides.length?t=0:t<0&&(t=this.$slides.length-1),this.activeIndex!=t){this.$active=this.$slides.eq(this.activeIndex);var i=this.$active.find(".caption");this.$active.removeClass("active"),o({targets:this.$active[0],opacity:0,duration:this.options.duration,easing:"easeOutQuad",complete:function(){e.$slides.not(".active").each(function(t){o({targets:t,opacity:0,translateX:0,translateY:0,duration:0,easing:"easeOutQuad"})})}}),this._animateCaptionIn(i[0],this.options.duration),this.options.indicators&&(this.$indicators.eq(this.activeIndex).removeClass("active"),this.$indicators.eq(t).addClass("active")),o({targets:this.$slides.eq(t)[0],opacity:1,duration:this.options.duration,easing:"easeOutQuad"}),o({targets:this.$slides.eq(t).find(".caption")[0],opacity:1,translateX:0,translateY:0,duration:this.options.duration,delay:this.options.duration,easing:"easeOutQuad"}),this.$slides.eq(t).addClass("active"),this.activeIndex=t,this.start()}}},{key:"pause",value:function(){clearInterval(this.interval)}},{key:"start",value:function(){clearInterval(this.interval),this.interval=setInterval(this._handleIntervalBound,this.options.duration+this.options.interval)}},{key:"next",value:function(){var t=this.activeIndex+1;t>=this.$slides.length?t=0:t<0&&(t=this.$slides.length-1),this.set(t)}},{key:"prev",value:function(){var t=this.activeIndex-1;t>=this.$slides.length?t=0:t<0&&(t=this.$slides.length-1),this.set(t)}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Slider}},{key:"defaults",get:function(){return e}}]),n}();M.Slider=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"slider","M_Slider")}(cash,M.anime),function(n,s){n(document).on("click",".card",function(t){if(n(this).children(".card-reveal").length){var i=n(t.target).closest(".card");void 0===i.data("initialOverflow")&&i.data("initialOverflow",void 0===i.css("overflow")?"":i.css("overflow"));var e=n(this).find(".card-reveal");n(t.target).is(n(".card-reveal .card-title"))||n(t.target).is(n(".card-reveal .card-title i"))?s({targets:e[0],translateY:0,duration:225,easing:"easeInOutQuad",complete:function(t){var e=t.animatables[0].target;n(e).css({display:"none"}),i.css("overflow",i.data("initialOverflow"))}}):(n(t.target).is(n(".card .activator"))||n(t.target).is(n(".card .activator i")))&&(i.css("overflow","hidden"),e.css({display:"block"}),s({targets:e[0],translateY:"-100%",duration:300,easing:"easeInOutQuad"}))}})}(cash,M.anime),function(h){"use strict";var e={data:[],placeholder:"",secondaryPlaceholder:"",autocompleteOptions:{},limit:1/0,onChipAdd:null,onChipSelect:null,onChipDelete:null},t=function(t){function l(t,e){_classCallCheck(this,l);var i=_possibleConstructorReturn(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l,t,e));return(i.el.M_Chips=i).options=h.extend({},l.defaults,e),i.$el.addClass("chips input-field"),i.chipsData=[],i.$chips=h(),i._setupInput(),i.hasAutocomplete=0"),this.$el.append(this.$input)),this.$input.addClass("input")}},{key:"_setupLabel",value:function(){this.$label=this.$el.find("label"),this.$label.length&&this.$label.setAttribute("for",this.$input.attr("id"))}},{key:"_setPlaceholder",value:function(){void 0!==this.chipsData&&!this.chipsData.length&&this.options.placeholder?h(this.$input).prop("placeholder",this.options.placeholder):(void 0===this.chipsData||this.chipsData.length)&&this.options.secondaryPlaceholder&&h(this.$input).prop("placeholder",this.options.secondaryPlaceholder)}},{key:"_isValid",value:function(t){if(t.hasOwnProperty("tag")&&""!==t.tag){for(var e=!1,i=0;i=this.options.limit)){var e=this._renderChip(t);this.$chips.add(e),this.chipsData.push(t),h(this.$input).before(e),this._setPlaceholder(),"function"==typeof this.options.onChipAdd&&this.options.onChipAdd.call(this,this.$el,e)}}},{key:"deleteChip",value:function(t){var e=this.$chips.eq(t);this.$chips.eq(t).remove(),this.$chips=this.$chips.filter(function(t){return 0<=h(t).index()}),this.chipsData.splice(t,1),this._setPlaceholder(),"function"==typeof this.options.onChipDelete&&this.options.onChipDelete.call(this,this.$el,e[0])}},{key:"selectChip",value:function(t){var e=this.$chips.eq(t);(this._selectedChip=e)[0].focus(),"function"==typeof this.options.onChipSelect&&this.options.onChipSelect.call(this,this.$el,e[0])}}],[{key:"init",value:function(t,e){return _get(l.__proto__||Object.getPrototypeOf(l),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Chips}},{key:"_handleChipsKeydown",value:function(t){l._keydown=!0;var e=h(t.target).closest(".chips"),i=t.target&&e.length;if(!h(t.target).is("input, textarea")&&i){var n=e[0].M_Chips;if(8===t.keyCode||46===t.keyCode){t.preventDefault();var s=n.chipsData.length;if(n._selectedChip){var o=n._selectedChip.index();n.deleteChip(o),n._selectedChip=null,s=Math.max(o-1,0)}n.chipsData.length&&n.selectChip(s)}else if(37===t.keyCode){if(n._selectedChip){var a=n._selectedChip.index()-1;if(a<0)return;n.selectChip(a)}}else if(39===t.keyCode&&n._selectedChip){var r=n._selectedChip.index()+1;r>=n.chipsData.length?n.$input[0].focus():n.selectChip(r)}}}},{key:"_handleChipsKeyup",value:function(t){l._keydown=!1}},{key:"_handleChipsBlur",value:function(t){l._keydown||(h(t.target).closest(".chips")[0].M_Chips._selectedChip=null)}},{key:"defaults",get:function(){return e}}]),l}();t._keydown=!1,M.Chips=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"chips","M_Chips"),h(document).ready(function(){h(document.body).on("click",".chip .close",function(){var t=h(this).closest(".chips");t.length&&t[0].M_Chips||h(this).closest(".chip").remove()})})}(cash),function(s){"use strict";var e={top:0,bottom:1/0,offset:0,onPositionChange:null},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Pushpin=i).options=s.extend({},n.defaults,e),i.originalOffset=i.el.offsetTop,n._pushpins.push(i),i._setupEventHandlers(),i._updatePosition(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this.el.style.top=null,this._removePinClasses(),this._removeEventHandlers();var t=n._pushpins.indexOf(this);n._pushpins.splice(t,1)}},{key:"_setupEventHandlers",value:function(){document.addEventListener("scroll",n._updateElements)}},{key:"_removeEventHandlers",value:function(){document.removeEventListener("scroll",n._updateElements)}},{key:"_updatePosition",value:function(){var t=M.getDocumentScrollTop()+this.options.offset;this.options.top<=t&&this.options.bottom>=t&&!this.el.classList.contains("pinned")&&(this._removePinClasses(),this.el.style.top=this.options.offset+"px",this.el.classList.add("pinned"),"function"==typeof this.options.onPositionChange&&this.options.onPositionChange.call(this,"pinned")),tthis.options.bottom&&!this.el.classList.contains("pin-bottom")&&(this._removePinClasses(),this.el.classList.add("pin-bottom"),this.el.style.top=this.options.bottom-this.originalOffset+"px","function"==typeof this.options.onPositionChange&&this.options.onPositionChange.call(this,"pin-bottom"))}},{key:"_removePinClasses",value:function(){this.el.classList.remove("pin-top"),this.el.classList.remove("pinned"),this.el.classList.remove("pin-bottom")}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Pushpin}},{key:"_updateElements",value:function(){for(var t in n._pushpins){n._pushpins[t]._updatePosition()}}},{key:"defaults",get:function(){return e}}]),n}();t._pushpins=[],M.Pushpin=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"pushpin","M_Pushpin")}(cash),function(r,s){"use strict";var e={direction:"top",hoverEnabled:!0,toolbarEnabled:!1};r.fn.reverse=[].reverse;var t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_FloatingActionButton=i).options=r.extend({},n.defaults,e),i.isOpen=!1,i.$anchor=i.$el.children("a").first(),i.$menu=i.$el.children("ul").first(),i.$floatingBtns=i.$el.find("ul .btn-floating"),i.$floatingBtnsReverse=i.$el.find("ul .btn-floating").reverse(),i.offsetY=0,i.offsetX=0,i.$el.addClass("direction-"+i.options.direction),"top"===i.options.direction?i.offsetY=40:"right"===i.options.direction?i.offsetX=-40:"bottom"===i.options.direction?i.offsetY=-40:i.offsetX=40,i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.M_FloatingActionButton=void 0}},{key:"_setupEventHandlers",value:function(){this._handleFABClickBound=this._handleFABClick.bind(this),this._handleOpenBound=this.open.bind(this),this._handleCloseBound=this.close.bind(this),this.options.hoverEnabled&&!this.options.toolbarEnabled?(this.el.addEventListener("mouseenter",this._handleOpenBound),this.el.addEventListener("mouseleave",this._handleCloseBound)):this.el.addEventListener("click",this._handleFABClickBound)}},{key:"_removeEventHandlers",value:function(){this.options.hoverEnabled&&!this.options.toolbarEnabled?(this.el.removeEventListener("mouseenter",this._handleOpenBound),this.el.removeEventListener("mouseleave",this._handleCloseBound)):this.el.removeEventListener("click",this._handleFABClickBound)}},{key:"_handleFABClick",value:function(){this.isOpen?this.close():this.open()}},{key:"_handleDocumentClick",value:function(t){r(t.target).closest(this.$menu).length||this.close()}},{key:"open",value:function(){this.isOpen||(this.options.toolbarEnabled?this._animateInToolbar():this._animateInFAB(),this.isOpen=!0)}},{key:"close",value:function(){this.isOpen&&(this.options.toolbarEnabled?(window.removeEventListener("scroll",this._handleCloseBound,!0),document.body.removeEventListener("click",this._handleDocumentClickBound,!0),this._animateOutToolbar()):this._animateOutFAB(),this.isOpen=!1)}},{key:"_animateInFAB",value:function(){var e=this;this.$el.addClass("active");var i=0;this.$floatingBtnsReverse.each(function(t){s({targets:t,opacity:1,scale:[.4,1],translateY:[e.offsetY,0],translateX:[e.offsetX,0],duration:275,delay:i,easing:"easeInOutQuad"}),i+=40})}},{key:"_animateOutFAB",value:function(){var e=this;this.$floatingBtnsReverse.each(function(t){s.remove(t),s({targets:t,opacity:0,scale:.4,translateY:e.offsetY,translateX:e.offsetX,duration:175,easing:"easeOutQuad",complete:function(){e.$el.removeClass("active")}})})}},{key:"_animateInToolbar",value:function(){var t,e=this,i=window.innerWidth,n=window.innerHeight,s=this.el.getBoundingClientRect(),o=r('
    '),a=this.$anchor.css("background-color");this.$anchor.append(o),this.offsetX=s.left-i/2+s.width/2,this.offsetY=n-s.bottom,t=i/o[0].clientWidth,this.btnBottom=s.bottom,this.btnLeft=s.left,this.btnWidth=s.width,this.$el.addClass("active"),this.$el.css({"text-align":"center",width:"100%",bottom:0,left:0,transform:"translateX("+this.offsetX+"px)",transition:"none"}),this.$anchor.css({transform:"translateY("+-this.offsetY+"px)",transition:"none"}),o.css({"background-color":a}),setTimeout(function(){e.$el.css({transform:"",transition:"transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s"}),e.$anchor.css({overflow:"visible",transform:"",transition:"transform .2s"}),setTimeout(function(){e.$el.css({overflow:"hidden","background-color":a}),o.css({transform:"scale("+t+")",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"}),e.$menu.children("li").children("a").css({opacity:1}),e._handleDocumentClickBound=e._handleDocumentClick.bind(e),window.addEventListener("scroll",e._handleCloseBound,!0),document.body.addEventListener("click",e._handleDocumentClickBound,!0)},100)},0)}},{key:"_animateOutToolbar",value:function(){var t=this,e=window.innerWidth,i=window.innerHeight,n=this.$el.find(".fab-backdrop"),s=this.$anchor.css("background-color");this.offsetX=this.btnLeft-e/2+this.btnWidth/2,this.offsetY=i-this.btnBottom,this.$el.removeClass("active"),this.$el.css({"background-color":"transparent",transition:"none"}),this.$anchor.css({transition:"none"}),n.css({transform:"scale(0)","background-color":s}),this.$menu.children("li").children("a").css({opacity:""}),setTimeout(function(){n.remove(),t.$el.css({"text-align":"",width:"",bottom:"",left:"",overflow:"","background-color":"",transform:"translate3d("+-t.offsetX+"px,0,0)"}),t.$anchor.css({overflow:"",transform:"translate3d(0,"+t.offsetY+"px,0)"}),setTimeout(function(){t.$el.css({transform:"translate3d(0,0,0)",transition:"transform .2s"}),t.$anchor.css({transform:"translate3d(0,0,0)",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"})},20)},200)}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_FloatingActionButton}},{key:"defaults",get:function(){return e}}]),n}();M.FloatingActionButton=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"floatingActionButton","M_FloatingActionButton")}(cash,M.anime),function(g){"use strict";var e={autoClose:!1,format:"mmm dd, yyyy",parse:null,defaultDate:null,setDefaultDate:!1,disableWeekends:!1,disableDayFn:null,firstDay:0,minDate:null,maxDate:null,yearRange:10,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,container:null,showClearBtn:!1,i18n:{cancel:"Cancel",clear:"Clear",done:"Ok",previousMonth:"‹",nextMonth:"›",months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysAbbrev:["S","M","T","W","T","F","S"]},events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null},t=function(t){function B(t,e){_classCallCheck(this,B);var i=_possibleConstructorReturn(this,(B.__proto__||Object.getPrototypeOf(B)).call(this,B,t,e));(i.el.M_Datepicker=i).options=g.extend({},B.defaults,e),e&&e.hasOwnProperty("i18n")&&"object"==typeof e.i18n&&(i.options.i18n=g.extend({},B.defaults.i18n,e.i18n)),i.options.minDate&&i.options.minDate.setHours(0,0,0,0),i.options.maxDate&&i.options.maxDate.setHours(0,0,0,0),i.id=M.guid(),i._setupVariables(),i._insertHTMLIntoDOM(),i._setupModal(),i._setupEventHandlers(),i.options.defaultDate||(i.options.defaultDate=new Date(Date.parse(i.el.value)));var n=i.options.defaultDate;return B._isDate(n)?i.options.setDefaultDate?(i.setDate(n,!0),i.setInputValue()):i.gotoDate(n):i.gotoDate(new Date),i.isOpen=!1,i}return _inherits(B,Component),_createClass(B,[{key:"destroy",value:function(){this._removeEventHandlers(),this.modal.destroy(),g(this.modalEl).remove(),this.destroySelects(),this.el.M_Datepicker=void 0}},{key:"destroySelects",value:function(){var t=this.calendarEl.querySelector(".orig-select-year");t&&M.FormSelect.getInstance(t).destroy();var e=this.calendarEl.querySelector(".orig-select-month");e&&M.FormSelect.getInstance(e).destroy()}},{key:"_insertHTMLIntoDOM",value:function(){this.options.showClearBtn&&(g(this.clearBtn).css({visibility:""}),this.clearBtn.innerHTML=this.options.i18n.clear),this.doneBtn.innerHTML=this.options.i18n.done,this.cancelBtn.innerHTML=this.options.i18n.cancel,this.options.container?this.$modalEl.appendTo(this.options.container):this.$modalEl.insertBefore(this.el)}},{key:"_setupModal",value:function(){var t=this;this.modalEl.id="modal-"+this.id,this.modal=M.Modal.init(this.modalEl,{onCloseEnd:function(){t.isOpen=!1}})}},{key:"toString",value:function(t){var e=this;return t=t||this.options.format,B._isDate(this.date)?t.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g).map(function(t){return e.formats[t]?e.formats[t]():t}).join(""):""}},{key:"setDate",value:function(t,e){if(!t)return this.date=null,this._renderDateDisplay(),this.draw();if("string"==typeof t&&(t=new Date(Date.parse(t))),B._isDate(t)){var i=this.options.minDate,n=this.options.maxDate;B._isDate(i)&&tn.maxDate||n.disableWeekends&&B._isWeekend(y)||n.disableDayFn&&n.disableDayFn(y),isEmpty:C,isStartRange:x,isEndRange:L,isInRange:T,showDaysInNextAndPreviousMonths:n.showDaysInNextAndPreviousMonths};l.push(this.renderDay($)),7==++_&&(r.push(this.renderRow(l,n.isRTL,m)),_=0,m=!(l=[]))}return this.renderTable(n,r,i)}},{key:"renderDay",value:function(t){var e=[],i="false";if(t.isEmpty){if(!t.showDaysInNextAndPreviousMonths)return'';e.push("is-outside-current-month"),e.push("is-selection-disabled")}return t.isDisabled&&e.push("is-disabled"),t.isToday&&e.push("is-today"),t.isSelected&&(e.push("is-selected"),i="true"),t.hasEvent&&e.push("has-event"),t.isInRange&&e.push("is-inrange"),t.isStartRange&&e.push("is-startrange"),t.isEndRange&&e.push("is-endrange"),'"}},{key:"renderRow",value:function(t,e,i){return''+(e?t.reverse():t).join("")+""}},{key:"renderTable",value:function(t,e,i){return'
    '+this.renderHead(t)+this.renderBody(e)+"
    "}},{key:"renderHead",value:function(t){var e=void 0,i=[];for(e=0;e<7;e++)i.push(''+this.renderDayName(t,e,!0)+"");return""+(t.isRTL?i.reverse():i).join("")+""}},{key:"renderBody",value:function(t){return""+t.join("")+""}},{key:"renderTitle",value:function(t,e,i,n,s,o){var a,r,l=void 0,h=void 0,d=void 0,u=this.options,c=i===u.minYear,p=i===u.maxYear,v='
    ',f=!0,m=!0;for(d=[],l=0;l<12;l++)d.push('");for(a='",g.isArray(u.yearRange)?(l=u.yearRange[0],h=u.yearRange[1]+1):(l=i-u.yearRange,h=1+i+u.yearRange),d=[];l=u.minYear&&d.push('");r='";v+='',v+='
    ',u.showMonthAfterYear?v+=r+a:v+=a+r,v+="
    ",c&&(0===n||u.minMonth>=n)&&(f=!1),p&&(11===n||u.maxMonth<=n)&&(m=!1);return(v+='')+"
    "}},{key:"draw",value:function(t){if(this.isOpen||t){var e,i=this.options,n=i.minYear,s=i.maxYear,o=i.minMonth,a=i.maxMonth,r="";this._y<=n&&(this._y=n,!isNaN(o)&&this._m=s&&(this._y=s,!isNaN(a)&&this._m>a&&(this._m=a)),e="datepicker-title-"+Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,2);for(var l=0;l<1;l++)this._renderDateDisplay(),r+=this.renderTitle(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e);this.destroySelects(),this.calendarEl.innerHTML=r;var h=this.calendarEl.querySelector(".orig-select-year"),d=this.calendarEl.querySelector(".orig-select-month");M.FormSelect.init(h,{classes:"select-year",dropdownOptions:{container:document.body,constrainWidth:!1}}),M.FormSelect.init(d,{classes:"select-month",dropdownOptions:{container:document.body,constrainWidth:!1}}),h.addEventListener("change",this._handleYearChange.bind(this)),d.addEventListener("change",this._handleMonthChange.bind(this)),"function"==typeof this.options.onDraw&&this.options.onDraw(this)}}},{key:"_setupEventHandlers",value:function(){this._handleInputKeydownBound=this._handleInputKeydown.bind(this),this._handleInputClickBound=this._handleInputClick.bind(this),this._handleInputChangeBound=this._handleInputChange.bind(this),this._handleCalendarClickBound=this._handleCalendarClick.bind(this),this._finishSelectionBound=this._finishSelection.bind(this),this._handleMonthChange=this._handleMonthChange.bind(this),this._closeBound=this.close.bind(this),this.el.addEventListener("click",this._handleInputClickBound),this.el.addEventListener("keydown",this._handleInputKeydownBound),this.el.addEventListener("change",this._handleInputChangeBound),this.calendarEl.addEventListener("click",this._handleCalendarClickBound),this.doneBtn.addEventListener("click",this._finishSelectionBound),this.cancelBtn.addEventListener("click",this._closeBound),this.options.showClearBtn&&(this._handleClearClickBound=this._handleClearClick.bind(this),this.clearBtn.addEventListener("click",this._handleClearClickBound))}},{key:"_setupVariables",value:function(){var e=this;this.$modalEl=g(B._template),this.modalEl=this.$modalEl[0],this.calendarEl=this.modalEl.querySelector(".datepicker-calendar"),this.yearTextEl=this.modalEl.querySelector(".year-text"),this.dateTextEl=this.modalEl.querySelector(".date-text"),this.options.showClearBtn&&(this.clearBtn=this.modalEl.querySelector(".datepicker-clear")),this.doneBtn=this.modalEl.querySelector(".datepicker-done"),this.cancelBtn=this.modalEl.querySelector(".datepicker-cancel"),this.formats={d:function(){return e.date.getDate()},dd:function(){var t=e.date.getDate();return(t<10?"0":"")+t},ddd:function(){return e.options.i18n.weekdaysShort[e.date.getDay()]},dddd:function(){return e.options.i18n.weekdays[e.date.getDay()]},m:function(){return e.date.getMonth()+1},mm:function(){var t=e.date.getMonth()+1;return(t<10?"0":"")+t},mmm:function(){return e.options.i18n.monthsShort[e.date.getMonth()]},mmmm:function(){return e.options.i18n.months[e.date.getMonth()]},yy:function(){return(""+e.date.getFullYear()).slice(2)},yyyy:function(){return e.date.getFullYear()}}}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("click",this._handleInputClickBound),this.el.removeEventListener("keydown",this._handleInputKeydownBound),this.el.removeEventListener("change",this._handleInputChangeBound),this.calendarEl.removeEventListener("click",this._handleCalendarClickBound)}},{key:"_handleInputClick",value:function(){this.open()}},{key:"_handleInputKeydown",value:function(t){t.which===M.keys.ENTER&&(t.preventDefault(),this.open())}},{key:"_handleCalendarClick",value:function(t){if(this.isOpen){var e=g(t.target);e.hasClass("is-disabled")||(!e.hasClass("datepicker-day-button")||e.hasClass("is-empty")||e.parent().hasClass("is-disabled")?e.closest(".month-prev").length?this.prevMonth():e.closest(".month-next").length&&this.nextMonth():(this.setDate(new Date(t.target.getAttribute("data-year"),t.target.getAttribute("data-month"),t.target.getAttribute("data-day"))),this.options.autoClose&&this._finishSelection()))}}},{key:"_handleClearClick",value:function(){this.date=null,this.setInputValue(),this.close()}},{key:"_handleMonthChange",value:function(t){this.gotoMonth(t.target.value)}},{key:"_handleYearChange",value:function(t){this.gotoYear(t.target.value)}},{key:"gotoMonth",value:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())}},{key:"gotoYear",value:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())}},{key:"_handleInputChange",value:function(t){var e=void 0;t.firedBy!==this&&(e=this.options.parse?this.options.parse(this.el.value,this.options.format):new Date(Date.parse(this.el.value)),B._isDate(e)&&this.setDate(e))}},{key:"renderDayName",value:function(t,e,i){for(e+=t.firstDay;7<=e;)e-=7;return i?t.i18n.weekdaysAbbrev[e]:t.i18n.weekdays[e]}},{key:"_finishSelection",value:function(){this.setInputValue(),this.close()}},{key:"open",value:function(){if(!this.isOpen)return this.isOpen=!0,"function"==typeof this.options.onOpen&&this.options.onOpen.call(this),this.draw(),this.modal.open(),this}},{key:"close",value:function(){if(this.isOpen)return this.isOpen=!1,"function"==typeof this.options.onClose&&this.options.onClose.call(this),this.modal.close(),this}}],[{key:"init",value:function(t,e){return _get(B.__proto__||Object.getPrototypeOf(B),"init",this).call(this,this,t,e)}},{key:"_isDate",value:function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())}},{key:"_isWeekend",value:function(t){var e=t.getDay();return 0===e||6===e}},{key:"_setToStartOfDay",value:function(t){B._isDate(t)&&t.setHours(0,0,0,0)}},{key:"_getDaysInMonth",value:function(t,e){return[31,B._isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]}},{key:"_isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"_compareDates",value:function(t,e){return t.getTime()===e.getTime()}},{key:"_setToStartOfDay",value:function(t){B._isDate(t)&&t.setHours(0,0,0,0)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Datepicker}},{key:"defaults",get:function(){return e}}]),B}();t._template=['"].join(""),M.Datepicker=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"datepicker","M_Datepicker")}(cash),function(h){"use strict";var e={dialRadius:135,outerRadius:105,innerRadius:70,tickRadius:20,duration:350,container:null,defaultTime:"now",fromNow:0,showClearBtn:!1,i18n:{cancel:"Cancel",clear:"Clear",done:"Ok"},autoClose:!1,twelveHour:!0,vibrate:!0,onOpenStart:null,onOpenEnd:null,onCloseStart:null,onCloseEnd:null,onSelect:null},t=function(t){function f(t,e){_classCallCheck(this,f);var i=_possibleConstructorReturn(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,f,t,e));return(i.el.M_Timepicker=i).options=h.extend({},f.defaults,e),i.id=M.guid(),i._insertHTMLIntoDOM(),i._setupModal(),i._setupVariables(),i._setupEventHandlers(),i._clockSetup(),i._pickerSetup(),i}return _inherits(f,Component),_createClass(f,[{key:"destroy",value:function(){this._removeEventHandlers(),this.modal.destroy(),h(this.modalEl).remove(),this.el.M_Timepicker=void 0}},{key:"_setupEventHandlers",value:function(){this._handleInputKeydownBound=this._handleInputKeydown.bind(this),this._handleInputClickBound=this._handleInputClick.bind(this),this._handleClockClickStartBound=this._handleClockClickStart.bind(this),this._handleDocumentClickMoveBound=this._handleDocumentClickMove.bind(this),this._handleDocumentClickEndBound=this._handleDocumentClickEnd.bind(this),this.el.addEventListener("click",this._handleInputClickBound),this.el.addEventListener("keydown",this._handleInputKeydownBound),this.plate.addEventListener("mousedown",this._handleClockClickStartBound),this.plate.addEventListener("touchstart",this._handleClockClickStartBound),h(this.spanHours).on("click",this.showView.bind(this,"hours")),h(this.spanMinutes).on("click",this.showView.bind(this,"minutes"))}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("click",this._handleInputClickBound),this.el.removeEventListener("keydown",this._handleInputKeydownBound)}},{key:"_handleInputClick",value:function(){this.open()}},{key:"_handleInputKeydown",value:function(t){t.which===M.keys.ENTER&&(t.preventDefault(),this.open())}},{key:"_handleClockClickStart",value:function(t){t.preventDefault();var e=this.plate.getBoundingClientRect(),i=e.left,n=e.top;this.x0=i+this.options.dialRadius,this.y0=n+this.options.dialRadius,this.moved=!1;var s=f._Pos(t);this.dx=s.x-this.x0,this.dy=s.y-this.y0,this.setHand(this.dx,this.dy,!1),document.addEventListener("mousemove",this._handleDocumentClickMoveBound),document.addEventListener("touchmove",this._handleDocumentClickMoveBound),document.addEventListener("mouseup",this._handleDocumentClickEndBound),document.addEventListener("touchend",this._handleDocumentClickEndBound)}},{key:"_handleDocumentClickMove",value:function(t){t.preventDefault();var e=f._Pos(t),i=e.x-this.x0,n=e.y-this.y0;this.moved=!0,this.setHand(i,n,!1,!0)}},{key:"_handleDocumentClickEnd",value:function(t){var e=this;t.preventDefault(),document.removeEventListener("mouseup",this._handleDocumentClickEndBound),document.removeEventListener("touchend",this._handleDocumentClickEndBound);var i=f._Pos(t),n=i.x-this.x0,s=i.y-this.y0;this.moved&&n===this.dx&&s===this.dy&&this.setHand(n,s),"hours"===this.currentView?this.showView("minutes",this.options.duration/2):this.options.autoClose&&(h(this.minutesView).addClass("timepicker-dial-out"),setTimeout(function(){e.done()},this.options.duration/2)),"function"==typeof this.options.onSelect&&this.options.onSelect.call(this,this.hours,this.minutes),document.removeEventListener("mousemove",this._handleDocumentClickMoveBound),document.removeEventListener("touchmove",this._handleDocumentClickMoveBound)}},{key:"_insertHTMLIntoDOM",value:function(){this.$modalEl=h(f._template),this.modalEl=this.$modalEl[0],this.modalEl.id="modal-"+this.id;var t=document.querySelector(this.options.container);this.options.container&&t?this.$modalEl.appendTo(t):this.$modalEl.insertBefore(this.el)}},{key:"_setupModal",value:function(){var t=this;this.modal=M.Modal.init(this.modalEl,{onOpenStart:this.options.onOpenStart,onOpenEnd:this.options.onOpenEnd,onCloseStart:this.options.onCloseStart,onCloseEnd:function(){"function"==typeof t.options.onCloseEnd&&t.options.onCloseEnd.call(t),t.isOpen=!1}})}},{key:"_setupVariables",value:function(){this.currentView="hours",this.vibrate=navigator.vibrate?"vibrate":navigator.webkitVibrate?"webkitVibrate":null,this._canvas=this.modalEl.querySelector(".timepicker-canvas"),this.plate=this.modalEl.querySelector(".timepicker-plate"),this.hoursView=this.modalEl.querySelector(".timepicker-hours"),this.minutesView=this.modalEl.querySelector(".timepicker-minutes"),this.spanHours=this.modalEl.querySelector(".timepicker-span-hours"),this.spanMinutes=this.modalEl.querySelector(".timepicker-span-minutes"),this.spanAmPm=this.modalEl.querySelector(".timepicker-span-am-pm"),this.footer=this.modalEl.querySelector(".timepicker-footer"),this.amOrPm="PM"}},{key:"_pickerSetup",value:function(){var t=h('").appendTo(this.footer).on("click",this.clear.bind(this));this.options.showClearBtn&&t.css({visibility:""});var e=h('
    ');h('").appendTo(e).on("click",this.close.bind(this)),h('").appendTo(e).on("click",this.done.bind(this)),e.appendTo(this.footer)}},{key:"_clockSetup",value:function(){this.options.twelveHour&&(this.$amBtn=h('
    AM
    '),this.$pmBtn=h('
    PM
    '),this.$amBtn.on("click",this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm),this.$pmBtn.on("click",this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm)),this._buildHoursView(),this._buildMinutesView(),this._buildSVGClock()}},{key:"_buildSVGClock",value:function(){var t=this.options.dialRadius,e=this.options.tickRadius,i=2*t,n=f._createSVGEl("svg");n.setAttribute("class","timepicker-svg"),n.setAttribute("width",i),n.setAttribute("height",i);var s=f._createSVGEl("g");s.setAttribute("transform","translate("+t+","+t+")");var o=f._createSVGEl("circle");o.setAttribute("class","timepicker-canvas-bearing"),o.setAttribute("cx",0),o.setAttribute("cy",0),o.setAttribute("r",4);var a=f._createSVGEl("line");a.setAttribute("x1",0),a.setAttribute("y1",0);var r=f._createSVGEl("circle");r.setAttribute("class","timepicker-canvas-bg"),r.setAttribute("r",e),s.appendChild(a),s.appendChild(r),s.appendChild(o),n.appendChild(s),this._canvas.appendChild(n),this.hand=a,this.bg=r,this.bearing=o,this.g=s}},{key:"_buildHoursView",value:function(){var t=h('
    ');if(this.options.twelveHour)for(var e=1;e<13;e+=1){var i=t.clone(),n=e/6*Math.PI,s=this.options.outerRadius;i.css({left:this.options.dialRadius+Math.sin(n)*s-this.options.tickRadius+"px",top:this.options.dialRadius-Math.cos(n)*s-this.options.tickRadius+"px"}),i.html(0===e?"00":e),this.hoursView.appendChild(i[0])}else for(var o=0;o<24;o+=1){var a=t.clone(),r=o/6*Math.PI,l=0'),e=0;e<60;e+=5){var i=t.clone(),n=e/30*Math.PI;i.css({left:this.options.dialRadius+Math.sin(n)*this.options.outerRadius-this.options.tickRadius+"px",top:this.options.dialRadius-Math.cos(n)*this.options.outerRadius-this.options.tickRadius+"px"}),i.html(f._addLeadingZero(e)),this.minutesView.appendChild(i[0])}}},{key:"_handleAmPmClick",value:function(t){var e=h(t.target);this.amOrPm=e.hasClass("am-btn")?"AM":"PM",this._updateAmPmView()}},{key:"_updateAmPmView",value:function(){this.options.twelveHour&&(this.$amBtn.toggleClass("text-primary","AM"===this.amOrPm),this.$pmBtn.toggleClass("text-primary","PM"===this.amOrPm))}},{key:"_updateTimeFromInput",value:function(){var t=((this.el.value||this.options.defaultTime||"")+"").split(":");if(this.options.twelveHour&&void 0!==t[1]&&(0','",""].join(""),M.Timepicker=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"timepicker","M_Timepicker")}(cash),function(s){"use strict";var e={},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_CharacterCounter=i).options=s.extend({},n.defaults,e),i.isInvalid=!1,i.isValidLength=!1,i._setupCounter(),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.CharacterCounter=void 0,this._removeCounter()}},{key:"_setupEventHandlers",value:function(){this._handleUpdateCounterBound=this.updateCounter.bind(this),this.el.addEventListener("focus",this._handleUpdateCounterBound,!0),this.el.addEventListener("input",this._handleUpdateCounterBound,!0)}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("focus",this._handleUpdateCounterBound,!0),this.el.removeEventListener("input",this._handleUpdateCounterBound,!0)}},{key:"_setupCounter",value:function(){this.counterEl=document.createElement("span"),s(this.counterEl).addClass("character-counter").css({float:"right","font-size":"12px",height:1}),this.$el.parent().append(this.counterEl)}},{key:"_removeCounter",value:function(){s(this.counterEl).remove()}},{key:"updateCounter",value:function(){var t=+this.$el.attr("data-length"),e=this.el.value.length;this.isValidLength=e<=t;var i=e;t&&(i+="/"+t,this._validateInput()),s(this.counterEl).html(i)}},{key:"_validateInput",value:function(){this.isValidLength&&this.isInvalid?(this.isInvalid=!1,this.$el.removeClass("invalid")):this.isValidLength||this.isInvalid||(this.isInvalid=!0,this.$el.removeClass("valid"),this.$el.addClass("invalid"))}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_CharacterCounter}},{key:"defaults",get:function(){return e}}]),n}();M.CharacterCounter=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"characterCounter","M_CharacterCounter")}(cash),function(b){"use strict";var e={duration:200,dist:-100,shift:0,padding:0,numVisible:5,fullWidth:!1,indicators:!1,noWrap:!1,onCycleTo:null},t=function(t){function i(t,e){_classCallCheck(this,i);var n=_possibleConstructorReturn(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,i,t,e));return(n.el.M_Carousel=n).options=b.extend({},i.defaults,e),n.hasMultipleSlides=1'),n.$el.find(".carousel-item").each(function(t,e){if(n.images.push(t),n.showIndicators){var i=b('
  • ');0===e&&i[0].classList.add("active"),n.$indicators.append(i)}}),n.showIndicators&&n.$el.append(n.$indicators),n.count=n.images.length,n.options.numVisible=Math.min(n.count,n.options.numVisible),n.xform="transform",["webkit","Moz","O","ms"].every(function(t){var e=t+"Transform";return void 0===document.body.style[e]||(n.xform=e,!1)}),n._setupEventHandlers(),n._scroll(n.offset),n}return _inherits(i,Component),_createClass(i,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.M_Carousel=void 0}},{key:"_setupEventHandlers",value:function(){var i=this;this._handleCarouselTapBound=this._handleCarouselTap.bind(this),this._handleCarouselDragBound=this._handleCarouselDrag.bind(this),this._handleCarouselReleaseBound=this._handleCarouselRelease.bind(this),this._handleCarouselClickBound=this._handleCarouselClick.bind(this),void 0!==window.ontouchstart&&(this.el.addEventListener("touchstart",this._handleCarouselTapBound),this.el.addEventListener("touchmove",this._handleCarouselDragBound),this.el.addEventListener("touchend",this._handleCarouselReleaseBound)),this.el.addEventListener("mousedown",this._handleCarouselTapBound),this.el.addEventListener("mousemove",this._handleCarouselDragBound),this.el.addEventListener("mouseup",this._handleCarouselReleaseBound),this.el.addEventListener("mouseleave",this._handleCarouselReleaseBound),this.el.addEventListener("click",this._handleCarouselClickBound),this.showIndicators&&this.$indicators&&(this._handleIndicatorClickBound=this._handleIndicatorClick.bind(this),this.$indicators.find(".indicator-item").each(function(t,e){t.addEventListener("click",i._handleIndicatorClickBound)}));var t=M.throttle(this._handleResize,200);this._handleThrottledResizeBound=t.bind(this),window.addEventListener("resize",this._handleThrottledResizeBound)}},{key:"_removeEventHandlers",value:function(){var i=this;void 0!==window.ontouchstart&&(this.el.removeEventListener("touchstart",this._handleCarouselTapBound),this.el.removeEventListener("touchmove",this._handleCarouselDragBound),this.el.removeEventListener("touchend",this._handleCarouselReleaseBound)),this.el.removeEventListener("mousedown",this._handleCarouselTapBound),this.el.removeEventListener("mousemove",this._handleCarouselDragBound),this.el.removeEventListener("mouseup",this._handleCarouselReleaseBound),this.el.removeEventListener("mouseleave",this._handleCarouselReleaseBound),this.el.removeEventListener("click",this._handleCarouselClickBound),this.showIndicators&&this.$indicators&&this.$indicators.find(".indicator-item").each(function(t,e){t.removeEventListener("click",i._handleIndicatorClickBound)}),window.removeEventListener("resize",this._handleThrottledResizeBound)}},{key:"_handleCarouselTap",value:function(t){"mousedown"===t.type&&b(t.target).is("img")&&t.preventDefault(),this.pressed=!0,this.dragged=!1,this.verticalDragged=!1,this.reference=this._xpos(t),this.referenceY=this._ypos(t),this.velocity=this.amplitude=0,this.frame=this.offset,this.timestamp=Date.now(),clearInterval(this.ticker),this.ticker=setInterval(this._trackBound,100)}},{key:"_handleCarouselDrag",value:function(t){var e=void 0,i=void 0,n=void 0;if(this.pressed)if(e=this._xpos(t),i=this._ypos(t),n=this.reference-e,Math.abs(this.referenceY-i)<30&&!this.verticalDragged)(2=this.dim*(this.count-1)?this.target=this.dim*(this.count-1):this.target<0&&(this.target=0)),this.amplitude=this.target-this.offset,this.timestamp=Date.now(),requestAnimationFrame(this._autoScrollBound),this.dragged&&(t.preventDefault(),t.stopPropagation()),!1}},{key:"_handleCarouselClick",value:function(t){if(this.dragged)return t.preventDefault(),t.stopPropagation(),!1;if(!this.options.fullWidth){var e=b(t.target).closest(".carousel-item").index();0!==this._wrap(this.center)-e&&(t.preventDefault(),t.stopPropagation()),this._cycleTo(e)}}},{key:"_handleIndicatorClick",value:function(t){t.stopPropagation();var e=b(t.target).closest(".indicator-item");e.length&&this._cycleTo(e.index())}},{key:"_handleResize",value:function(t){this.options.fullWidth?(this.itemWidth=this.$el.find(".carousel-item").first().innerWidth(),this.imageHeight=this.$el.find(".carousel-item.active").height(),this.dim=2*this.itemWidth+this.options.padding,this.offset=2*this.center*this.itemWidth,this.target=this.offset,this._setCarouselHeight(!0)):this._scroll()}},{key:"_setCarouselHeight",value:function(t){var i=this,e=this.$el.find(".carousel-item.active").length?this.$el.find(".carousel-item.active").first():this.$el.find(".carousel-item").first(),n=e.find("img").first();if(n.length)if(n[0].complete){var s=n.height();if(0=this.count?t%this.count:t<0?this._wrap(this.count+t%this.count):t}},{key:"_track",value:function(){var t,e,i,n;e=(t=Date.now())-this.timestamp,this.timestamp=t,i=this.offset-this.frame,this.frame=this.offset,n=1e3*i/(1+e),this.velocity=.8*n+.2*this.velocity}},{key:"_autoScroll",value:function(){var t=void 0,e=void 0;this.amplitude&&(t=Date.now()-this.timestamp,2<(e=this.amplitude*Math.exp(-t/this.options.duration))||e<-2?(this._scroll(this.target-e),requestAnimationFrame(this._autoScrollBound)):this._scroll(this.target))}},{key:"_scroll",value:function(t){var e=this;this.$el.hasClass("scrolling")||this.el.classList.add("scrolling"),null!=this.scrollingTimeout&&window.clearTimeout(this.scrollingTimeout),this.scrollingTimeout=window.setTimeout(function(){e.$el.removeClass("scrolling")},this.options.duration);var i,n,s,o,a=void 0,r=void 0,l=void 0,h=void 0,d=void 0,u=void 0,c=this.center,p=1/this.options.numVisible;if(this.offset="number"==typeof t?t:this.offset,this.center=Math.floor((this.offset+this.dim/2)/this.dim),o=-(s=(n=this.offset-this.center*this.dim)<0?1:-1)*n*2/this.dim,i=this.count>>1,this.options.fullWidth?(l="translateX(0)",u=1):(l="translateX("+(this.el.clientWidth-this.itemWidth)/2+"px) ",l+="translateY("+(this.el.clientHeight-this.itemHeight)/2+"px)",u=1-p*o),this.showIndicators){var v=this.center%this.count,f=this.$indicators.find(".indicator-item.active");f.index()!==v&&(f.removeClass("active"),this.$indicators.find(".indicator-item").eq(v)[0].classList.add("active"))}if(!this.noWrap||0<=this.center&&this.center=this.count||e<0){if(this.noWrap)return;e=this._wrap(e)}this._cycleTo(e)}},{key:"prev",value:function(t){(void 0===t||isNaN(t))&&(t=1);var e=this.center-t;if(e>=this.count||e<0){if(this.noWrap)return;e=this._wrap(e)}this._cycleTo(e)}},{key:"set",value:function(t,e){if((void 0===t||isNaN(t))&&(t=0),t>this.count||t<0){if(this.noWrap)return;t=this._wrap(t)}this._cycleTo(t,e)}}],[{key:"init",value:function(t,e){return _get(i.__proto__||Object.getPrototypeOf(i),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Carousel}},{key:"defaults",get:function(){return e}}]),i}();M.Carousel=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"carousel","M_Carousel")}(cash),function(S){"use strict";var e={onOpen:void 0,onClose:void 0},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_TapTarget=i).options=S.extend({},n.defaults,e),i.isOpen=!1,i.$origin=S("#"+i.$el.attr("data-target")),i._setup(),i._calculatePositioning(),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this.el.TapTarget=void 0}},{key:"_setupEventHandlers",value:function(){this._handleDocumentClickBound=this._handleDocumentClick.bind(this),this._handleTargetClickBound=this._handleTargetClick.bind(this),this._handleOriginClickBound=this._handleOriginClick.bind(this),this.el.addEventListener("click",this._handleTargetClickBound),this.originEl.addEventListener("click",this._handleOriginClickBound);var t=M.throttle(this._handleResize,200);this._handleThrottledResizeBound=t.bind(this),window.addEventListener("resize",this._handleThrottledResizeBound)}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("click",this._handleTargetClickBound),this.originEl.removeEventListener("click",this._handleOriginClickBound),window.removeEventListener("resize",this._handleThrottledResizeBound)}},{key:"_handleTargetClick",value:function(t){this.open()}},{key:"_handleOriginClick",value:function(t){this.close()}},{key:"_handleResize",value:function(t){this._calculatePositioning()}},{key:"_handleDocumentClick",value:function(t){S(t.target).closest(".tap-target-wrapper").length||(this.close(),t.preventDefault(),t.stopPropagation())}},{key:"_setup",value:function(){this.wrapper=this.$el.parent()[0],this.waveEl=S(this.wrapper).find(".tap-target-wave")[0],this.originEl=S(this.wrapper).find(".tap-target-origin")[0],this.contentEl=this.$el.find(".tap-target-content")[0],S(this.wrapper).hasClass(".tap-target-wrapper")||(this.wrapper=document.createElement("div"),this.wrapper.classList.add("tap-target-wrapper"),this.$el.before(S(this.wrapper)),this.wrapper.append(this.el)),this.contentEl||(this.contentEl=document.createElement("div"),this.contentEl.classList.add("tap-target-content"),this.$el.append(this.contentEl)),this.waveEl||(this.waveEl=document.createElement("div"),this.waveEl.classList.add("tap-target-wave"),this.originEl||(this.originEl=this.$origin.clone(!0,!0),this.originEl.addClass("tap-target-origin"),this.originEl.removeAttr("id"),this.originEl.removeAttr("style"),this.originEl=this.originEl[0],this.waveEl.append(this.originEl)),this.wrapper.append(this.waveEl))}},{key:"_calculatePositioning",value:function(){var t="fixed"===this.$origin.css("position");if(!t)for(var e=this.$origin.parents(),i=0;i'+t.getAttribute("label")+"")[0]),i.each(function(t){var e=n._appendOptionWithIcon(n.$el,t,"optgroup-option");n._addOptionToValueDict(t,e)})}}),this.$el.after(this.dropdownOptions),this.input=document.createElement("input"),d(this.input).addClass("select-dropdown dropdown-trigger"),this.input.setAttribute("type","text"),this.input.setAttribute("readonly","true"),this.input.setAttribute("data-target",this.dropdownOptions.id),this.el.disabled&&d(this.input).prop("disabled","true"),this.$el.before(this.input),this._setValueToInput();var t=d('');if(this.$el.before(t[0]),!this.el.disabled){var e=d.extend({},this.options.dropdownOptions);e.onOpenEnd=function(t){var e=d(n.dropdownOptions).find(".selected").first();if(e.length&&(M.keyDown=!0,n.dropdown.focusedIndex=e.index(),n.dropdown._focusFocusedItem(),M.keyDown=!1,n.dropdown.isScrollable)){var i=e[0].getBoundingClientRect().top-n.dropdownOptions.getBoundingClientRect().top;i-=n.dropdownOptions.clientHeight/2,n.dropdownOptions.scrollTop=i}},this.isMultiple&&(e.closeOnClick=!1),this.dropdown=M.Dropdown.init(this.input,e)}this._setSelectedStates()}},{key:"_addOptionToValueDict",value:function(t,e){var i=Object.keys(this._valueDict).length,n=this.dropdownOptions.id+i,s={};e.id=n,s.el=t,s.optionEl=e,this._valueDict[n]=s}},{key:"_removeDropdown",value:function(){d(this.wrapper).find(".caret").remove(),d(this.input).remove(),d(this.dropdownOptions).remove(),d(this.wrapper).before(this.$el),d(this.wrapper).remove()}},{key:"_appendOptionWithIcon",value:function(t,e,i){var n=e.disabled?"disabled ":"",s="optgroup-option"===i?"optgroup-option ":"",o=this.isMultiple?'":e.innerHTML,a=d("
  • "),r=d("");r.html(o),a.addClass(n+" "+s),a.append(r);var l=e.getAttribute("data-icon");if(l){var h=d('');a.prepend(h)}return d(this.dropdownOptions).append(a[0]),a[0]}},{key:"_toggleEntryFromArray",value:function(t){var e=!this._keysSelected.hasOwnProperty(t),i=d(this._valueDict[t].optionEl);return e?this._keysSelected[t]=!0:delete this._keysSelected[t],i.toggleClass("selected",e),i.find('input[type="checkbox"]').prop("checked",e),i.prop("selected",e),e}},{key:"_setValueToInput",value:function(){var i=[];if(this.$el.find("option").each(function(t){if(d(t).prop("selected")){var e=d(t).text();i.push(e)}}),!i.length){var t=this.$el.find("option:disabled").eq(0);t.length&&""===t[0].value&&i.push(t.text())}this.input.value=i.join(", ")}},{key:"_setSelectedStates",value:function(){for(var t in this._keysSelected={},this._valueDict){var e=this._valueDict[t],i=d(e.el).prop("selected");d(e.optionEl).find('input[type="checkbox"]').prop("checked",i),i?(this._activateOption(d(this.dropdownOptions),d(e.optionEl)),this._keysSelected[t]=!0):d(e.optionEl).removeClass("selected")}}},{key:"_activateOption",value:function(t,e){e&&(this.isMultiple||t.find("li.selected").removeClass("selected"),d(e).addClass("selected"))}},{key:"getSelectedValues",value:function(){var t=[];for(var e in this._keysSelected)t.push(this._valueDict[e].el.value);return t}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_FormSelect}},{key:"defaults",get:function(){return e}}]),n}();M.FormSelect=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"formSelect","M_FormSelect")}(cash),function(s,e){"use strict";var i={},t=function(t){function n(t,e){_classCallCheck(this,n);var i=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,t,e));return(i.el.M_Range=i).options=s.extend({},n.defaults,e),i._mousedown=!1,i._setupThumb(),i._setupEventHandlers(),i}return _inherits(n,Component),_createClass(n,[{key:"destroy",value:function(){this._removeEventHandlers(),this._removeThumb(),this.el.M_Range=void 0}},{key:"_setupEventHandlers",value:function(){this._handleRangeChangeBound=this._handleRangeChange.bind(this),this._handleRangeMousedownTouchstartBound=this._handleRangeMousedownTouchstart.bind(this),this._handleRangeInputMousemoveTouchmoveBound=this._handleRangeInputMousemoveTouchmove.bind(this),this._handleRangeMouseupTouchendBound=this._handleRangeMouseupTouchend.bind(this),this._handleRangeBlurMouseoutTouchleaveBound=this._handleRangeBlurMouseoutTouchleave.bind(this),this.el.addEventListener("change",this._handleRangeChangeBound),this.el.addEventListener("mousedown",this._handleRangeMousedownTouchstartBound),this.el.addEventListener("touchstart",this._handleRangeMousedownTouchstartBound),this.el.addEventListener("input",this._handleRangeInputMousemoveTouchmoveBound),this.el.addEventListener("mousemove",this._handleRangeInputMousemoveTouchmoveBound),this.el.addEventListener("touchmove",this._handleRangeInputMousemoveTouchmoveBound),this.el.addEventListener("mouseup",this._handleRangeMouseupTouchendBound),this.el.addEventListener("touchend",this._handleRangeMouseupTouchendBound),this.el.addEventListener("blur",this._handleRangeBlurMouseoutTouchleaveBound),this.el.addEventListener("mouseout",this._handleRangeBlurMouseoutTouchleaveBound),this.el.addEventListener("touchleave",this._handleRangeBlurMouseoutTouchleaveBound)}},{key:"_removeEventHandlers",value:function(){this.el.removeEventListener("change",this._handleRangeChangeBound),this.el.removeEventListener("mousedown",this._handleRangeMousedownTouchstartBound),this.el.removeEventListener("touchstart",this._handleRangeMousedownTouchstartBound),this.el.removeEventListener("input",this._handleRangeInputMousemoveTouchmoveBound),this.el.removeEventListener("mousemove",this._handleRangeInputMousemoveTouchmoveBound),this.el.removeEventListener("touchmove",this._handleRangeInputMousemoveTouchmoveBound),this.el.removeEventListener("mouseup",this._handleRangeMouseupTouchendBound),this.el.removeEventListener("touchend",this._handleRangeMouseupTouchendBound),this.el.removeEventListener("blur",this._handleRangeBlurMouseoutTouchleaveBound),this.el.removeEventListener("mouseout",this._handleRangeBlurMouseoutTouchleaveBound),this.el.removeEventListener("touchleave",this._handleRangeBlurMouseoutTouchleaveBound)}},{key:"_handleRangeChange",value:function(){s(this.value).html(this.$el.val()),s(this.thumb).hasClass("active")||this._showRangeBubble();var t=this._calcRangeOffset();s(this.thumb).addClass("active").css("left",t+"px")}},{key:"_handleRangeMousedownTouchstart",value:function(t){if(s(this.value).html(this.$el.val()),this._mousedown=!0,this.$el.addClass("active"),s(this.thumb).hasClass("active")||this._showRangeBubble(),"input"!==t.type){var e=this._calcRangeOffset();s(this.thumb).addClass("active").css("left",e+"px")}}},{key:"_handleRangeInputMousemoveTouchmove",value:function(){if(this._mousedown){s(this.thumb).hasClass("active")||this._showRangeBubble();var t=this._calcRangeOffset();s(this.thumb).addClass("active").css("left",t+"px"),s(this.value).html(this.$el.val())}}},{key:"_handleRangeMouseupTouchend",value:function(){this._mousedown=!1,this.$el.removeClass("active")}},{key:"_handleRangeBlurMouseoutTouchleave",value:function(){if(!this._mousedown){var t=7+parseInt(this.$el.css("padding-left"))+"px";s(this.thumb).hasClass("active")&&(e.remove(this.thumb),e({targets:this.thumb,height:0,width:0,top:10,easing:"easeOutQuad",marginLeft:t,duration:100})),s(this.thumb).removeClass("active")}}},{key:"_setupThumb",value:function(){this.thumb=document.createElement("span"),this.value=document.createElement("span"),s(this.thumb).addClass("thumb"),s(this.value).addClass("value"),s(this.thumb).append(this.value),this.$el.after(this.thumb)}},{key:"_removeThumb",value:function(){s(this.thumb).remove()}},{key:"_showRangeBubble",value:function(){var t=-7+parseInt(s(this.thumb).parent().css("padding-left"))+"px";e.remove(this.thumb),e({targets:this.thumb,height:30,width:30,top:-30,marginLeft:t,duration:300,easing:"easeOutQuint"})}},{key:"_calcRangeOffset",value:function(){var t=this.$el.width()-15,e=parseFloat(this.$el.attr("max"))||100,i=parseFloat(this.$el.attr("min"))||0;return(parseFloat(this.$el.val())-i)/(e-i)*t}}],[{key:"init",value:function(t,e){return _get(n.__proto__||Object.getPrototypeOf(n),"init",this).call(this,this,t,e)}},{key:"getInstance",value:function(t){return(t.jquery?t[0]:t).M_Range}},{key:"defaults",get:function(){return i}}]),n}();M.Range=t,M.jQueryLoaded&&M.initializeJqueryWrapper(t,"range","M_Range"),t.init(s("input[type=range]"))}(cash,M.anime); \ No newline at end of file diff --git a/scripts/communityModules/chat/webview.qml b/scripts/communityModules/chat/webview.qml new file mode 100644 index 0000000000..84f761e9ff --- /dev/null +++ b/scripts/communityModules/chat/webview.qml @@ -0,0 +1,52 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.2 +import QtWebChannel 1.0 +import controls 1.0 +import hifi.toolbars 1.0 +import QtGraphicalEffects 1.0 +import controlsUit 1.0 as HifiControls +import stylesUit 1.0 + + +Rectangle { + width: parent.width + height: parent.height + + signal sendToScript(var message); + color: "#00000000" + property alias thing: thing + + function sendMessage(text){ + sendToScript(text); + } + + function fromScript(message) { + console.log("fromScript "+message); + var data = {failed:true}; + try{ + data = JSON.parse(message); + } catch(e){ + // + } + if(!data.failed){ + if(data.cmd){ + JSConsole.executeCommand(data.msg); + } + console.log(data.visible); + if(data.visible){ + thing.visible = true; + textArea.focus = true; + } else if(!data.visible){ + thing.visible = false; + textArea.focus = false; + } + } + } + + WebView { + id: overlayWindow + url: Qt.resolvedUrl("FloofChat2.html?appUUID="+QUrlQuery::queryItemValue() + enabled: true + blurOnCtrlShift: false + } +} \ No newline at end of file From 9b542736f76718f5d4fc0a114b1afc4ac5f6c63d Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 22 Dec 2019 14:23:28 -0600 Subject: [PATCH 131/396] Remove Google Analytics from installer --- cmake/templates/NSIS.template.in | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 9af99f927d..8942ea2bcb 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -454,27 +454,27 @@ Var GAClientID !macroend !macro GoogleAnalytics Category Action Label Value - ${If} "@GA_TRACKING_ID@" != "" - Push $0 - Push $1 +; ${If} "@GA_TRACKING_ID@" != "" +; Push $0 +; Push $1 - StrCpy $0 "https://google-analytics.com/collect?v=1&tid=@GA_TRACKING_ID@" - StrCpy $0 "$0&cid=$GAClientID&t=event&ec=${Category}&ea=${Action}" +; StrCpy $0 "https://google-analytics.com/collect?v=1&tid=@GA_TRACKING_ID@" +; StrCpy $0 "$0&cid=$GAClientID&t=event&ec=${Category}&ea=${Action}" - ${If} "${Label}" != "" - StrCpy $0 "$0&el=${Label}" - ${EndIf} - ${If} "${Value}" != "" - StrCpy $0 "$0&ev=${Value}" - ${EndIf} +; ${If} "${Label}" != "" +; StrCpy $0 "$0&el=${Label}" +; ${EndIf} +; ${If} "${Value}" != "" +; StrCpy $0 "$0&ev=${Value}" +; ${EndIf} - GetTempFileName $1 - inetc::get /SILENT $0 $1 /END - Delete $1 +; GetTempFileName $1 +; inetc::get /SILENT $0 $1 /END +; Delete $1 - Pop $1 - Pop $0 - ${EndIf} +; Pop $1 +; Pop $0 +; ${EndIf} !macroend ;-------------------------------- From a547f4c77111fe0ec7147916daae523323b84769 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 22 Dec 2019 14:42:59 -0600 Subject: [PATCH 132/396] Change installer images --- cmake/installer/installer-header.bmp | Bin 102656 -> 102656 bytes cmake/installer/installer.ico | Bin 306053 -> 287934 bytes cmake/installer/uninstaller-header.bmp | Bin 102656 -> 102656 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/cmake/installer/installer-header.bmp b/cmake/installer/installer-header.bmp index 7588a338b1bb0685b9d1d2a6ddb828d1ad9715d1..2d262d3ef9d4b699eead2193bfab5e8ead4bc004 100644 GIT binary patch literal 102656 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 R0000000000z-=uk=s$YR{73)* diff --git a/cmake/installer/installer.ico b/cmake/installer/installer.ico index d42eae96adb83a395122ecfe25bb1eb1d2893fa2..63a3eff482314acccdd23559aeed281d089f434d 100644 GIT binary patch literal 287934 zcmeEv2bfb;^Y`y2*#<1VOYc|^rFT>;ps0XiK@`E>8`!B*w&s>(m)@nRh}cj>K#H{8 zP42zP7J8Moo9#8pe9zo$C@PAI{(V1po@cn5kbBCUnK^T2=9~iv2toDgfPiLr#sUln zP``fQ^Na}KdkfI4S>W@E>cDMPfsP%^Keq<5n!o^lzg;s65(WV608|Ii41wQW4!CAP zNQr@Ye*!G~=ll#4U{T{>K0F`7ua%`r5Of8#bQy2zGOU-tvBqx_ep!ZYLzpJvDb*H2 zKYn^W{TN-zdm-+KiSX(&NR#oTrXVcX1|n)fM2mc7MLY72yK;_a?xQ1glJ;e!m2TPm zeUTzY=iND=v*-Og@5wp%);oS(#$HWAOXsXW8;Jbh6r4TWS(g#*u$ukDU0;^e^zER# z@4Yu$vDxyrZrfIT?AWog-0!#eO2#brJ47>=5#^9k`N!n|`F)!-3EgxV*-PGNTyU-P z#}dJJn7Z}o>0uoHa?hMI$J_hL4t?xDb^Mrj)BJJ8x(tsdp=+`gCcn>{c<}Q{NjqaA zyu%0G;AyedQ3789b$;%toX#(g%o&qA!MDDwpFcjTQ{J=BJ(qLz$l
    Urr}o#!6K} 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

    j*o&)~=MZ2p3J_5M6`m;Per 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 Z2m}IwKp+qZ1OkCTAP@)yqP_I$^?$FtU&;Ug From b512eec6f868177455576c1facfdaf5fb2ad015a Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 22 Dec 2019 15:44:02 -0600 Subject: [PATCH 133/396] Make changes to NSIS installer Changes names to Project Athena. Disables downloading of compaign packages. Disables slideshow during install. --- cmake/templates/NSIS.template.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 8942ea2bcb..2ac8f9f490 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -161,7 +161,7 @@ ;General ; hide install details since we show an image slideshow in their place - ShowInstDetails nevershow + ShowInstDetails hide ; leverage the UAC NSIS plugin to promote uninstaller to elevated privileges !include UAC.nsh @@ -421,7 +421,7 @@ Function GetCampaignName Pop $0 ; Discard Path Pop $0 ; Recover filename ; Parse campaign out of the filename - ${RECaptureMatches} $0 "HighFidelity-([^-]*-)Beta-.*" $0 0 + ${RECaptureMatches} $0 "ProjectAthena-([^-]*-)Beta-.*" $0 0 ${If} $0 == 1 Pop $0 ; Recover campaign name StrCpy $0 $0 -1 0 ; Remove trailing - and copy to _RetVar @@ -528,7 +528,7 @@ Var GAClientID Page custom PostInstallOptionsPage ReadPostInstallOptions !define MUI_PAGE_CUSTOMFUNCTION_PRE PageInstallFilesPre - !define MUI_PAGE_CUSTOMFUNCTION_SHOW StartInstallSlideshow + ; !define MUI_PAGE_CUSTOMFUNCTION_SHOW StartInstallSlideshow !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM @@ -657,7 +657,7 @@ FunctionEnd Function PageWelcomePre !insertmacro LogStep "Installer" "Welcome" "" "" !insertmacro GoogleAnalytics "Installer" "Welcome" "" "" - !insertmacro DownloadSlideshowImages + ; !insertmacro DownloadSlideshowImages FunctionEnd Function PageLicensePre !insertmacro LogStep "Installer" "License" "" "" @@ -1085,7 +1085,7 @@ Function HandlePostInstallOptions ClearErrors ; copy the data from production build to this PR build - CopyFiles "$APPDATA\High Fidelity\*" $0 + CopyFiles "$APPDATA\Project Athena\*" $0 ; handle an error in copying files IfErrors 0 NoError @@ -1325,7 +1325,7 @@ Section "-Core installation" @CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ ; see if we have a campaign that we might need to grab special content for - Call OptionallyDownloadCampaignServerless + ; Call OptionallyDownloadCampaignServerless ; Handle whichever post install options were set Call HandlePostInstallOptions From f614f6f290796d2740f6e15ebeb894b83a7b4f5c Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 22 Dec 2019 15:44:25 -0600 Subject: [PATCH 134/396] Stuff I forgot in last commit for NSIS --- cmake/macros/GenerateInstallers.cmake | 12 ++++++------ cmake/macros/SetPackagingParameters.cmake | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index acafd9b6c7..91f8d49426 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -18,20 +18,20 @@ macro(GENERATE_INSTALLERS) if (CLIENT_ONLY) set(_PACKAGE_NAME_EXTRA "-Interface") set(INSTALLER_TYPE "client_only") - string(REGEX REPLACE "High Fidelity" "High Fidelity Interface" _DISPLAY_NAME ${BUILD_ORGANIZATION}) + string(REGEX REPLACE "Project Athena" "Project Athena Interface" _DISPLAY_NAME ${BUILD_ORGANIZATION}) elseif (SERVER_ONLY) set(_PACKAGE_NAME_EXTRA "-Sandbox") set(INSTALLER_TYPE "server_only") - string(REGEX REPLACE "High Fidelity" "High Fidelity Sandbox" _DISPLAY_NAME ${BUILD_ORGANIZATION}) + string(REGEX REPLACE "Project Athena" "Project Athena Sandbox" _DISPLAY_NAME ${BUILD_ORGANIZATION}) else () set(_DISPLAY_NAME ${BUILD_ORGANIZATION}) set(INSTALLER_TYPE "full") endif () set(CPACK_PACKAGE_NAME ${_DISPLAY_NAME}) - set(CPACK_PACKAGE_VENDOR "High Fidelity") + set(CPACK_PACKAGE_VENDOR "Project Athena") set(CPACK_PACKAGE_VERSION ${BUILD_VERSION}) - set(CPACK_PACKAGE_FILE_NAME "HighFidelity-Beta${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") + set(CPACK_PACKAGE_FILE_NAME "ProjectAthena-Beta${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") set(CPACK_NSIS_DISPLAY_NAME ${_DISPLAY_NAME}) set(CPACK_NSIS_PACKAGE_NAME ${_DISPLAY_NAME}) if (PR_BUILD) @@ -118,11 +118,11 @@ macro(GENERATE_INSTALLERS) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") if (BUILD_CLIENT) - cpack_add_component(${CLIENT_COMPONENT} DISPLAY_NAME "High Fidelity Interface") + cpack_add_component(${CLIENT_COMPONENT} DISPLAY_NAME "Project Athena Interface") endif () if (BUILD_SERVER) - cpack_add_component(${SERVER_COMPONENT} DISPLAY_NAME "High Fidelity Sandbox") + cpack_add_component(${SERVER_COMPONENT} DISPLAY_NAME "Project Athena Sandbox") endif () include(CPack) diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index bf98dba29d..83ec983775 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -35,7 +35,7 @@ macro(SET_PACKAGING_PARAMETERS) set(DEPLOY_PACKAGE TRUE) set(PRODUCTION_BUILD 1) set(BUILD_VERSION ${RELEASE_NUMBER}) - set(BUILD_ORGANIZATION "High Fidelity") + set(BUILD_ORGANIZATION "Project Athena") set(HIGH_FIDELITY_PROTOCOL "hifi") set(HIGH_FIDELITY_APP_PROTOCOL "hifiapp") set(INTERFACE_BUNDLE_NAME "interface") @@ -60,7 +60,7 @@ macro(SET_PACKAGING_PARAMETERS) set(DEPLOY_PACKAGE TRUE) set(PR_BUILD 1) set(BUILD_VERSION "PR${RELEASE_NUMBER}") - set(BUILD_ORGANIZATION "High Fidelity - PR${RELEASE_NUMBER}") + set(BUILD_ORGANIZATION "Project Athena - PR${RELEASE_NUMBER}") set(INTERFACE_BUNDLE_NAME "interface") set(INTERFACE_ICON_PREFIX "interface-beta") @@ -69,7 +69,7 @@ macro(SET_PACKAGING_PARAMETERS) else () set(DEV_BUILD 1) set(BUILD_VERSION "dev") - set(BUILD_ORGANIZATION "High Fidelity - ${BUILD_VERSION}") + set(BUILD_ORGANIZATION "Project Athena - ${BUILD_VERSION}") set(INTERFACE_BUNDLE_NAME "interface") set(INTERFACE_ICON_PREFIX "interface-beta") @@ -192,21 +192,21 @@ macro(SET_PACKAGING_PARAMETERS) # shortcut names if (PRODUCTION_BUILD) - set(INTERFACE_SHORTCUT_NAME "High Fidelity") + set(INTERFACE_SHORTCUT_NAME "Project Athena") set(CONSOLE_SHORTCUT_NAME "Console") set(SANDBOX_SHORTCUT_NAME "Sandbox") set(APP_USER_MODEL_ID "com.highfidelity.console") else () - set(INTERFACE_SHORTCUT_NAME "High Fidelity - ${BUILD_VERSION_NO_SHA}") + set(INTERFACE_SHORTCUT_NAME "Project Athena - ${BUILD_VERSION_NO_SHA}") set(CONSOLE_SHORTCUT_NAME "Console - ${BUILD_VERSION_NO_SHA}") set(SANDBOX_SHORTCUT_NAME "Sandbox - ${BUILD_VERSION_NO_SHA}") endif () set(INTERFACE_HF_SHORTCUT_NAME "${INTERFACE_SHORTCUT_NAME}") - set(CONSOLE_HF_SHORTCUT_NAME "High Fidelity ${CONSOLE_SHORTCUT_NAME}") - set(SANDBOX_HF_SHORTCUT_NAME "High Fidelity ${SANDBOX_SHORTCUT_NAME}") + set(CONSOLE_HF_SHORTCUT_NAME "Project Athenay ${CONSOLE_SHORTCUT_NAME}") + set(SANDBOX_HF_SHORTCUT_NAME "Project Athena ${SANDBOX_SHORTCUT_NAME}") - set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "High Fidelity") + set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "Project Athena") set(PRE_SANDBOX_CONSOLE_SHORTCUT_NAME "Server Console") # check if we need to find signtool From 4856dd07fc9a6d1d9507dd0003f40089232420b1 Mon Sep 17 00:00:00 2001 From: Nex-Pro Date: Wed, 25 Dec 2019 00:20:36 +0000 Subject: [PATCH 135/396] Update interface window title Change window title from "High Fidelity" to "Project Athena" --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dd9a10a237..fdbf309f88 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1158,7 +1158,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-SemiBold.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Regular.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Medium.ttf"); - _window->setWindowTitle("High Fidelity"); + _window->setWindowTitle("Project Athena"); Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us From 683f790fc240d0df4cbfeb5b4d9adb053d221162 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 24 Dec 2019 19:42:10 -0500 Subject: [PATCH 136/396] updated readme for cleanliness. --- README.md | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 41e8dcdd77..be317e4371 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,7 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. -#### Changes for **v0.86.0** consist of: - -#### Added in K1 (12/3/19) +#### v0.86.0 K1 (12/3/19) * Audio Buffer choppy audio bugfix by increasing the buffer size. * User Activity Logger disabled, option in code to log the reports to console. @@ -15,25 +13,10 @@ This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. * Entity Script Whitelist, no scripts are whitelisted by default. * Background CMD outputs full log, instant close of application on closing of the CMD-line. -#### Added in K2 (TBD) +#### v0.86.0 K2 (TBD) -##### Features -* Removed environment variable requirement for "procedural shader materials". -* QML Interface to access, save, and load whitelist live from interface.json. -* QML whitelist now allows external QML scripts when full URL to the file is given in the list. -* Added procedural vertex shader support. https://github.com/kasenvr/hifi-community/pull/15 -* glTF AlphaModes are now supported. https://github.com/kasenvr/hifi-community/pull/15 -* Material entities can specify face culling method. https://github.com/kasenvr/hifi-community/pull/15 -* gLTF double-sided property is now supported. https://github.com/kasenvr/hifi-community/pull/15 - -##### Bugs and Housekeeping -* Add "VideoDecodeStats" to .gitignore. -* Added Github link to "About High Fidelity" and removed High Fidelity's link, updated the support link. -* Fix VCPKG SDL2 to port files from 2.0.8 to 2.0.10 to fix CMake build issues. -* Fix wearables not disappearing with avatar. https://github.com/kasenvr/hifi-community/pull/15 - -##### Server -* Added custom support selection which allows for multi-server deployment on the same operating system. https://github.com/kasenvr/hifi-community/pull/15 +##### Features, Bugs, and Housekeeping +Check out the releases page for more information! ### Whitelist Instructions @@ -43,15 +26,7 @@ The Interface has the whitelist settings under "**Settings -> Entity Script Whit Do not use spaces or commas in the whitelist interface, you will only separate by commas and not new lines in the environment variables. -It is recommended that you add High Fidelity's CDN URLs ahead of time to ensure general content works right off the bat: - -``` -http://mpassets.highfidelity.com/ -https://raw.githubusercontent.com/highfidelity/ -https://hifi-content.s3.amazonaws.com/ -``` - -You can also set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**https://kasen.io/,http://kasen.io/,https://exampledomain.com/scriptFolder/**" +You can also set the Windows environment variable "**EXTRA_WHITELIST**" with your whitelisted domains comma separated like so: "**http://mpassets.highfidelity.com/,https://raw.githubusercontent.com/highfidelity/,https://hifi-content.s3.amazonaws.com/**" Alternatively you can make a batch file placed in the same folder as interface.exe that sets the whitelist environment variable temporarily: @@ -62,7 +37,8 @@ interface.exe ### How to build interface.exe -[For Windows](https://github.com/kasenvr/hifi-community/blob/kasen/core/BUILD_WIN.md) +[For Windows](https://github.com/kasenvr/project-athena/blob/kasen/core/BUILD_WIN.md) +[For Linux](https://github.com/kasenvr/project-athena/blob/kasen/core/BUILD_LINUX.md) ### Boot to Metaverse: The Goal @@ -84,4 +60,4 @@ So the necessary desire is to use High Fidelity as our foundation as a community A special thanks to the contributors of the Project Athena. -[Contribution & Governance Model](CONTRIBUTING.md) +[Contribution](CONTRIBUTING.md) From dabda684b8fa47c58e62069241b4f3bdf2559669 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 26 Dec 2019 00:23:05 +0100 Subject: [PATCH 137/396] Don't bind action if QML menu can't be added. Otherwise eventually methods will be called on a NULL pointer. Fixes crash related to QMetaObject::invokeMethod. --- libraries/ui/src/VrMenu.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/ui/src/VrMenu.cpp b/libraries/ui/src/VrMenu.cpp index 12cb7e2e4b..867302d955 100644 --- a/libraries/ui/src/VrMenu.cpp +++ b/libraries/ui/src/VrMenu.cpp @@ -269,7 +269,11 @@ void VrMenu::insertAction(QAction* before, QAction* action) { Q_ASSERT(invokeResult); QObject* result = reinterpret_cast(returnedValue); // returnedValue.value(); Q_ASSERT(result); - bindActionToQmlAction(result, action, _rootMenu); + if ( result ) { + bindActionToQmlAction(result, action, _rootMenu); + } else { + qWarning() << "Failed to find addItem() method in object " << menu << ". Not inserting action " << action; + } } class QQuickMenuBase; From 12633e8ee0b0d2e0e2a6e243edbd107408e1f1d0 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Thu, 26 Dec 2019 17:21:43 -0600 Subject: [PATCH 138/396] Change how analytics was disable Rather than comment out the body od the GoogleAnalytics macro, it now has each invokation of the macro commented our. --- cmake/templates/NSIS.template.in | 58 ++++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 2ac8f9f490..8533ce3421 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -454,27 +454,27 @@ Var GAClientID !macroend !macro GoogleAnalytics Category Action Label Value -; ${If} "@GA_TRACKING_ID@" != "" -; Push $0 -; Push $1 + ${If} "@GA_TRACKING_ID@" != "" + Push $0 + Push $1 -; StrCpy $0 "https://google-analytics.com/collect?v=1&tid=@GA_TRACKING_ID@" -; StrCpy $0 "$0&cid=$GAClientID&t=event&ec=${Category}&ea=${Action}" + StrCpy $0 "https://google-analytics.com/collect?v=1&tid=@GA_TRACKING_ID@" + StrCpy $0 "$0&cid=$GAClientID&t=event&ec=${Category}&ea=${Action}" -; ${If} "${Label}" != "" -; StrCpy $0 "$0&el=${Label}" -; ${EndIf} -; ${If} "${Value}" != "" -; StrCpy $0 "$0&ev=${Value}" -; ${EndIf} + ${If} "${Label}" != "" + StrCpy $0 "$0&el=${Label}" + ${EndIf} + ${If} "${Value}" != "" + StrCpy $0 "$0&ev=${Value}" + ${EndIf} -; GetTempFileName $1 -; inetc::get /SILENT $0 $1 /END -; Delete $1 + GetTempFileName $1 + inetc::get /SILENT $0 $1 /END + Delete $1 -; Pop $1 -; Pop $0 -; ${EndIf} + Pop $1 + Pop $0 + ${EndIf} !macroend ;-------------------------------- @@ -652,35 +652,35 @@ Var Express Function OnUserAbort !insertmacro LogStep "Installer" "Abort" "User Abort" "" - !insertmacro GoogleAnalytics "Installer" "Abort" "User Abort" "" + ; !insertmacro GoogleAnalytics "Installer" "Abort" "User Abort" "" FunctionEnd Function PageWelcomePre !insertmacro LogStep "Installer" "Welcome" "" "" - !insertmacro GoogleAnalytics "Installer" "Welcome" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Welcome" "" "" ; !insertmacro DownloadSlideshowImages FunctionEnd Function PageLicensePre !insertmacro LogStep "Installer" "License" "" "" - !insertmacro GoogleAnalytics "Installer" "License" "" "" + ; !insertmacro GoogleAnalytics "Installer" "License" "" "" FunctionEnd Function PageDirectoryPre !insertmacro MaybeSkipPage !insertmacro LogStep "Installer" "Directory" "" "" - !insertmacro GoogleAnalytics "Installer" "Directory" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Directory" "" "" FunctionEnd Function PageStartMenuPre !insertmacro MaybeSkipPage !insertmacro LogStep "Installer" "StartMenu" "" "" - !insertmacro GoogleAnalytics "Installer" "StartMenu" "" "" + ; !insertmacro GoogleAnalytics "Installer" "StartMenu" "" "" FunctionEnd Function PageComponentsPre !insertmacro MaybeSkipPage !insertmacro LogStep "Installer" "Components" "" "" - !insertmacro GoogleAnalytics "Installer" "Components" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Components" "" "" FunctionEnd Function PageInstallFilesPre !insertmacro LogStep "Installer" "Install" "" "" - !insertmacro GoogleAnalytics "Installer" "Install" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Install" "" "" FunctionEnd !macro SetInstallOption Checkbox OptionName Default @@ -702,7 +702,7 @@ FunctionEnd Function InstallTypesPage !insertmacro LogStep "Installer" "Install Types" "" "" - !insertmacro GoogleAnalytics "Installer" "Install Types" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Install Types" "" "" !insertmacro MUI_HEADER_TEXT "Choose Installation Type" "Express or Custom Install" @@ -813,7 +813,7 @@ Function PostInstallOptionsPage !insertmacro MaybeSkipPage !insertmacro LogStep "Installer" "Post Install Options" "" "" - !insertmacro GoogleAnalytics "Installer" "Post Install Options" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Post Install Options" "" "" !insertmacro MUI_HEADER_TEXT "Setup Options" "" @@ -1331,7 +1331,7 @@ Section "-Core installation" Call HandlePostInstallOptions !insertmacro LogStep "Installer" "Done" "" "" - !insertmacro GoogleAnalytics "Installer" "Done" "" "" + ; !insertmacro GoogleAnalytics "Installer" "Done" "" "" SectionEnd !include nsProcess.nsh @@ -1358,7 +1358,7 @@ SectionEnd /SD IDCANCEL IDRETRY Prompt_${UniqueID} IDCANCEL 0 ${EndIf} - !insertmacro GoogleAnalytics "Installer" "Abort" "${displayName} Running" "" + ; !insertmacro GoogleAnalytics "Installer" "Abort" "${displayName} Running" "" ; If the user decided to cancel, stop the current installer/uninstaller Abort @@ -1602,7 +1602,7 @@ Function .onInit !insertmacro InitGAClientID !insertmacro GetCampaignName $CampaignName - !insertmacro GoogleAnalytics "Installer" "Start" "$CampaignName" "" + ; !insertmacro GoogleAnalytics "Installer" "Start" "$CampaignName" "" ; make sure none of the installed applications are still running ${LogText} "Checking For Running Applications" From 7489505f998e4fda6266584fd43aee3900b0c315 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Thu, 26 Dec 2019 22:27:58 -0500 Subject: [PATCH 139/396] Updated whitelist info and name to include QML. --- ...tityScriptWhitelist.qml => EntityScriptQMLWhitelist.qml} | 6 ++++-- interface/src/Menu.cpp | 6 ++---- interface/src/Menu.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) rename interface/resources/qml/hifi/dialogs/security/{EntityScriptWhitelist.qml => EntityScriptQMLWhitelist.qml} (95%) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml similarity index 95% rename from interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml rename to interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml index e5c3c10176..aa30b5d014 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml @@ -1,5 +1,5 @@ // -// ScriptWhitelist.qml +// EntityScriptQMLWhitelist.qml // interface/resources/qml/hifi/dialogs/security // // Created by Kasen IO on 2019.12.05 | realities.dev | kasenvr@gmail.com @@ -145,7 +145,9 @@ Rectangle { https://google.com/ https://bing.com/ https://mydomain.here/ - \nEnsure there are no spaces or whitespace." + \nEnsure there are no spaces or whitespace. + \nFor QML files, you can only whitelist each file individually + ending with '.qml'." // Text size size: 16; // Style diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index b57675fb62..1be67ef188 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -288,13 +288,12 @@ Menu::Menu() { }); // Settings > Entity Script Whitelist - action = addActionToQMenuAndActionHash(settingsMenu, "Entity Script Whitelist"); + action = addActionToQMenuAndActionHash(settingsMenu, "Entity Script / QML Whitelist"); connect(action, &QAction::triggered, [] { auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); auto hmd = DependencyManager::get(); - DependencyManager::get()->clearCache(); - tablet->pushOntoStack("hifi/dialogs/security/EntityScriptWhitelist.qml"); + tablet->pushOntoStack("hifi/dialogs/security/EntityScriptQMLWhitelist.qml"); if (!hmd->getShouldShowTablet()) { hmd->toggleShouldShowTablet(); @@ -772,7 +771,6 @@ Menu::Menu() { // Help > About High Fidelity action = addActionToQMenuAndActionHash(helpMenu, "About High Fidelity"); connect(action, &QAction::triggered, [] { - DependencyManager::get()->clearCache(); qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); }); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 37b3f971fc..1d6c010a05 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -181,7 +181,7 @@ namespace MenuOption { const QString RunningScripts = "Running Scripts..."; const QString RunTimingTests = "Run Timing Tests"; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; - const QString EntityScriptWhitelist = "Entity Script Whitelist"; + const QString EntityScriptQMLWhitelist = "Entity Script / QML Whitelist"; const QString ShowTrackedObjects = "Show Tracked Objects"; const QString SelfieCamera = "Selfie"; const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; From a7d2412f1165937f355872e6e1103cd03ebbdf61 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 29 Dec 2019 16:00:47 +1300 Subject: [PATCH 140/396] Re-enable JSDoc building --- interface/CMakeLists.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 5aed37dd02..27b3af39a7 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -15,9 +15,9 @@ set(CUSTOM_INTERFACE_QRC_PATHS "") find_npm() -#if (BUILD_TOOLS AND NPM_EXECUTABLE) -# add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_SOURCE_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json") -#endif () +if (BUILD_TOOLS AND NPM_EXECUTABLE) + add_custom_qrc_path(CUSTOM_INTERFACE_QRC_PATHS "${CMAKE_SOURCE_DIR}/tools/jsdoc/out/hifiJSDoc.json" "auto-complete/hifiJSDoc.json") +endif () set(RESOURCES_QRC ${CMAKE_CURRENT_BINARY_DIR}/resources.qrc) set(RESOURCES_RCC ${CMAKE_CURRENT_SOURCE_DIR}/compiledResources/resources.rcc) @@ -182,10 +182,10 @@ else () endif () -#if (BUILD_TOOLS AND NPM_EXECUTABLE) +if (BUILD_TOOLS AND NPM_EXECUTABLE) # require JSDoc to be build before interface is deployed -# add_dependencies(resources jsdoc) -#endif() + add_dependencies(resources jsdoc) +endif() add_dependencies(${TARGET_NAME} resources) @@ -326,9 +326,9 @@ if (APPLE) "${CMAKE_SOURCE_DIR}/scripts" "${RESOURCES_DEV_DIR}/scripts" # copy JSDoc files beside the executable - #COMMAND "${CMAKE_COMMAND}" -E copy_directory - # "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" - # "${RESOURCES_DEV_DIR}/jsdoc" + COMMAND "${CMAKE_COMMAND}" -E copy_directory + "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" + "${RESOURCES_DEV_DIR}/jsdoc" # copy the resources files beside the executable COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${RESOURCES_RCC}" @@ -381,9 +381,9 @@ else() "${PROJECT_SOURCE_DIR}/resources/serverless/redirect.json" "${RESOURCES_DEV_DIR}/serverless/redirect.json" # copy JSDoc files beside the executable - #COMMAND "${CMAKE_COMMAND}" -E copy_directory - # "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" - # "${INTERFACE_EXEC_DIR}/jsdoc" + COMMAND "${CMAKE_COMMAND}" -E copy_directory + "${CMAKE_SOURCE_DIR}/tools/jsdoc/out" + "${INTERFACE_EXEC_DIR}/jsdoc" ) # link target to external libraries From 986cb05f7be74380da98e39a7dfcd9b17e2f0afa Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 29 Dec 2019 17:40:51 -0600 Subject: [PATCH 141/396] Fix typo Tomato, Tohmahto, Athena, Athenay --- cmake/macros/SetPackagingParameters.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index 83ec983775..d279ae8db9 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -203,7 +203,7 @@ macro(SET_PACKAGING_PARAMETERS) endif () set(INTERFACE_HF_SHORTCUT_NAME "${INTERFACE_SHORTCUT_NAME}") - set(CONSOLE_HF_SHORTCUT_NAME "Project Athenay ${CONSOLE_SHORTCUT_NAME}") + set(CONSOLE_HF_SHORTCUT_NAME "Project Athena ${CONSOLE_SHORTCUT_NAME}") set(SANDBOX_HF_SHORTCUT_NAME "Project Athena ${SANDBOX_SHORTCUT_NAME}") set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "Project Athena") From 0b66627eff5dd5a912e91cb290d8d0688f932a8a Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 29 Dec 2019 23:48:32 -0500 Subject: [PATCH 142/396] The command line no longer launches with interface. --- interface/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 5aed37dd02..6a7aad1524 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -161,9 +161,9 @@ elseif (WIN32) configure_file("${HF_CMAKE_DIR}/templates/VersionInfo.rc.in" ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) # add an executable that also has the icon itself and the configured rc file as resources - #add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) + add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) ##^^^^^ creates native Win32 app w/o cmd console vvvvvv forces cmd console for logging - add_executable(${TARGET_NAME} ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) + # add_executable(${TARGET_NAME} ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) if (NOT DEV_BUILD) add_custom_command( From af19ee98503cd89742f4e3d55b6cb65f4bd2e2a5 Mon Sep 17 00:00:00 2001 From: Alexander Bialowas Date: Mon, 30 Dec 2019 13:58:40 +0100 Subject: [PATCH 143/396] Update some text info --- BUILD_LINUX.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 0be34cf90a..323ad4c1ed 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -2,7 +2,7 @@ Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only Linux specific instructions are found in this file. -## Ubuntu 16.04/18.04 specific build guide +## Ubuntu 16.04/18.04/Mint 19 Tara specific build guide ### Ubuntu 16.04 only Add the following line to *.bash_profile* `export QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu/` @@ -33,7 +33,7 @@ Verify by g++ --version ```bash sudo apt-get install cmake -y ``` -Verify by git --version +Verify by cmake --version 1. *Ubuntu 16.04* cmake ```bash wget https://cmake.org/files/v3.14/cmake-3.14.2-Linux-x86_64.sh @@ -82,20 +82,21 @@ git clone https://github.com/kasenvr/project-athena.git To compile a RELEASE version checkout the tag you need getting a list of all tags: ```bash git fetch -a -git tags +git tag ``` Then checkout last tag with: ```bash -git checkout tags/v0.79.0 +git checkout tag/1.0 ``` ### Compiling Create the build directory: ```bash -mkdir -p hifi/build -cd hifi/build +cd project-athena +mkdir build +cd build ``` Prepare makefiles: From ec86a1a57f240a381b3ae39ffe859d4a9b1741d5 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Mon, 30 Dec 2019 20:24:15 +0100 Subject: [PATCH 144/396] Move to kasenvr repos The highfidelity github repos will probably be going away on Jan 15, 2020. --- cmake/ports/etc2comp/portfile.cmake | 2 +- cmake/ports/hifi-scribe/portfile.cmake | 2 +- cmake/ports/nvtt/portfile.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/ports/etc2comp/portfile.cmake b/cmake/ports/etc2comp/portfile.cmake index d25f24cd39..343f67169b 100644 --- a/cmake/ports/etc2comp/portfile.cmake +++ b/cmake/ports/etc2comp/portfile.cmake @@ -19,7 +19,7 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO highfidelity/etc2comp + REPO kasenvr/etc2comp REF 7f1843bf07825c21cab711360c1ddbad04641036 SHA512 d747076acda8537d39585858c793a35c3dcc9ef283d723619a47f8c81ec1454c95b3340ad35f0655a939eae5b8271c801c48a9a7568311a01903a344c44af25b HEAD_REF master diff --git a/cmake/ports/hifi-scribe/portfile.cmake b/cmake/ports/hifi-scribe/portfile.cmake index 2b69f7b887..498e8a455b 100644 --- a/cmake/ports/hifi-scribe/portfile.cmake +++ b/cmake/ports/hifi-scribe/portfile.cmake @@ -3,7 +3,7 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO highfidelity/scribe + REPO kasenvr/scribe REF 1bd638a36ca771e5a68d01985b6389b71835cbd2 SHA512 dbe241d86df3912e544f6b9839873f9875df54efc93822b145e7b13243eaf2e3d690bc8a28b1e52d05bdcd7e68fca6b0b2f5c43ffd0f56a9b7a50d54dcf9e31e HEAD_REF master diff --git a/cmake/ports/nvtt/portfile.cmake b/cmake/ports/nvtt/portfile.cmake index 4cbe05b692..c7bf068e13 100644 --- a/cmake/ports/nvtt/portfile.cmake +++ b/cmake/ports/nvtt/portfile.cmake @@ -9,7 +9,7 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO highfidelity/nvidia-texture-tools + REPO kasenvr/nvidia-texture-tools REF 330c4d56274a0f602a5c70596e2eb670a4ed56c2 SHA512 4c0bc2f369120d696cc27710b6d33086b27eef55f537ec66b9a5c8b1839bc2426c0413670b0f65be52c5d353468f0126dfe024be1f0690611d4d7e33ac530127 HEAD_REF master From 82bddeb5a7bae0aee6af41a1971d041e436d3280 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 22 Nov 2019 11:35:23 -0800 Subject: [PATCH 145/396] fix linux build --- libraries/shared/src/shared/QtHelpers.h | 2 +- tools/nitpick/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/shared/src/shared/QtHelpers.h b/libraries/shared/src/shared/QtHelpers.h index f57ba4af2d..9a9d33a3ce 100644 --- a/libraries/shared/src/shared/QtHelpers.h +++ b/libraries/shared/src/shared/QtHelpers.h @@ -12,7 +12,7 @@ #include -#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) +#if defined(Q_OS_WIN) // Enable event queue debugging #define DEBUG_EVENT_QUEUE #endif diff --git a/tools/nitpick/CMakeLists.txt b/tools/nitpick/CMakeLists.txt index a5dd8d5236..d65505415d 100644 --- a/tools/nitpick/CMakeLists.txt +++ b/tools/nitpick/CMakeLists.txt @@ -93,7 +93,7 @@ if (WIN32) set_property(TARGET ${TARGET_NAME} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG "/OPT:NOREF /OPT:NOICF") endif() -link_hifi_libraries(entities-renderer platform) +link_hifi_libraries(entities-renderer platform physics) # perform standard include and linking for found externals foreach(EXTERNAL ${OPTIONAL_EXTERNALS}) From 7364ac55218f27890ce3ee4ef61330d0654a0852 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 4 Jan 2020 11:43:28 +1300 Subject: [PATCH 146/396] Fix scaled avatar walk speed --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 2522d0e4c6..76575ab8ef 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3825,7 +3825,7 @@ void MyAvatar::updateActionMotor(float deltaTime) { } _actionMotorVelocity = motorSpeed * direction; } else { - _actionMotorVelocity = direction; + _actionMotorVelocity = sensorToWorldScale * direction; } float previousBoomLength = _boomLength; From 05f54bc8c7db2d81b8fed95c835d70d52db6717f Mon Sep 17 00:00:00 2001 From: Tara Date: Sat, 4 Jan 2020 20:00:32 -0700 Subject: [PATCH 147/396] Fix generating cmake vcpkg throws an error when running cmake about a public key error. This resolves the possibility of the error showing up. --- hifi_vcpkg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 94cac9afa2..f0e8840621 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -164,7 +164,7 @@ endif() if downloadVcpkg: if "HIFI_VCPKG_BOOTSTRAP" in os.environ: print("Cloning vcpkg from github to {}".format(self.path)) - hifi_utils.executeSubprocess(['git', 'clone', 'git@github.com:microsoft/vcpkg.git', self.path]) + hifi_utils.executeSubprocess(['git', 'clone', 'https://github.com/microsoft/vcpkg', self.path]) print("Bootstrapping vcpkg") hifi_utils.executeSubprocess([self.bootstrapCmd], folder=self.path) else: From 934311b54a426fdaef62adc2697ae562cdc284e8 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 16:15:04 +1300 Subject: [PATCH 148/396] Change default Avatar Packager project directory --- interface/src/avatar/AvatarProject.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/AvatarProject.h b/interface/src/avatar/AvatarProject.h index 0a63290051..4c1e55fa1c 100644 --- a/interface/src/avatar/AvatarProject.h +++ b/interface/src/avatar/AvatarProject.h @@ -95,7 +95,7 @@ public: static bool isValidNewProjectName(const QString& projectPath, const QString& projectName); static QString getDefaultProjectsPath() { - return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/High Fidelity Projects"; + return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/Project Athena Projects"; } signals: From d79c87b2d49939b5d9a5b2df788773ca34caf5bb Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 16:59:51 +1300 Subject: [PATCH 149/396] Change Avatar Package docs links --- .../resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml | 2 +- interface/resources/qml/hifi/avatarPackager/AvatarProject.qml | 2 +- interface/src/avatar/AvatarDoctor.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml index 278ce36362..9158e25f75 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml @@ -229,7 +229,7 @@ Item { } function openDocs() { - Qt.openUrlExternally("https://docs.highfidelity.com/create/avatars/package-avatar.html"); + Qt.openUrlExternally("https://docs.projectathena.dev/create/avatars/package-avatar.html"); } function openVideo() { diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml index e5bffa7829..5dd2dd0bd6 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml @@ -326,7 +326,7 @@ Item { text: "This item is not for sale yet, learn more." onLinkActivated: { - Qt.openUrlExternally("https://docs.highfidelity.com/sell/add-item/upload-avatar.html"); + Qt.openUrlExternally("https://docs.projectathena.dev/sell/add-item/upload-avatar.html"); } } diff --git a/interface/src/avatar/AvatarDoctor.cpp b/interface/src/avatar/AvatarDoctor.cpp index 01a40e89fd..b0c82f1afc 100644 --- a/interface/src/avatar/AvatarDoctor.cpp +++ b/interface/src/avatar/AvatarDoctor.cpp @@ -55,7 +55,7 @@ static QStringList HAND_MAPPING_SUFFIXES = { "HandThumb1", }; -const QUrl PACKAGE_AVATAR_DOCS_BASE_URL = QUrl("https://docs.highfidelity.com/create/avatars/package-avatar.html"); +const QUrl PACKAGE_AVATAR_DOCS_BASE_URL = QUrl("https://docs.projectathena.dev/create/avatars/package-avatar.html"); AvatarDoctor::AvatarDoctor(const QUrl& avatarFSTFileUrl) : _avatarFSTFileUrl(avatarFSTFileUrl) { From cd6669ec8ba80a83c8d69ee0dc6e34c9db3a5028 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 17:00:40 +1300 Subject: [PATCH 150/396] Comment out the "Video" button --- .../qml/hifi/avatarPackager/AvatarPackagerHeader.qml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerHeader.qml b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerHeader.qml index 31528a8557..edb862b023 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerHeader.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerHeader.qml @@ -128,6 +128,8 @@ ShadowRectangle { } } + // FIXME: Link to a Project Athena version of the video. + /* RalewayButton { id: video visible: false @@ -141,6 +143,12 @@ ShadowRectangle { onClicked: videoButtonClicked() } + */ + // Temporary placeholder for video button. + Rectangle { + id: video + visible: false + } RalewayButton { id: docs From 30c63fc30530af3895b64bff178ac8c72b8438d6 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 17:11:23 +1300 Subject: [PATCH 151/396] Remove "Upload" button and associated items --- .../qml/hifi/avatarPackager/AvatarProject.qml | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml index 5dd2dd0bd6..3b1cb764b9 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml @@ -44,7 +44,11 @@ Item { HifiControls.Button { id: uploadButton + // FIXME: Re-enable if ability to upload to hosted location is added. + /* visible: AvatarPackagerCore.currentAvatarProject && !AvatarPackagerCore.currentAvatarProject.fst.hasMarketplaceID && !root.hasSuccessfullyUploaded + */ + visible: false enabled: Account.loggedIn anchors.verticalCenter: parent.verticalCenter @@ -62,7 +66,11 @@ Item { HifiControls.Button { id: updateButton + // FIXME: Re-enable if ability to upload to hosted location is added. + /* visible: AvatarPackagerCore.currentAvatarProject && AvatarPackagerCore.currentAvatarProject.fst.hasMarketplaceID && !root.hasSuccessfullyUploaded + */ + visible: false enabled: Account.loggedIn anchors.verticalCenter: parent.verticalCenter @@ -79,7 +87,12 @@ Item { } Item { anchors.fill: parent + + // FIXME: Re-enable if ability to upload to hosted location is added. + /* visible: root.hasSuccessfullyUploaded + */ + visible: false; HifiControls.Button { enabled: Account.loggedIn @@ -303,7 +316,9 @@ Item { wrapMode: Text.Wrap - text: "You can upload your files to our servers to always access them, and to make your avatar visible to other users." + // FIXME: Restore original text if ability to upload to hosted location is added. + //text: "You can upload your files to our servers to always access them, and to make your avatar visible to other users." + text: "Your files are ready to be uploaded to a server to make your avatar visible to other users." } RalewayRegular { @@ -389,8 +404,13 @@ Item { Rectangle { id: loginRequiredMessage + // FIXME: Re-enable if ability to upload to hosted location is added. + /* visible: !Account.loggedIn height: !Account.loggedIn ? loginRequiredTextRow.height + 20 : 0 + */ + visible: false + height: 0 anchors { bottom: parent.bottom From 977d49800400e6e389fa0ac3513fd6e8dc334dc3 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 17:53:36 +1300 Subject: [PATCH 152/396] Add an "Open Project Folder" button --- .../qml/hifi/avatarPackager/AvatarProject.qml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml index 3b1cb764b9..5420651847 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml @@ -128,6 +128,22 @@ Item { onClicked: AvatarPackagerCore.currentAvatarProject.openInInventory() } } + // FIXME: Remove if "Upload" button is reinstated. + HifiControls.Button { + id: openDirectoryButton + visible: AvatarPackagerCore.currentAvatarProject + enabled: true + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + text: qsTr("Open Project Folder") + color: hifi.buttons.blue + colorScheme: root.colorScheme + width: 200 + height: 40 + onClicked: { + fileDialogHelper.openDirectory(fileDialogHelper.pathToUrl(AvatarPackagerCore.currentAvatarProject.projectFolderPath)); + } + } } Rectangle { From 1d9aec6fec4d40831040761abdef60fbb66ce2e4 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Jan 2020 18:24:56 +1300 Subject: [PATCH 153/396] Improve order of dialog contents --- .../qml/hifi/avatarPackager/AvatarProject.qml | 99 +++++++++---------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml index 5420651847..a0c98b0821 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml @@ -292,13 +292,58 @@ Item { color: 'white' size: 20 - anchors.left: parent.left - anchors.right: parent.right + anchors.horizontalCenter: parent.horizontalCenter anchors.top: errorsGlyph.bottom wrapMode: Text.Wrap } + RalewayRegular { + id: notForSaleMessage + + visible: root.hasSuccessfullyUploaded + + color: 'white' + linkColor: '#00B4EF' + size: 20 + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: doctorStatusMessage.bottom + anchors.topMargin: 10 + + anchors.bottomMargin: 24 + + wrapMode: Text.Wrap + text: "This item is not for sale yet, learn more." + + onLinkActivated: { + Qt.openUrlExternally("https://docs.projectathena.dev/sell/add-item/upload-avatar.html"); + } + } + + RalewayRegular { + id: showErrorsLink + + color: 'white' + linkColor: '#00B4EF' + + visible: AvatarPackagerCore.currentAvatarProject && AvatarPackagerCore.currentAvatarProject.hasErrors + + anchors { + top: notForSaleMessage.bottom + horizontalCenter: parent.horizontalCenter + } + + size: 28 + + text: "View all errors" + + onLinkActivated: { + avatarPackager.state = AvatarPackagerState.avatarDoctorErrorReport; + } + } + RalewayRegular { id: infoMessage @@ -326,8 +371,7 @@ Item { anchors.left: parent.left anchors.right: parent.right - anchors.top: doctorStatusMessage.bottom - + anchors.bottom: showFilesText.top anchors.bottomMargin: 24 wrapMode: Text.Wrap @@ -337,53 +381,6 @@ Item { text: "Your files are ready to be uploaded to a server to make your avatar visible to other users." } - RalewayRegular { - id: notForSaleMessage - - visible: root.hasSuccessfullyUploaded - - color: 'white' - linkColor: '#00B4EF' - size: 20 - - anchors.left: parent.left - anchors.right: parent.right - anchors.top: infoMessage.bottom - anchors.topMargin: 10 - - anchors.bottomMargin: 24 - - wrapMode: Text.Wrap - text: "This item is not for sale yet, learn more." - - onLinkActivated: { - Qt.openUrlExternally("https://docs.projectathena.dev/sell/add-item/upload-avatar.html"); - } - } - - RalewayRegular { - id: showErrorsLink - - color: 'white' - linkColor: '#00B4EF' - - visible: AvatarPackagerCore.currentAvatarProject && AvatarPackagerCore.currentAvatarProject.hasErrors - - anchors { - top: notForSaleMessage.visible ? notForSaleMessage.bottom : infoMessage .bottom - bottom: showFilesText.top - horizontalCenter: parent.horizontalCenter - } - - size: 28 - - text: "View all errors" - - onLinkActivated: { - avatarPackager.state = AvatarPackagerState.avatarDoctorErrorReport; - } - } - HifiControls.Button { id: openFolderButton From fcc1f928a125be4371b797378fd7e11cc5d577b4 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 10:58:49 +1300 Subject: [PATCH 154/396] Lint --- scripts/system/inspect.js | 51 ++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 18b26ab709..233517dd64 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -160,7 +160,7 @@ function restoreCameraState() { } function handleModes() { - var newMode = (mode == noMode) ? noMode : detachedMode; + var newMode = (mode === noMode) ? noMode : detachedMode; if (alt) { if (control) { if (shift) { @@ -174,32 +174,32 @@ function handleModes() { } // if entering detachMode - if (newMode == detachedMode && mode != detachedMode) { + if (newMode === detachedMode && mode !== detachedMode) { avatarPosition = MyAvatar.position; avatarOrientation = MyAvatar.orientation; } // if leaving detachMode - if (mode == detachedMode && newMode == detachedMode && - (avatarPosition.x != MyAvatar.position.x || - avatarPosition.y != MyAvatar.position.y || - avatarPosition.z != MyAvatar.position.z || - avatarOrientation.x != MyAvatar.orientation.x || - avatarOrientation.y != MyAvatar.orientation.y || - avatarOrientation.z != MyAvatar.orientation.z || - avatarOrientation.w != MyAvatar.orientation.w)) { + if (mode === detachedMode && newMode === detachedMode && + (avatarPosition.x !== MyAvatar.position.x || + avatarPosition.y !== MyAvatar.position.y || + avatarPosition.z !== MyAvatar.position.z || + avatarOrientation.x !== MyAvatar.orientation.x || + avatarOrientation.y !== MyAvatar.orientation.y || + avatarOrientation.z !== MyAvatar.orientation.z || + avatarOrientation.w !== MyAvatar.orientation.w)) { newMode = noMode; } - if (mode == noMode && newMode != noMode && Camera.mode == "independent") { + if (mode === noMode && newMode !== noMode && Camera.mode === "independent") { newMode = noMode; } // if leaving noMode - if (mode == noMode && newMode != noMode) { + if (mode === noMode && newMode !== noMode) { saveCameraState(); } // if entering noMode - if (newMode == noMode && mode != noMode) { + if (newMode === noMode && mode !== noMode) { restoreCameraState(); } @@ -209,15 +209,15 @@ function handleModes() { function keyPressEvent(event) { var changed = false; - if (event.text == "ALT") { + if (event.text === "ALT") { alt = true; changed = true; } - if (event.text == "CONTROL") { + if (event.text === "CONTROL") { control = true; changed = true; } - if (event.text == "SHIFT") { + if (event.text === "SHIFT") { shift = true; changed = true; } @@ -230,17 +230,17 @@ function keyPressEvent(event) { function keyReleaseEvent(event) { var changed = false; - if (event.text == "ALT") { + if (event.text === "ALT") { alt = false; changed = true; mode = noMode; restoreCameraState(); } - if (event.text == "CONTROL") { + if (event.text === "CONTROL") { control = false; changed = true; } - if (event.text == "SHIFT") { + if (event.text === "SHIFT") { shift = false; changed = true; } @@ -293,14 +293,14 @@ function mouseReleaseEvent(event) { } function mouseMoveEvent(event) { - if (isActive && mode != noMode && !rotatingTowardsTarget) { - if (mode == radialMode) { + if (isActive && mode !== noMode && !rotatingTowardsTarget) { + if (mode === radialMode) { handleRadialMode(event.x - mouseLastX, event.y - mouseLastY); } - if (mode == orbitMode) { + if (mode === orbitMode) { handleOrbitMode(event.x - mouseLastX, event.y - mouseLastY); } - if (mode == panningMode) { + if (mode === panningMode) { handlePanMode(event.x - mouseLastX, event.y - mouseLastY); } } @@ -316,12 +316,13 @@ function update() { } function rotateTowardsTarget() { - var newOrientation = Quat.mix(Camera.getOrientation(), targetCamOrientation, 0.1); + var MIX_FACTOR = 0.1; + var newOrientation = Quat.mix(Camera.getOrientation(), targetCamOrientation, MIX_FACTOR); Camera.setOrientation(newOrientation); } function scriptEnding() { - if (mode != noMode) { + if (mode !== noMode) { restoreCameraState(); } } From ac34d49c1b50e8936e638bfeca9ac442b76a8078 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:04:23 +1300 Subject: [PATCH 155/396] Leave camera where it is after releasing Alt key --- scripts/system/inspect.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 233517dd64..b7ed987acd 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -233,8 +233,6 @@ function keyReleaseEvent(event) { if (event.text === "ALT") { alt = false; changed = true; - mode = noMode; - restoreCameraState(); } if (event.text === "CONTROL") { control = false; From 81e1dd4d6a1babdf6649a9a55fb6aa02043a1b96 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:10:10 +1300 Subject: [PATCH 156/396] Exit inspect mode when press Esc or move avatar --- scripts/system/inspect.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index b7ed987acd..90a84c514b 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -222,6 +222,12 @@ function keyPressEvent(event) { changed = true; } + if (mode !== noMode && !alt && !control && !shift && /^ESC|LEFT|RIGHT|UP|DOWN|[wasdWASD]$/.test(event.text)) { + mode = noMode; + restoreCameraState(); + changed = true; + } + if (changed) { handleModes(); } From a1056f34ed540a9ad9b6ff4f3fb21a3ccd436741 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:14:12 +1300 Subject: [PATCH 157/396] Cope with slight avatar position and orientation jitter when stationary --- scripts/system/inspect.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 90a84c514b..c84cdef5c3 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -25,6 +25,9 @@ var ALTITUDE_RATE = 200.0; var RADIUS_RATE = 1.0 / 100.0; var PAN_RATE = 250.0; +var AVATAR_POSITION_SLOP = 0.1; +var AVATAR_ROTATION_SLOP = 0.09; // 5 degrees + var Y_AXIS = { x: 0, y: 1, @@ -179,14 +182,10 @@ function handleModes() { avatarOrientation = MyAvatar.orientation; } // if leaving detachMode - if (mode === detachedMode && newMode === detachedMode && - (avatarPosition.x !== MyAvatar.position.x || - avatarPosition.y !== MyAvatar.position.y || - avatarPosition.z !== MyAvatar.position.z || - avatarOrientation.x !== MyAvatar.orientation.x || - avatarOrientation.y !== MyAvatar.orientation.y || - avatarOrientation.z !== MyAvatar.orientation.z || - avatarOrientation.w !== MyAvatar.orientation.w)) { + if (mode === detachedMode && newMode === detachedMode && ( + Vec3.length(Vec3.subtract(avatarPosition, MyAvatar.position)) > AVATAR_POSITION_SLOP + || Vec3.length(Vec3.subtract(Quat.getFront(avatarOrientation), Quat.getFront(MyAvatar.orientation))) + > AVATAR_ROTATION_SLOP)) { newMode = noMode; } From 31b76a0a22d1200439cccef3383b4f926f0dddaf Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:25:39 +1300 Subject: [PATCH 158/396] Don't go "away" when press Esc key while inspecting --- scripts/system/inspect.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index c84cdef5c3..30f9e1c2df 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -203,6 +203,10 @@ function handleModes() { } mode = newMode; + + // Don't go "away" when press Esc key while inspecting. + var CHANNEL_AWAY_ENABLE = "Hifi-Away-Enable"; + Messages.sendMessage(CHANNEL_AWAY_ENABLE, mode === noMode ? "enable" : "disable" , true); } function keyPressEvent(event) { From 6749239e4e87061c95922b143af506fe6101c311 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:27:39 +1300 Subject: [PATCH 159/396] Reduce the duration of the initial look-at time --- scripts/system/inspect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 30f9e1c2df..64c46addb5 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -39,7 +39,7 @@ var X_AXIS = { z: 0 }; -var LOOK_AT_TIME = 500; +var LOOK_AT_TIME = 100; // ms var alt = false; var shift = false; From 3857fa1a4d7858f9dd70a4ee98d2fa566cfbd967 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:35:53 +1300 Subject: [PATCH 160/396] Restore "away" behavior when restart script --- scripts/system/inspect.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 64c46addb5..0e4be4320f 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -147,6 +147,11 @@ function handlePanMode(dx, dy) { Camera.setOrientation(orientationOf(vector)); } +function enableAway(enable) { + var CHANNEL_AWAY_ENABLE = "Hifi-Away-Enable"; + Messages.sendMessage(CHANNEL_AWAY_ENABLE, enable ? "enable" : "disable", true); +} + function saveCameraState() { oldMode = Camera.mode; oldPosition = Camera.getPosition(); @@ -204,9 +209,7 @@ function handleModes() { mode = newMode; - // Don't go "away" when press Esc key while inspecting. - var CHANNEL_AWAY_ENABLE = "Hifi-Away-Enable"; - Messages.sendMessage(CHANNEL_AWAY_ENABLE, mode === noMode ? "enable" : "disable" , true); + enableAway(mode === noMode); } function keyPressEvent(event) { @@ -331,6 +334,7 @@ function rotateTowardsTarget() { function scriptEnding() { if (mode !== noMode) { restoreCameraState(); + enableAway(true); } } From 32848ef8c6775f7a115bdaaf8811e0d50ec20009 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 6 Jan 2020 11:41:05 +1300 Subject: [PATCH 161/396] Update description of operation --- scripts/system/inspect.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 0e4be4320f..fc37d70331 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -5,13 +5,16 @@ // Created by Clément Brisset on March 20, 2014 // Copyright 2014 High Fidelity, Inc. // -// Allows you to inspect non moving objects (Voxels or Avatars) using Atl, Control (Command on Mac) and Shift +// Enables you to inspect entities and avatars using Alt and key combinations: +// - Alt + mouse up/down zooms in/out. +// - Alt + mouse left/right orbits left/right. +// - Alt + Ctrl + mouse up/down/left/right: orbits over / under / left / right. +// - Alt + Ctrl + Shift + mouse up/down/left/right: pans down / up / right / left. // -// radial mode = hold ALT -// orbit mode = hold ALT + CONTROL -// pan mode = hold ALT + CONTROL + SHIFT -// Once you are in a mode left click on the object to inspect and hold the click -// Dragging the mouse will move your camera according to the mode you are in. +// Your camera stays where it is when you release the Alt key, enabling you to Alt + left - click on another entity or +// avatar to further move your view. +// +// Press Esc or move your avatar to revert back to your default view. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html From 77e49421bc8eeb174257de59436b759da7d2394a Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 5 Jan 2020 18:44:17 -0600 Subject: [PATCH 162/396] Fix installer failing when signing certifcate is not available. This commit comments out the code signing portion of the installer for now. Also a few minor cosmetic changes --- cmake/templates/NSIS.template.in | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 8533ce3421..6f06b6b56d 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -199,15 +199,18 @@ !system "$%TEMP%\tempinstaller.exe" = 2 + ; NOTE: We're not code signing right now, so we're going to disable that. + ; TODO: Get a code signing certificate so we can re-enable code signing. + ; The Inner invocation has written an uninstaller binary for us. ; We need to sign it if it's a production or PR build. - !if @PRODUCTION_BUILD@ == 1 - !if @BYPASS_SIGNING@ == 1 - !warning "BYPASS_SIGNING set - installer will not be signed" - !else - !system '"@SIGNTOOL_EXECUTABLE@" sign /fd sha256 /f %HF_PFX_FILE% /p %HF_PFX_PASSPHRASE% /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 $%TEMP%\@UNINSTALLER_NAME@' = 0 - !endif - !endif + ; !if @PRODUCTION_BUILD@ == 1 + ; !if @BYPASS_SIGNING@ == 1 + ; !warning "BYPASS_SIGNING set - installer will not be signed" + ; !else + ; !system '"@SIGNTOOL_EXECUTABLE@" sign /fd sha256 /f %HF_PFX_FILE% /p %HF_PFX_PASSPHRASE% /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 $%TEMP%\@UNINSTALLER_NAME@' = 0 + ; !endif + ; !endif ; Good. Now we can carry on writing the real installer. @@ -717,7 +720,7 @@ Function InstallTypesPage StrCpy $OffsetUnits u StrCpy $Express "0" - ${NSD_CreateRadioButton} 30% $CurrentOffset$OffsetUnits 100% 10u "Express Install (Recommended)"; $\nInstalls High Fidelity Interface and High Fidelity Sandbox" + ${NSD_CreateRadioButton} 30% $CurrentOffset$OffsetUnits 100% 10u "Express Install (Recommended)"; $\nInstalls Project Athena Interface and Project Athena Sandbox" pop $ExpressInstallRadioButton ${NSD_OnClick} $ExpressInstallRadioButton ChangeExpressLabel IntOp $CurrentOffset $CurrentOffset + 15 @@ -970,7 +973,7 @@ Function ReadPostInstallOptions ${If} @CLIENT_COMPONENT_CONDITIONAL@ ${LogText} "Option: Install Client" - ; check if the user asked for a desktop shortcut to High Fidelity + ; check if the user asked for a desktop shortcut to Project Athena ${NSD_GetState} $DesktopClientCheckbox $DesktopClientState ${LogText} "Option: Create Client Desktop Shortcut: $DesktopClientState" ${EndIf} @@ -1024,7 +1027,7 @@ Function HandlePostInstallOptions ${EndIf} ${If} @CLIENT_COMPONENT_CONDITIONAL@ - ; check if the user asked for a desktop shortcut to High Fidelity + ; check if the user asked for a desktop shortcut to Project Athena ${If} $DesktopClientState == ${BST_CHECKED} CreateShortCut "$DESKTOP\@INTERFACE_HF_SHORTCUT_NAME@.lnk" "$INSTDIR\@INTERFACE_WIN_EXEC_NAME@" !insertmacro WriteInstallOption "@CLIENT_DESKTOP_SHORTCUT_REG_KEY@" YES From fb5dbfc52a2fcc5ebee3da39d43f13f4533e220a Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 5 Jan 2020 23:32:28 -0500 Subject: [PATCH 163/396] Disable whitelist on entity_server scripts. --- libraries/script-engine/src/ScriptEngine.cpp | 24 ++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 482bde9fd4..6a6b1e8417 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2377,15 +2377,21 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // END PULL SAFEURLS FROM INTERFACE.JSON Settings bool isInWhitelist = false; // assume unsafe - for (const auto& str : safeURLS) { - qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" - << scriptOrURL.startsWith(str); - if (!str.isEmpty() && scriptOrURL.startsWith(str)) { - isInWhitelist = true; - qCDebug(scriptengine) << whitelistPrefix << "Script approved."; - break; // bail early since we found a match - } - } + + if(ScriptEngine::getContext() == "entity_server") { + isInWhitelist = true; + } else { + for (const auto& str : safeURLS) { + qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + << scriptOrURL.startsWith(str); + if (!str.isEmpty() && scriptOrURL.startsWith(str)) { + isInWhitelist = true; + qCDebug(scriptengine) << whitelistPrefix << "Script approved."; + break; // bail early since we found a match + } + } + } + if (!isInWhitelist) { qCDebug(scriptengine) << whitelistPrefix << "(disabled entity script)" << entityID.toString() << scriptOrURL; exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); From 8124b7d4a14055b89fbb39ab8ac14b925bbcbce2 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 6 Jan 2020 08:29:01 -0500 Subject: [PATCH 164/396] Fixed tabs and spaces. --- libraries/script-engine/src/ScriptEngine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 6a6b1e8417..589e88c394 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2363,7 +2363,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } } else { - // ENTITY SCRIPT WHITELIST STARTS HERE + // ENTITY SCRIPT WHITELIST STARTS HERE QString whitelistPrefix = "[WHITELIST ENTITY SCRIPTS]"; QList safeURLS = { "" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); @@ -2378,16 +2378,16 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co bool isInWhitelist = false; // assume unsafe - if(ScriptEngine::getContext() == "entity_server") { + if (ScriptEngine::getContext() == "entity_server") { isInWhitelist = true; } else { for (const auto& str : safeURLS) { qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" - << scriptOrURL.startsWith(str); + << scriptOrURL.startsWith(str); if (!str.isEmpty() && scriptOrURL.startsWith(str)) { isInWhitelist = true; qCDebug(scriptengine) << whitelistPrefix << "Script approved."; - break; // bail early since we found a match + break; // bail early since we found a match } } } From 20f5439fa89dfe14a381283de3005fd1743c3b99 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 6 Jan 2020 08:58:09 -0500 Subject: [PATCH 165/396] Hard tabs converted to 4 length soft tabs. --- libraries/script-engine/src/ScriptEngine.cpp | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 589e88c394..1e46e55eff 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2377,20 +2377,20 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // END PULL SAFEURLS FROM INTERFACE.JSON Settings bool isInWhitelist = false; // assume unsafe - - if (ScriptEngine::getContext() == "entity_server") { - isInWhitelist = true; - } else { - for (const auto& str : safeURLS) { - qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" - << scriptOrURL.startsWith(str); - if (!str.isEmpty() && scriptOrURL.startsWith(str)) { - isInWhitelist = true; - qCDebug(scriptengine) << whitelistPrefix << "Script approved."; - break; // bail early since we found a match - } - } - } + + if (ScriptEngine::getContext() == "entity_server") { + isInWhitelist = true; + } else { + for (const auto& str : safeURLS) { + qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" + << scriptOrURL.startsWith(str); + if (!str.isEmpty() && scriptOrURL.startsWith(str)) { + isInWhitelist = true; + qCDebug(scriptengine) << whitelistPrefix << "Script approved."; + break; // bail early since we found a match + } + } + } if (!isInWhitelist) { qCDebug(scriptengine) << whitelistPrefix << "(disabled entity script)" << entityID.toString() << scriptOrURL; From b33ad80992011d73559fa3587fd6ec484470e00f Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 7 Jan 2020 04:00:13 +0000 Subject: [PATCH 166/396] Init push --- .../script-engine/src/WebSocketClass.cpp | 27 ++++++++++++++++++- libraries/script-engine/src/WebSocketClass.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libraries/script-engine/src/WebSocketClass.cpp b/libraries/script-engine/src/WebSocketClass.cpp index 56753f07d1..25517b3775 100644 --- a/libraries/script-engine/src/WebSocketClass.cpp +++ b/libraries/script-engine/src/WebSocketClass.cpp @@ -34,10 +34,11 @@ WebSocketClass::WebSocketClass(QScriptEngine* engine, QWebSocket* qWebSocket) : void WebSocketClass::initialize() { connect(_webSocket, &QWebSocket::disconnected, this, &WebSocketClass::handleOnClose); connect(_webSocket, &QWebSocket::textMessageReceived, this, &WebSocketClass::handleOnMessage); + connect(_webSocket, &QWebSocket::binaryMessageReceived, this, &WebSocketClass::handleOnBinaryMessage); connect(_webSocket, &QWebSocket::connected, this, &WebSocketClass::handleOnOpen); connect(_webSocket, static_cast(&QWebSocket::error), this, &WebSocketClass::handleOnError); - _binaryType = QStringLiteral("blob"); + _binaryType = QStringLiteral("arraybuffer"); } QScriptValue WebSocketClass::constructor(QScriptContext* context, QScriptEngine* engine) { @@ -53,8 +54,13 @@ WebSocketClass::~WebSocketClass() { } void WebSocketClass::send(QScriptValue message) { + if (message.isObject()) { + QByteArray ba = qscriptvalue_cast(message); + _webSocket->sendBinaryMessage(ba); + } else { _webSocket->sendTextMessage(message.toString()); } +} void WebSocketClass::close() { this->close(QWebSocketProtocol::CloseCodeNormal); @@ -97,6 +103,25 @@ void WebSocketClass::handleOnMessage(const QString& message) { } } +void WebSocketClass::handleOnBinaryMessage(const QByteArray& message) { + if (_onMessageEvent.isFunction()) { + QScriptValueList args; + QScriptValue arg = _engine->newObject(); + QScriptValue data = _engine->newVariant(QVariant::fromValue(message)); + QScriptValue ctor = _engine->globalObject().property("ArrayBuffer"); + ArrayBufferClass* array = qscriptvalue_cast(ctor.data()); + QScriptValue arrayBuffer; + if (!array) { + qWarning() << "WebSocketClass::handleOnBinaryMessage !ArrayBuffer"; + } else { + arrayBuffer = _engine->newObject(array, data); + } + arg.setProperty("data", arrayBuffer); + args << arg; + _onMessageEvent.call(QScriptValue(), args); + } +} + void WebSocketClass::handleOnOpen() { if (_onOpenEvent.isFunction()) { _onOpenEvent.call(); diff --git a/libraries/script-engine/src/WebSocketClass.h b/libraries/script-engine/src/WebSocketClass.h index dbc9729c61..048ba4bc10 100644 --- a/libraries/script-engine/src/WebSocketClass.h +++ b/libraries/script-engine/src/WebSocketClass.h @@ -123,6 +123,7 @@ private slots: void handleOnClose(); void handleOnError(QAbstractSocket::SocketError error); void handleOnMessage(const QString& message); + void handleOnBinaryMessage(const QByteArray& message); void handleOnOpen(); }; From 3c4d56bc501a38bb35afc874047eb0cc6f0e5903 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 7 Jan 2020 04:10:15 +0000 Subject: [PATCH 167/396] Fixed whitespace --- libraries/script-engine/src/WebSocketClass.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/script-engine/src/WebSocketClass.cpp b/libraries/script-engine/src/WebSocketClass.cpp index 25517b3775..f8fd49777f 100644 --- a/libraries/script-engine/src/WebSocketClass.cpp +++ b/libraries/script-engine/src/WebSocketClass.cpp @@ -58,8 +58,8 @@ void WebSocketClass::send(QScriptValue message) { QByteArray ba = qscriptvalue_cast(message); _webSocket->sendBinaryMessage(ba); } else { - _webSocket->sendTextMessage(message.toString()); -} + _webSocket->sendTextMessage(message.toString()); + } } void WebSocketClass::close() { From ead359ce6772014e4050f7db57d68771dfd42676 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 7 Jan 2020 05:14:38 +0000 Subject: [PATCH 168/396] Fixed clara rubbish --- interface/resources/qml/+webengine/QmlWebWindowView.qml | 2 +- interface/resources/qml/hifi/tablet/TabletRoot.qml | 2 +- interface/resources/qml/hifi/tablet/WindowRoot.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/+webengine/QmlWebWindowView.qml b/interface/resources/qml/+webengine/QmlWebWindowView.qml index d2f1820e9a..c2ac92a1a7 100644 --- a/interface/resources/qml/+webengine/QmlWebWindowView.qml +++ b/interface/resources/qml/+webengine/QmlWebWindowView.qml @@ -40,7 +40,7 @@ Controls.WebView { userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] function onWebEventReceived(event) { - if (event.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof event === 'string' && event.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(event.slice(18)); } } diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 6001497743..be8a0cabe0 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -200,7 +200,7 @@ Rectangle { id: eventBridgeConnection target: eventBridge onWebEventReceived: { - if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof message === 'string' && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); } } diff --git a/interface/resources/qml/hifi/tablet/WindowRoot.qml b/interface/resources/qml/hifi/tablet/WindowRoot.qml index ef2df5e218..05107699e0 100644 --- a/interface/resources/qml/hifi/tablet/WindowRoot.qml +++ b/interface/resources/qml/hifi/tablet/WindowRoot.qml @@ -118,7 +118,7 @@ Windows.ScrollingWindow { id: eventBridgeConnection target: eventBridge onWebEventReceived: { - if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof message === 'string' && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); } } From d87cd0112916b402740464d8d87a2a358379ff78 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Jan 2020 03:03:08 -0500 Subject: [PATCH 169/396] Adds major QOL updates to whitelist --- libraries/script-engine/src/ScriptEngine.cpp | 34 ++++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 1e46e55eff..f4438f3c7b 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -85,9 +85,7 @@ #include "MIDIEvent.h" #include "SettingHandle.h" -// #include "SettingManager.h" -// #include "SettingInterface.h" -// #include "SettingHelpers.h" +#include const QString ScriptEngine::_SETTINGS_ENABLE_EXTENDED_EXCEPTIONS { "com.highfidelity.experimental.enableExtendedJSExceptions" @@ -2364,10 +2362,18 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } else { // ENTITY SCRIPT WHITELIST STARTS HERE + auto nodeList = DependencyManager::get(); + bool isInWhitelist = false; // assume unsafe + bool autoPassList = false; QString whitelistPrefix = "[WHITELIST ENTITY SCRIPTS]"; - QList safeURLS = { "" }; + QList safeURLS = { "file:///", "atp:", "cache:" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); + // IF WHITELIST IS DISABLED IN SETTINGS + bool whitelistEnabled = Setting::Handle("private/whitelistEnabled", true).get(); + if (!whitelistEnabled) { + autoPassList = true; + } // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); @@ -2376,9 +2382,23 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // END PULL SAFEURLS FROM INTERFACE.JSON Settings - bool isInWhitelist = false; // assume unsafe + // GET CURRENT DOMAIN WHITELIST BYPASS, IN CASE AN ENTIRE DOMAIN IS WHITELISTED + QString currentDomain = DependencyManager::get()->getDomainURL().host(); + + QString domainSafeIP = nodeList->getDomainHandler().getHostname(); + QString domainSafeURL = "hifi://" + currentDomain; + for (const auto& str : safeURLS) { + if(domainSafeURL.startsWith(str) || domainSafeIP.startsWith(str)) { + qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed. Current Domain Host: " + << nodeList->getDomainHandler().getHostname() + << "Current Domain: " << currentDomain; + isInWhitelist = true; + autoPassList = true; + } + } + // END CURRENT DOMAIN WHITELIST BYPASS - if (ScriptEngine::getContext() == "entity_server") { + if (ScriptEngine::getContext() == "entity_server" || autoPassList == true) { // If running on the server or waved through, do not engage whitelist. isInWhitelist = true; } else { for (const auto& str : safeURLS) { @@ -2392,7 +2412,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } } - if (!isInWhitelist) { + if (!isInWhitelist || autoPassList == false) { qCDebug(scriptengine) << whitelistPrefix << "(disabled entity script)" << entityID.toString() << scriptOrURL; exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); } else { From 13d79fec8b23153671b0d7ea4a77c2714ea753cd Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Jan 2020 13:04:28 -0500 Subject: [PATCH 170/396] Fixes bools and tab. --- libraries/script-engine/src/ScriptEngine.cpp | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index f4438f3c7b..aa96e738f3 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2361,10 +2361,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co } } else { - // ENTITY SCRIPT WHITELIST STARTS HERE + // ENTITY SCRIPT WHITELIST STARTS HERE auto nodeList = DependencyManager::get(); - bool isInWhitelist = false; // assume unsafe - bool autoPassList = false; + bool passList = false; // assume unsafe QString whitelistPrefix = "[WHITELIST ENTITY SCRIPTS]"; QList safeURLS = { "file:///", "atp:", "cache:" }; safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); @@ -2372,14 +2371,13 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // IF WHITELIST IS DISABLED IN SETTINGS bool whitelistEnabled = Setting::Handle("private/whitelistEnabled", true).get(); if (!whitelistEnabled) { - autoPassList = true; + passList = true; } - // PULL SAFEURLS FROM INTERFACE.JSON Settings + // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); QStringList settingsSafeURLS = raw.toString().trimmed().split(QRegExp("\\s*[,\r\n]+\\s*"), QString::SkipEmptyParts); safeURLS += settingsSafeURLS; - // END PULL SAFEURLS FROM INTERFACE.JSON Settings // GET CURRENT DOMAIN WHITELIST BYPASS, IN CASE AN ENTIRE DOMAIN IS WHITELISTED @@ -2392,27 +2390,28 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed. Current Domain Host: " << nodeList->getDomainHandler().getHostname() << "Current Domain: " << currentDomain; - isInWhitelist = true; - autoPassList = true; + passList = true; } } // END CURRENT DOMAIN WHITELIST BYPASS - if (ScriptEngine::getContext() == "entity_server" || autoPassList == true) { // If running on the server or waved through, do not engage whitelist. - isInWhitelist = true; + // START CHECKING AGAINST THE WHITELIST + if (ScriptEngine::getContext() == "entity_server" || passList == true) { // If running on the server or waved through, do not engage whitelist. + passList = true; } else { for (const auto& str : safeURLS) { qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); if (!str.isEmpty() && scriptOrURL.startsWith(str)) { - isInWhitelist = true; + passList = true; qCDebug(scriptengine) << whitelistPrefix << "Script approved."; break; // bail early since we found a match } } } + // END CHECKING AGAINST THE WHITELIST - if (!isInWhitelist || autoPassList == false) { + if (!passList) { // If the entity failed to pass for any reason, it's blocked and an error is thrown. qCDebug(scriptengine) << whitelistPrefix << "(disabled entity script)" << entityID.toString() << scriptOrURL; exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0"); } else { From e488a668408b989b5b7bec5fbcf87ebb61c00ec1 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 7 Jan 2020 20:59:00 +0000 Subject: [PATCH 171/396] changed quote types --- interface/resources/qml/+webengine/QmlWebWindowView.qml | 2 +- interface/resources/qml/hifi/tablet/TabletRoot.qml | 2 +- interface/resources/qml/hifi/tablet/WindowRoot.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/+webengine/QmlWebWindowView.qml b/interface/resources/qml/+webengine/QmlWebWindowView.qml index c2ac92a1a7..84ab61ad28 100644 --- a/interface/resources/qml/+webengine/QmlWebWindowView.qml +++ b/interface/resources/qml/+webengine/QmlWebWindowView.qml @@ -40,7 +40,7 @@ Controls.WebView { userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] function onWebEventReceived(event) { - if (typeof event === 'string' && event.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof event === "string" && event.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(event.slice(18)); } } diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index be8a0cabe0..2fa08428ae 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -200,7 +200,7 @@ Rectangle { id: eventBridgeConnection target: eventBridge onWebEventReceived: { - if (typeof message === 'string' && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof message === "string" && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); } } diff --git a/interface/resources/qml/hifi/tablet/WindowRoot.qml b/interface/resources/qml/hifi/tablet/WindowRoot.qml index 05107699e0..d888375db2 100644 --- a/interface/resources/qml/hifi/tablet/WindowRoot.qml +++ b/interface/resources/qml/hifi/tablet/WindowRoot.qml @@ -118,7 +118,7 @@ Windows.ScrollingWindow { id: eventBridgeConnection target: eventBridge onWebEventReceived: { - if (typeof message === 'string' && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + if (typeof message === "string" && message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); } } From ea36e7a239b4162c49c25e8c19703f1cd4cfdf8d Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Wed, 8 Jan 2020 00:12:30 +0100 Subject: [PATCH 172/396] Fix thousands of 'is too small to hold all values' warnings on Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When building with GCC, it generates 3020 warnings like this: libraries/gpu/src/gpu/State.h:208:18: warning: ‘gpu::State::BlendFunction::destColor’ is too small to hold all values of ‘enum gpu::State::BlendArg’ This is because ‘enum gpu::State::BlendArg’ is declared as an enum of uint16 size, and gpu::State::BlendFunction::destColor is a bit field. GCC correctly deduces that a 16 bit value won't always fit in a 4 bit field, and emits a warning. The problem is that the amount is such that it floods the output and hides other warnings. Changing the 'enum foo : uint16' declarations to 'enum foo' stops gcc from emitting the warning. Making this change required the removal of a set of assertion checks. At least empirically they seem unnecessary -- the interface compiles and runs fine. --- libraries/gpu/src/gpu/Format.h | 2 +- libraries/gpu/src/gpu/State.h | 28 ++++++---------------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/libraries/gpu/src/gpu/Format.h b/libraries/gpu/src/gpu/Format.h index 25bb2baba4..61518edb6c 100644 --- a/libraries/gpu/src/gpu/Format.h +++ b/libraries/gpu/src/gpu/Format.h @@ -377,7 +377,7 @@ public: }; -enum ComparisonFunction : uint16 { +enum ComparisonFunction { NEVER = 0, LESS, EQUAL, diff --git a/libraries/gpu/src/gpu/State.h b/libraries/gpu/src/gpu/State.h index 2e8a3f2cab..7467d86ac6 100755 --- a/libraries/gpu/src/gpu/State.h +++ b/libraries/gpu/src/gpu/State.h @@ -46,7 +46,7 @@ public: typedef ::gpu::ComparisonFunction ComparisonFunction; - enum FillMode : uint8 + enum FillMode { FILL_POINT = 0, FILL_LINE, @@ -55,7 +55,7 @@ public: NUM_FILL_MODES, }; - enum CullMode : uint8 + enum CullMode { CULL_NONE = 0, CULL_FRONT, @@ -64,7 +64,7 @@ public: NUM_CULL_MODES, }; - enum StencilOp : uint16 + enum StencilOp { STENCIL_OP_KEEP = 0, STENCIL_OP_ZERO, @@ -78,7 +78,7 @@ public: NUM_STENCIL_OPS, }; - enum BlendArg : uint16 + enum BlendArg { ZERO = 0, ONE, @@ -99,7 +99,7 @@ public: NUM_BLEND_ARGS, }; - enum BlendOp : uint16 + enum BlendOp { BLEND_OP_ADD = 0, BLEND_OP_SUBTRACT, @@ -110,7 +110,7 @@ public: NUM_BLEND_OPS, }; - enum ColorMask : uint8 + enum ColorMask { WRITE_NONE = 0, WRITE_RED = 1, @@ -140,8 +140,6 @@ public: bool operator!=(const DepthTest& right) const { return getRaw() != right.getRaw(); } }; - static_assert(sizeof(DepthTest) == sizeof(uint32_t), "DepthTest size check"); - struct StencilTest { ComparisonFunction function : 4; StencilOp failOp : 4; @@ -282,20 +280,6 @@ public: Flags flags; }; - static_assert(offsetof(Data, depthBias) == 0, "Data offsets"); - static_assert(offsetof(Data, depthBiasSlopeScale) == 4, "Data offsets"); - static_assert(offsetof(Data, depthTest) == 8, "Data offsets"); - static_assert(offsetof(Data, stencilActivation) == 12, "Data offsets"); - static_assert(offsetof(Data, stencilTestFront) == 16, "Data offsets"); - static_assert(offsetof(Data, stencilTestBack) == 20, "Data offsets"); - static_assert(offsetof(Data, sampleMask) == 24, "Data offsets"); - static_assert(offsetof(Data, blendFunction) == 28, "Data offsets"); - static_assert(offsetof(Data, fillMode) == 32, "Data offsets"); - static_assert(offsetof(Data, cullMode) == 33, "Data offsets"); - static_assert(offsetof(Data, colorWriteMask) == 34, "Data offsets"); - static_assert(offsetof(Data, flags) == 35, "Data offsets"); - static_assert(sizeof(Data) == 36, "Data Size Check"); - std::string getKey() const; // The unique default values for all the fields From 27d2aaa8ce8ef80be09ba25e5e4a0bebe36a616f Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 00:17:54 +0000 Subject: [PATCH 173/396] Added formatting and grid chat and mute and god knows send help please --- scripts/communityModules/chat/FloofChat.html | 389 ++-- scripts/communityModules/chat/FloofChat.js | 279 ++- .../{FloofChat2.html => FloofChat_OLD.html} | 176 +- .../communityModules/chat/emoticons/COPYING | 67 - .../communityModules/chat/emoticons/README | 12 - .../chat/emoticons/face-angel.png | Bin 992 -> 0 bytes .../chat/emoticons/face-crying.png | Bin 936 -> 0 bytes .../chat/emoticons/face-devilish.png | Bin 855 -> 0 bytes .../chat/emoticons/face-glasses.png | Bin 949 -> 0 bytes .../chat/emoticons/face-grin.png | Bin 905 -> 0 bytes .../chat/emoticons/face-kiss.png | Bin 919 -> 0 bytes .../chat/emoticons/face-monkey.png | Bin 784 -> 0 bytes .../chat/emoticons/face-plain.png | Bin 894 -> 0 bytes .../chat/emoticons/face-sad.png | Bin 918 -> 0 bytes .../chat/emoticons/face-smile-big.png | Bin 896 -> 0 bytes .../chat/emoticons/face-smile.png | Bin 919 -> 0 bytes .../chat/emoticons/face-surprise.png | Bin 917 -> 0 bytes .../chat/emoticons/face-wink.png | Bin 914 -> 0 bytes scripts/communityModules/chat/js/jscolor.js | 1855 +++++++++++++++++ 19 files changed, 2402 insertions(+), 376 deletions(-) rename scripts/communityModules/chat/{FloofChat2.html => FloofChat_OLD.html} (76%) delete mode 100644 scripts/communityModules/chat/emoticons/COPYING delete mode 100644 scripts/communityModules/chat/emoticons/README delete mode 100644 scripts/communityModules/chat/emoticons/face-angel.png delete mode 100644 scripts/communityModules/chat/emoticons/face-crying.png delete mode 100644 scripts/communityModules/chat/emoticons/face-devilish.png delete mode 100644 scripts/communityModules/chat/emoticons/face-glasses.png delete mode 100644 scripts/communityModules/chat/emoticons/face-grin.png delete mode 100644 scripts/communityModules/chat/emoticons/face-kiss.png delete mode 100644 scripts/communityModules/chat/emoticons/face-monkey.png delete mode 100644 scripts/communityModules/chat/emoticons/face-plain.png delete mode 100644 scripts/communityModules/chat/emoticons/face-sad.png delete mode 100644 scripts/communityModules/chat/emoticons/face-smile-big.png delete mode 100644 scripts/communityModules/chat/emoticons/face-smile.png delete mode 100644 scripts/communityModules/chat/emoticons/face-surprise.png delete mode 100644 scripts/communityModules/chat/emoticons/face-wink.png create mode 100644 scripts/communityModules/chat/js/jscolor.js diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index b0a746ea5c..b9b5540a9e 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -5,44 +5,20 @@ Title + + + + + + - - - +

    -
    -
    -
    - - - +
    + + + +
    +
    -
    -
    -
    - -
    -
    -
    + + + Redock
    +
    +
    +
    + -
    -
    - -
    -
    - -
    - -
    + + \ No newline at end of file diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index e1642d6a14..f1942a0097 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -22,8 +22,23 @@ var chatBar; var chatHistory; var historyLog = []; + var visible = false; var historyVisible = false; +var settingsRoot = "FloofChat"; + +var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": false}); + +var ws; +var wsReady = false; +var webSocketURL = "ws://gridchat.darlingvr.club:8090"; +var shutdownBool = false; + +var defaultColour = {red: 255, green: 255, blue: 255}; +var colours = {}; +colours["localChatColour"] = Settings.getValue(settingsRoot + "/localChatColour", defaultColour); +colours["domainChatColour"] = Settings.getValue(settingsRoot + "/domainChatColour", defaultColour); +colours["gridChatColour"] = Settings.getValue(settingsRoot + "/gridChatColour", defaultColour); init(); @@ -31,7 +46,7 @@ function init() { Messages.subscribe("Chat"); historyLog = []; try { - historyLog = JSON.parse(Settings.getValue("HistoryLog", "[]")); + historyLog = JSON.parse(Settings.getValue(settingsRoot + "/HistoryLog", "[]")); } catch (e) { // } @@ -39,7 +54,6 @@ function init() { setupHistoryWindow(false); chatBar = new OverlayWindow({ - // source: "http://localhost:8000/fluffytest.qml", source: Paths.defaultScripts + '/communityModules/chat/FloofChat.qml?' + Date.now(), width: 360, height: 180 @@ -50,34 +64,81 @@ function init() { chatBar.sendToQml(JSON.stringify({visible: false})); Controller.keyPressEvent.connect(keyPressEvent); Messages.messageReceived.connect(messageReceived); + + connectWebSocket(); } -function setupHistoryWindow(popout) { - if (!popout) { - chatHistory = new OverlayWebWindow({ - title: 'Chat History', - source: ROOT + "FloofChat2.html?appUUID=" + appUUID + "&" + Date.now(), - width: 900, - height: 700, - visible: false - }); - chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); - chatHistory.webEventReceived.connect(onWebEventReceived); - chatHistory.closed.connect(toggleChatHistory); +function connectWebSocket(timeout) { + ws = new WebSocket(webSocketURL); + ws.onmessage = function incoming(_data) { + var message = _data.data; + var cmd = {FAILED: true}; + try { + cmd = JSON.parse(message); + } catch (e) { + // + } + if (!cmd.FAILED) { + addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + if (!muted["Grid"]) { + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: "(G) " + cmd.displayName, + text: replaceFormatting(cmd.message), + colour: {text: cmd.colour} + })); + } + } + }; + + ws.onopen = function open() { + wsReady = true; + }; + + ws.onclose = function close() { + wsReady = false; + console.log('disconnected'); + + timeout = timeout | 0; + if (!shutdownBool && timeout < (30 * 1000)) { + Script.setTimeout(function () { + connectWebSocket(timeout); + }, timeout + 1000); + } else { + wsReady = -1; + } + }; +} + + +function sendWS(msg, timeout) { + if (wsReady === true) { + ws.send(JSON.stringify(msg)); } else { - chatHistory = Desktop.createWindow(Paths.defaultScripts + '/communityModules/chat/webview.qml?' + Date.now(), { - title: "Chat History", - additionalFlags: Desktop.CLOSE_BUTTON_HIDES, - presentationMode: Desktop.PresentationMode.NATIVE, - visible: false, - size: {x: 900, y: 700}, - position: {x: 0, y: Window.innerHeight - 700} - }); - chatHistory.webEventReceived.connect(onWebEventReceived); - chatHistory.closed.connect(toggleChatHistory); + timeout = timeout | 0; + if (!shutdownBool && timeout < (30 * 1000)) { + Script.setTimeout(function () { + if (wsReady === -1) { + connectWebSocket(); + } + sendWS(msg, timeout); + }, timeout + 1000); + } } } +function setupHistoryWindow() { + chatHistory = new OverlayWebWindow({ + title: 'Chat History', + source: ROOT + "FloofChat.html?appUUID=" + appUUID + "&" + Date.now(), + width: 900, + height: 700, + visible: false + }); + chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); + chatHistory.webEventReceived.connect(onWebEventReceived); + chatHistory.closed.connect(toggleChatHistory); +} + function emitScriptEvent(obj) { obj.appUUID = appUUID; tablet.emitScriptEvent(JSON.stringify(obj)); @@ -89,19 +150,35 @@ function toggleChatHistory() { chatHistory.visible = historyVisible; } +function chatColour(tab) { + if (tab === "Local") { + return colours["localChatColour"]; + } else if (tab === "Domain") { + return colours["domainChatColour"]; + } else if (tab === "Grid") { + return colours["gridChatColour"]; + } else { + return defaultColour; + } +} + function onWebEventReceived(event) { - console.log("event " + event); event = JSON.parse(event); if (event.type === "ready") { - chatHistory.emitScriptEvent(JSON.stringify(historyLog)); + chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: historyLog})); + chatHistory.emitScriptEvent(JSON.stringify({type: "CMD", cmd: "MUTED", muted: muted})); } if (event.type === "CMD") { + if (event.cmd === "MUTED") { + muted = event.muted; + Settings.setValue(settingsRoot + "/muted", muted); + } + if (event.cmd === "COLOUR") { + Settings.setValue(settingsRoot + "/" + event.colourType + "Colour", event.colour); + colours[event.colourType] = event.colour; + } if (event.cmd === "REDOCK") { - if(popout){ - - }else{ - chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); - } + chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); } if (event.cmd === "GOTO") { var result = Window.confirm("Do you want to goto " + event.url.split("/")[2] + " ?"); @@ -122,13 +199,24 @@ function onWebEventReceived(event) { Window.copyToClipboard(event.url); } } + if (event.type === "WEBMSG") { + if (event.message === "") return; + sendWS({ + uuid: "", + type: "WebChat", + channel: event.tab, + colour: chatColour(event.tab), + message: event.message, + displayName: MyAvatar.displayName + }); + } if (event.type === "MSG") { if (event.message === "") return; Messages.sendMessage("Chat", JSON.stringify({ type: "TransmitChatMessage", position: MyAvatar.position, channel: event.tab, - colour: {red: 222, green: 222, blue: 222}, + colour: chatColour(event.tab), message: event.message, displayName: MyAvatar.displayName })); @@ -136,9 +224,68 @@ function onWebEventReceived(event) { } } -function messageReceived(channel, message, sender, local) { - if (channel === "Chat" || channel === "Support") { +function replaceFormatting(text) { + var found = false; + if (text.indexOf("**") !== -1) { + var firstMatch = text.indexOf("**") + 2; + var secondMatch = text.indexOf("**", firstMatch); + if (firstMatch !== -1 && secondMatch !== -1) { + found = true; + var part1 = text.substring(0, firstMatch - 2); + var part2 = text.substring(firstMatch, secondMatch); + var part3 = text.substring(secondMatch + 2); + text = part1 + "" + part2 + "" + part3; + } + } else if (text.indexOf("*") !== -1) { + var firstMatch = text.indexOf("*") + 1; + var secondMatch = text.indexOf("*", firstMatch); + if (firstMatch !== -1 && secondMatch !== -1) { + found = true; + var part1 = text.substring(0, firstMatch - 1); + var part2 = text.substring(firstMatch, secondMatch); + var part3 = text.substring(secondMatch + 1); + text = part1 + "" + part2 + "" + part3; + } + } else if (text.indexOf("__") !== -1) { + var firstMatch = text.indexOf("__") + 2; + var secondMatch = text.indexOf("__", firstMatch); + if (firstMatch !== -1 && secondMatch !== -1) { + found = true; + var part1 = text.substring(0, firstMatch - 2); + var part2 = text.substring(firstMatch, secondMatch); + var part3 = text.substring(secondMatch + 2); + text = part1 + "" + part2 + "" + part3; + } + } else if (text.indexOf("_") !== -1) { + var firstMatch = text.indexOf("_") + 1; + var secondMatch = text.indexOf("_", firstMatch); + if (firstMatch !== -1 && secondMatch !== -1) { + found = true; + var part1 = text.substring(0, firstMatch - 1); + var part2 = text.substring(firstMatch, secondMatch); + var part3 = text.substring(secondMatch + 1); + text = part1 + "" + part2 + "" + part3; + } + } else if (text.indexOf("~~") !== -1) { + var firstMatch = text.indexOf("~~") + 2; + var secondMatch = text.indexOf("~~", firstMatch); + if (firstMatch !== -1 && secondMatch !== -1) { + found = true; + var part1 = text.substring(0, firstMatch - 2); + var part2 = text.substring(firstMatch, secondMatch); + var part3 = text.substring(secondMatch + 2); + text = part1 + "" + part2 + "" + part3; + } + } + if (found) { + return replaceFormatting(text); + } else { + return text; + } +} +function messageReceived(channel, message) { + if (channel === "Chat") { var cmd = {FAILED: true}; try { cmd = JSON.parse(message); @@ -153,20 +300,44 @@ function messageReceived(channel, message, sender, local) { if (!cmd.hasOwnProperty("colour")) { cmd.colour = {red: 222, green: 222, blue: 222}; } + if (cmd.message.indexOf("/me") === 0) { + cmd.message = cmd.message.replace("/me", cmd.displayName); + cmd.displayName = ""; + } if (cmd.channel === "Local") { if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + if (!muted["Local"]) { + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: "(L) " + cmd.displayName, + text: replaceFormatting(cmd.message), + colour: {text: cmd.colour} + })); + } + } + } else if (cmd.channel === "Domain") { + addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + if (!muted["Domain"]) { Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ - sender: "L " + cmd.displayName, - text: cmd.message, + sender: "(D) " + cmd.displayName, + text: replaceFormatting(cmd.message), + colour: {text: cmd.colour} + })); + } + } else if (cmd.channel === "Grid") { + addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); + if (!muted["Grid"]) { + Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + sender: "(G) " + cmd.displayName, + text: replaceFormatting(cmd.message), colour: {text: cmd.colour} })); } } else { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ - sender: ((cmd.channel === "Domain") ? "D " : "") + cmd.displayName, - text: cmd.message, + sender: cmd.displayName, + text: replaceFormatting(cmd.message), colour: {text: cmd.colour} })); } @@ -189,13 +360,16 @@ function time() { function addToLog(msg, dp, colour, tab) { historyLog.push([time(), msg, dp, colour, tab]); - chatHistory.emitScriptEvent(JSON.stringify([[time(), msg, dp, colour, tab]])); + chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: [[time(), msg, dp, colour, tab]]})); if (historyLog.length > 500) { historyLog.pop(); } - Settings.setValue("HistoryLog", JSON.stringify(historyLog)) + Settings.setValue(settingsRoot + "/HistoryLog", JSON.stringify(historyLog)) } +const CONTROL = 67108864; +const SHIFT = 33554432; + function fromQml(message) { var cmd = {FAILED: true}; try { @@ -204,21 +378,29 @@ function fromQml(message) { // } if (!cmd.FAILED) { - console.log(JSON.stringify(cmd.event)); if (cmd.type === "MSG") { if (cmd.message !== "") { - if (cmd.event.modifiers === 67108864) { + if (cmd.event.modifiers === CONTROL) { Messages.sendMessage("Chat", JSON.stringify({ - type: "TransmitChatMessage", channel: "Domain", colour: {red: 222, green: 222, blue: 222}, + type: "TransmitChatMessage", channel: "Domain", colour: chatColour("Domain"), message: cmd.message, displayName: MyAvatar.displayName })); + } else if (cmd.event.modifiers === CONTROL + SHIFT) { + sendWS({ + uuid: "", + type: "WebChat", + channel: "Grid", + colour: chatColour("Grid"), + message: cmd.message, + displayName: MyAvatar.displayName + }); } else { Messages.sendMessage("Chat", JSON.stringify({ type: "TransmitChatMessage", channel: "Local", position: MyAvatar.position, - colour: {red: 222, green: 222, blue: 222}, + colour: chatColour("Local"), message: cmd.message, displayName: MyAvatar.displayName })); @@ -229,13 +411,6 @@ function fromQml(message) { if (cmd.cmd === "Clicked") { toggleChatHistory() } - - /* - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ - sender: "Chat", - text: msg, - colour: {text: {red: 200, green: 200, blue: 200}} - }));*/ } } } @@ -254,7 +429,6 @@ function setVisible(_visible) { })); chatBar.sendToQml(JSON.stringify({visible: false})); } - visible = _visible; } @@ -270,7 +444,6 @@ function keyPressEvent(event) { } } - function shutdown() { try { Messages.messageReceived.disconnect(messageReceived); diff --git a/scripts/communityModules/chat/FloofChat2.html b/scripts/communityModules/chat/FloofChat_OLD.html similarity index 76% rename from scripts/communityModules/chat/FloofChat2.html rename to scripts/communityModules/chat/FloofChat_OLD.html index 6d886aaeca..b0a746ea5c 100644 --- a/scripts/communityModules/chat/FloofChat2.html +++ b/scripts/communityModules/chat/FloofChat_OLD.html @@ -5,12 +5,6 @@ Title - - - - - - @@ -20,6 +14,34 @@ height: 100%; } + /* Style the tab */ + div.tab { + overflow: hidden; + border: 1px solid #ccc; + background-color: #f1f1f1; + } + + /* Style the buttons inside the tab */ + div.tab button { + background-color: inherit; + float: left; + border: none; + outline: none; + cursor: pointer; + padding: 14px 16px; + transition: 0.3s; + } + + /* Change background color of buttons on hover */ + div.tab button:hover { + background-color: #ddd; + } + + /* Create an active/current tablink class */ + div.tab button.active { + background-color: #ccc; + } + div.dockButton { @@ -75,15 +97,25 @@ min-height: 100vh; font-size: 20px; width: 100%; - height: 100%; + display: flex; + flex-direction: column; } + .TopBar { + height: 40px; + background: linear-gradient(#2b2b2b, #1e1e1e); + font-weight: bold; + padding: 10px 10px 10px 10px; + display: flex; + align-items: center; + width: 100vw; + font-size: 28px; + } .ChatLog { - height: calc(100vh - 128px); - /*height: calc(100vh - 103px); - width: calc(100vw - 40px);*/ - padding: 20px !important; + height: calc(100vh - 169px); + width: calc(100vw - 40px); + padding: 20px; font-size: 20px; color: white; background-color: black; @@ -105,7 +137,6 @@ .LogLogLine { margin-bottom: 15px; - padding: 10px !important; } .LogLogLineMessage { @@ -114,17 +145,15 @@ .ChatInput { color: #252525; - background: #252525; + /*background: linear-gradient(#575757 20%, #252525 100%);*/ height: 60px !important; } .ChatInputText { - padding: 5px !important; - height: 50px !important; + padding: 5px 0px 0px 5px; + height: 60px !important; width: 100vw; font-size: 20px !important; - background-color: white !important; - border: white !important; } .responsive { @@ -133,10 +162,6 @@ height: auto; } - .row .col { - padding: 0; - } - @@ -144,28 +169,37 @@ -
    - -
    - - - Redock +
    +
    +
    + + + +
    +
    +
    +
    + +
    -
    Test 1
    -
    Test 2
    -
    Test 3
    - +
    +
    + +
    +
    + +
    +
    + +
    + +
    - - \ No newline at end of file diff --git a/scripts/communityModules/chat/emoticons/COPYING b/scripts/communityModules/chat/emoticons/COPYING deleted file mode 100644 index e709d0c050..0000000000 --- a/scripts/communityModules/chat/emoticons/COPYING +++ /dev/null @@ -1,67 +0,0 @@ -Creative Commons Attribution-ShareAlike 2.5 License Agreement - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - - 1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - 2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - 3. "Licensor" means the individual or entity that offers the Work under the terms of this License. - 4. "Original Author" means the individual or entity who created the Work. - 5. "Work" means the copyrightable work of authorship offered under the terms of this License. - 6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - 7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - - 1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - 2. to create and reproduce Derivative Works; - 3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - 4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. - 5. - - For the avoidance of doubt, where the work is a musical composition: - 1. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work. - 2. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). - 6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - - 1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested. - 2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. - 3. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - 1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - 2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - - 1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - 2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - 3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - 4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - 5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/scripts/communityModules/chat/emoticons/README b/scripts/communityModules/chat/emoticons/README deleted file mode 100644 index 407409cf38..0000000000 --- a/scripts/communityModules/chat/emoticons/README +++ /dev/null @@ -1,12 +0,0 @@ -Tango Icon Theme ----------------- - -This is an icon theme that follows the Tango visual guidelines [1]. Currently -it depends on Imagemagick for creation of 24x24 bitmaps by adding a 1px padding -around the 22x22px version. For GNOME and KDE you will also need -icon-naming-utils that allow the theme to work in these environments before -they follow the new naming scheme [2]. - - -[1] http://tango-project.org/Tango_Icon_Theme_Guidelines -[2] http://tango-project.org/Standard_Icon_Naming_Specification diff --git a/scripts/communityModules/chat/emoticons/face-angel.png b/scripts/communityModules/chat/emoticons/face-angel.png deleted file mode 100644 index d2c5e940df52406a6fdb2289da426cbbf6052404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 992 zcmV<610Vc}P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00S&ZL_t(I%WaZdY?E~u#()3s(Dv(Cx3Ud4%Gg+pjLkTa+36f)5_C)^ z*&+$aoFp0#i5D33!gy;U(ZrZ&6hmTS6e9*vF6M5$AkhI66kSGE)R9T6O(|Wwp84AE z@b_YDiHG0Sd-3LZ-n`EvxJ~?{9Yd;L-EZjeJ+7lPNLLGhP^DCDp~_s@3eAG@OTfEu zwzl@KIWbHEKmg32dGk<{JNb#&wH=T9JKow1|3{(p0OI?L6g@relTR#Ek%e29WZOo^G6)dRp%_Ft+A_ z=s%pDlAxMaa2E2|OBu@gy)$qF0PVN89&K?`8Lxl$QMAgBFt-5J1Zrs(0I974i5E+U^E?r&OOb3V9Z5NXaMj3$KczkR+0#|7I)R!YcX9Q>Uu&&`ld zXZLS=?&C>Cn3)5C?m=Y!630IOnX8K#gy!Mkv+oeO7U#92CqY$-ET;J2%Q<9fhCpW@ zIJZUsG^LPvT&v%Vo4iO*R~sizO|uyNibLbO>FV6fLw%hbeBoU>HZ}0%&|Tn`QR~}K z3fbY6CtB4uq4+@B4D`0MbKpMEJS+LQE+dchvTv{lDg|UAj?Cr|ngNd8ypogdiAuW& zRvBp(kyaTj6D$jC3+xJ5C8U`JGmEq;NUH=w$pUC@P2jAx9J@2V6yx+4$MJcF+11}o zsHG9JVxdZlWMYZqCug{$wVPL8d++rL%m*UpVD9PD#=Q@u}?p$l4RE?Jt)8F-M92n{F`@4~Uo<}-YupJ*#N(4Gp z|2Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q($L_t(I%cYZBXk1kkhQGb{nKL=fG%1tL)YdkEVlatqjCDGUQSd=p zEw&U2v0^nElm<2CO+;F#tsvCkH4zy>@+u7_NYsig^hq;@*h@@(XjF31=GIKoq%&vE znKOI)5GuBP^m|_G=V!4#!5s{B&?W=fB7Bh`5K%0$#@53+L|?L7_ue@#{-;Ppj;=*7o<}GP zj0J&@@qMUF;boV&`sL9%UBRxMpXd<)2_QYvb#HXXL-qvwT8~ikI_Pl(A?HjJ+I3a`xu~O4U zPOayMfv?%SJB7#>Hb38RZSspjeM!n9Eme;_gI+j8_lbSH{X&dFF~E-4l#~LcC>p`N z+jevR!4EKh4-if6#ki#w04Y2Yp;!aLXoRwn(y%7vlJg}>3J`+zPJwk{pVzAUp;RCg zZ$P*vv3i4mC@O-{MNHt+Ke~xBt3<@opamH4vQzvvzQX%|z65~};RpmoR|71vcvx7XuBIV>f{o!Ao0?(- z8=jz;FYxh{B)YRu}ns; z3%Bn$>5bea(=9T+ojumipKcWe5(KQ;=!jwAsJ@3k4DPb=fAbF@zBcB0Ue8+q0000< KMNUMnLSTY~uBcN0 diff --git a/scripts/communityModules/chat/emoticons/face-devilish.png b/scripts/communityModules/chat/emoticons/face-devilish.png deleted file mode 100644 index 8e2cd4584d20c2add45d249ce4c93b444bbb0426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmV-d1E~CoP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00N^)L_t(I%dL~iPZMz%hM$>EcNOT^ItavwVq6MUsYwyz!9=1L4=C{f z9`GOsP5eJR5-%7NMDbuyPQ(B%F)p!gVU6Gd5do1llwwJzQ)cGpK`?kQUVKmQ<$Esg z^GV&2$~NEvzY@(3jZ^^*Kokf7Dc~*8<%?7fuXccI^+O{qQg@_Moa!%U`eB9_jgRBi zRcg$u`EUk($SxU6H_0b-^zT^)-lyWVw~xgD2CgKj9~zMyXSFTbhg*x$f*me=66dBfnHLm0EDriqWv2cDr@&*S*t?yX8xF0iP61+Le z*8^o(GbXNp2PT&qfOZ*(I#mz0A;2k7W$P9I+nzlmJUB>UPY;bku(`LF)4EQuuaCM!g6gp` z0EBL`>IX9LHlN4>u-wsss;Y#;VE_Vw006400x;X!3cyOrU`;3)=vw}kW$(!d3!OKZ z?dieob_3w|`vC}rLL__dGv9HYnu8j-R1TmEz|jqZM}Fi_lyCKyZZB4u9DmKG>TLwH z3aphJUPX}k@|20ItsIK%B0DwB&{QVg1eXBTM5+QFME3f8SvGk0F`WR8H^K04z&c1Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00RL@L_t(I%dO8%Oq+E8$MNs~>GM2&Xw&i{YfT+5W60aKQmT&5xdgYs zfn*YctQt*>iHU}j2hW;t@xGIu6g`>Z!Nr7R#AGocOvMQ+9Uu;USVYzluu$6Pt^db^ zFTuON`}dRl1i(agd;*vPI>1+=RP7;crFJIpAY7=m9Nluy1`enTf{?%_@LuloFLD5Z zzvIsu6TN1-rOD{)ZjA<;6Z-s)9*kZbQ)bP&U{5NgCr>Aoc%*)}ti>K$hr5$!&i1X} zE3DpAfvLts@6wf%@?6)2r$TBd!1m56QpUJBzech@!87R)vF1*^vKx;tEJwbs^(-Ac zT$=)N3eeHpP;2kX41^4$gz9bb_+tjKC+cxrh1Sj(v4$X;G%-SDx(Ab?HvOpmue+dv zuY~K3xE~ZqZy$>gX0eQ069D)qcp`|Z2&$Dm%#x20(c<8H*_U5>Usdpxq9w_%-@(IR zdF=tWzB}N>p)f(sXUp8<`lr9s->sAG4&d6qaUko6Qnky3-%&KADBLZuWtOliB~G7I z8M|cgQ+}I~OCI?}lNT-q80ZON+aARoi~Ae*8PZm2fTo6oBVNm9$j#1E$ZLQg*5omH zt-@f+qdl%NbJJtxM-}in5w&@HJWb@rO!zBru%<>t#Xa8@(o)ey3fpneG=!=lgo`*Pm3R%DHw2p&WAk%PpL0E6ar_-{-50 z4Y%=p@6Slb!gs-bw8@+L++2E^QDsD1`e5&eZwNGu;9I*$*J6A$LxnJ(+^BNxYKru8 zllak5eAgimz0Cg70zeKx0Ni<9-ldgLmqqae$x*ye`_?G(;o z2U|0_+v#a890!uXTwC^)n9;1_?azW{fm9Gu0jZ)i3}f$ln7LdL7*0=f_g~-`@=-&w zFVoncL2o{VqJ{C@L+nStu)q8*f8 diff --git a/scripts/communityModules/chat/emoticons/face-grin.png b/scripts/communityModules/chat/emoticons/face-grin.png deleted file mode 100644 index d15cf2d45ae513a4cf72d175f08526643e43327e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PxXL_t(I%dL}5XcTuChoAq7VnGz4s09%v>mlODMe!qgQA-FZD3O|Vv-lBfOBF)W#u^i56Rk0` zv$ON}Ad$vX4?gGj_q^}n{R!S7*GaqLDXqd4NjzboQIJ7D?+55fb@`{?ofrQJCX}M+ zu1cjF&GlOe#Opu_gF8*>*>Bi`mzlWRpY?-&M=Hbc0zs~mg!)qS*M57<(v1lI^mT-) zfz-frk**7|Mv8?Q9-Z7h=||bT_NYG$pa3XEx@*7bvI4;|3WDwyFW#NBr_2z>%|K^xm9cNmY#fCw`~*_B7F0 zjHqT4HdY{BIn~?i|M~0qpnp$MO0=3yZTNOCLN~Z_{TavhZz6MW6Q?fyNoG$InI9Ut zaAS&C^aJFRs~D-zk#pr%07Vo@2IBPy=_Ax2nSC3OLPIDDnID@$2td%aa}`LS>=3Z( z5pyyLpy6SlR&eg(5HQ65;mb7@;92#XDzCN0pn;94w zprN4w+qTJ_Y(Y9RpiuzObyYgv(}&2A z$b&>-k=kS5y3EEcJD9q;i`m&(bX^A^91a6uSr)=~nHoGmVqF_{?iwPb_5i5Iv+~}y z<)bZ&Yu8n;j600{F@&aqQB^~^>56 zDYw7otKF6!tKiA_2##t{_DZN)fS~t+>iA;Zmqi|*KQt*UeeMh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00QGlL_t(I%dM0DYt(fd#~-iv=W`$Lv)yLf-8R3`JTyaDh`akCL%|A- zSRvAINDz%P6@)12FOd2N{3TMyQFE2GBpMNnNRU96ciUW}EnU-^E$`;-=I(O$`P|+6 z-4DkC_1B(1zg|zCUw8_SAeEp`G_RrwV^9bhMb20Z#m|v=^j`jZJW97zNQOIOp_MIr zh;Hvd+4X2|iCfdZ5S+cj;@Ei6*!0HFG58Qc>L}gQ)%Gv<9)4NU^DC5!vmD%g7ev4q zE{#WU8=hiU#3D8DwQhEnd*WwmBnm((B)i_|l7XM**d4t}>SiMob754lj)}Q2Ki^!- zj&&oP{vku`$RQ;@$yEg^m7p)Yt1}dAb$GjLic?=~+ zxAFeLDcm-P=A9j(^fBoJko22mw;p@1MOD8+If4qhh~uKxxQK0IDrK}^!jwvA?*Ycw zRI2;={gaOuVo6$U4B<7AEtE4QkU9_{d$qvGJELqk&_?FREUnKq68m5ih+vG56OMu= zT+6_q#I6Tzz-Z>a%QO1!4W8V*mHXfRMR;us%a@m!`7{H@)LIR=U~2i<2-xl!HvX8QS+;tXr&!2~e z26FxVEa&dg5EV?>$7+0m{P-0J$Pj>voi&O4#ALCQ@xYFvOCIa@In1~Pu3a1Ey3WHs zO|Yd5b~`H>kNo6RF?PlzY8C)-RqyQ!0~a>;98tl@)3m?xJ$A5)x2Um#!umZf?uM7} z?p63>@GC8KRxeZ^-ooe!)on^T+4RhgP}9z5aUxMvpdM2$;4R!De|?1ffmEzT1EOT>7!yETO$D(T9y63;$M+pGygTqi+%tA002ovPDHLkV1hqAuUh~B diff --git a/scripts/communityModules/chat/emoticons/face-monkey.png b/scripts/communityModules/chat/emoticons/face-monkey.png deleted file mode 100644 index 69db8fa5b5e06ac699018e5c702ca91c8c532018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)L zli!O}br{A!@AsUUvvcN*PRoj2bd{Sd&NeBNKgtoI$b@CrRd8V!1(&)>D!MAN#r}YZ z2&9X;sBZE?K^>w+DXC>41BYZ+*I7!CwJsuQnVoZX&+MG@eZ5h!jDmVDUmiX@ygZMn zD*s3BUk^i-;9$n^l0tuKS?>t9jWC~B&ROKcTD@f-^vk^jLzRN-h<@T4M#?>_e$lh! zGsJok4)?gtUXM#yru#4H0qn5AH1$ z*5pqBn07m^RLi{p_{B#7%kcOF!{ZZZXNBP-$Jlq|7-<~hukAq_4_|4`p$PxJ>I?cnLVR2H#f_{ z!51m`KAI+In$T=EIX!ui{!*E#3#WAMmu9mW+1*o(aKL7t^BLREQobBQf|8?Z||@EY}#5i93I-kp@HX! zqKL2+;(IQ+j0-j;o9W`#!cB}YfA(@q@AtqepMEv{V|1f&1;_6})!>QJ-R06HASO$8 zT`xcXG{-lWuSKeS_D~b|Rf3};^4{L+HgCuFs?+_*IpR+b|c|M;Eh@2BjA=}RjL zZ`SJJM-Kt+*0~RK)WCLyeueb{zX@Em@B_%nTD{fy+b#T8nSZzZv+e+GZy^;e&C$XD O0000Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PQML_t(I%cYY|XjE4ihM(`;Gxuha%p^|882Y2FwwR=C7CKI+)QX!z zMK@hU!G$`DnoU}YQ0Sr{-Lw`#5dRpYEwzhMf(-?Y6bmi2Bq5Hm!~{XRi4@aLnPieN z$=shg$3>9VWa+d1zL$6LKEf)-`pK(E^-3TaB1xf{wXP|e7z5eU=Ihn>^1sI( zyC>K7=6+)BU7(sEm?QjWlJdwU{=Ri>)VQWEdxnW80>=93aUROG&JWI}y;K4-_Y2}^ zuo|KO8wAjj!=J5i_sdU8Cdu2|Pnih-1)zKio$sGc$J}Y`;xLkU7Lpqw@f;*KAc<#S zp@?gzdHK+>v@Dy#;|6N1pM1x*cXIB!CUAh}O-N%0;w2ET5pkQ5cp7Pb0UV2$jI+M` zt=!F{IuD>!NN?MYeVF-S!~uzEz8xIr`1$M5xPi~kUFYJDw~)jpz{i$;BbD8YU9R^6 zDDla}+Pe`GB9059862AA>d$vTV*Gw%n#;fb1){(L(GszAH?nLq0GfzYWEPRIf{oTA z^@tz7It)sncAue(hq1nooxhDli`ZHjyk>|o-4>3%cZ9n4B3J{aj#K%A*vwDZ#d&1&A<83{k+?Ge(aMmD zM;O_1;8@NLC$ZHj&>o@`SPM~z4QiNLfFxfbh`+|Y!4spI0&n~`q*k}@?l+&7e5VU} z{s1fo*lGp4Fo$_qg+Nd*9VBdgl|R2fQBtj5-x?RjKXQA_d{9Vt?Z~xd_n^~Vh?fMv zLO3%;dF%?Md!wVO)$7~(g+H+-;4#GyojkRAuhhs8v0`IfiV}AQww;XD*!a{u0{u56 U&))pRivR!s07*qoM6N<$f*0eM>Hq)$ diff --git a/scripts/communityModules/chat/emoticons/face-sad.png b/scripts/communityModules/chat/emoticons/face-sad.png deleted file mode 100644 index fa258956ae0f075e793bd2451d58989703c6563c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 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 diff --git a/scripts/communityModules/chat/emoticons/face-wink.png b/scripts/communityModules/chat/emoticons/face-wink.png deleted file mode 100644 index 46be685577ce2122c83c5190cd1c6dedb87ef82c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|?P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q1gL_t(I%cYY~Xp?6g$3M^WzIoGFO>1gmZAFGtY-`OxW6ZQ}LMJSA zf*`f9gVM`->By(C~S;QFo!X`2-2ws^`fBDL0h`4u2tzs2cs%xMw_OtZQg%* z9uGmB_PFo)_xtkY`$zB=#{21&zU&sRNZ^YICPi(jtO_uk98y2MeJ}p=7?+O7G$y-J z4f}csL|Z}Df;*4*^geT=7y0MzjWK1ZzT^)~y+JVEPuy4(H(CbH#DbAEsQFt6!vt-D z@1k87>QXqx61gA0ET}LCcYm*@03?8P$h3Su6bo3hX!{-_{4Rvwfi)W;ya`da8J4E8 z^ekJCpN@&L%Dhq_$NTAR-1TwFT3ZVS5Ud4Nfn^sF-p;_+x4D_kBiHQ&LlX>#Sl_lk z_4^647eGpn?uL$|sD%-P0XKhr!guE;N%WitQ!+B~h{@b@Ff7197w!;Aeu6Gnx&ch# zkO)NEP>=5*42#Z#?Q|a6%!!i%sIWJ&iO$ZCs&;9>UnUT1LzH!*>VZ$hS4(KG#PrNl zsQ9llvL7-uIKX=?G4#Sca(_Pqy9mM6;1dBbF)5n5CR%Y`aP9VWM*m2Y+FhV=eI4bp z$Dh+vMC$^aJ)h-pM>AU@OK7_UCPe^K*N}Dd6KUzV97%u3qbDUUUHOH{oX2e5p*dDd z`?e-}(s9}nhY-bE`1uFukjR3@q{bMY8@ZT{esF;1XFszp9wD{o0A^@AQfxrfG=XoU z7iLh;e?u9om>a!{2pPlRSBsSWjL~hMo=#cbeJab7U|I+%k-iDOhjwk0U5(WZ?O^8e z;8-HV`>%^sZ}sKQeN}LbR*a@&$VH7PEumk`qZa=KS0J|>!&}wPUl#@ovOd_iVha vs[a] ? + (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) : + tp[a], + -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ? + (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) : + (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c) + ]; + } + + var x = pp[a]; + var y = pp[b]; + var positionValue = thisObj.fixed ? 'fixed' : 'absolute'; + var contractShadow = + (pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) && + (pp[1] + ps[1] < tp[1] + ts[1]); + + jsc._drawPosition(thisObj, x, y, positionValue, contractShadow); + } + }, + + + _drawPosition : function (thisObj, x, y, positionValue, contractShadow) { + var vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px + + jsc.picker.wrap.style.position = positionValue; + jsc.picker.wrap.style.left = x + 'px'; + jsc.picker.wrap.style.top = y + 'px'; + + jsc.setBoxShadow( + jsc.picker.boxS, + thisObj.shadow ? + new jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) : + null); + }, + + + getPickerDims : function (thisObj) { + var displaySlider = !!jsc.getSliderComponent(thisObj); + var dims = [ + 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.width + + (displaySlider ? 2 * thisObj.insetWidth + jsc.getPadToSliderPadding(thisObj) + thisObj.sliderSize : 0), + 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.height + + (thisObj.closable ? 2 * thisObj.insetWidth + thisObj.padding + thisObj.buttonHeight : 0) + ]; + return dims; + }, + + + getPickerOuterDims : function (thisObj) { + var dims = jsc.getPickerDims(thisObj); + return [ + dims[0] + 2 * thisObj.borderWidth, + dims[1] + 2 * thisObj.borderWidth + ]; + }, + + + getPadToSliderPadding : function (thisObj) { + return Math.max(thisObj.padding, 1.5 * (2 * thisObj.pointerBorderWidth + thisObj.pointerThickness)); + }, + + + getPadYComponent : function (thisObj) { + switch (thisObj.mode.charAt(1).toLowerCase()) { + case 'v': return 'v'; break; + } + return 's'; + }, + + + getSliderComponent : function (thisObj) { + if (thisObj.mode.length > 2) { + switch (thisObj.mode.charAt(2).toLowerCase()) { + case 's': return 's'; break; + case 'v': return 'v'; break; + } + } + return null; + }, + + + onDocumentMouseDown : function (e) { + if (!e) { e = window.event; } + var target = e.target || e.srcElement; + + if (target._jscLinkedInstance) { + if (target._jscLinkedInstance.showOnClick) { + target._jscLinkedInstance.show(); + } + } else if (target._jscControlName) { + jsc.onControlPointerStart(e, target, target._jscControlName, 'mouse'); + } else { + // Mouse is outside the picker controls -> hide the color picker! + if (jsc.picker && jsc.picker.owner) { + jsc.picker.owner.hide(); + } + } + }, + + + onDocumentTouchStart : function (e) { + if (!e) { e = window.event; } + var target = e.target || e.srcElement; + + if (target._jscLinkedInstance) { + if (target._jscLinkedInstance.showOnClick) { + target._jscLinkedInstance.show(); + } + } else if (target._jscControlName) { + jsc.onControlPointerStart(e, target, target._jscControlName, 'touch'); + } else { + if (jsc.picker && jsc.picker.owner) { + jsc.picker.owner.hide(); + } + } + }, + + + onWindowResize : function (e) { + jsc.redrawPosition(); + }, + + + onParentScroll : function (e) { + // hide the picker when one of the parent elements is scrolled + if (jsc.picker && jsc.picker.owner) { + jsc.picker.owner.hide(); + } + }, + + + _pointerMoveEvent : { + mouse: 'mousemove', + touch: 'touchmove' + }, + _pointerEndEvent : { + mouse: 'mouseup', + touch: 'touchend' + }, + + + _pointerOrigin : null, + _capturedTarget : null, + + + onControlPointerStart : function (e, target, controlName, pointerType) { + var thisObj = target._jscInstance; + + jsc.preventDefault(e); + jsc.captureTarget(target); + + var registerDragEvents = function (doc, offset) { + jsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType], + jsc.onDocumentPointerMove(e, target, controlName, pointerType, offset)); + jsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType], + jsc.onDocumentPointerEnd(e, target, controlName, pointerType)); + }; + + registerDragEvents(document, [0, 0]); + + if (window.parent && window.frameElement) { + var rect = window.frameElement.getBoundingClientRect(); + var ofs = [-rect.left, -rect.top]; + registerDragEvents(window.parent.window.document, ofs); + } + + var abs = jsc.getAbsPointerPos(e); + var rel = jsc.getRelPointerPos(e); + jsc._pointerOrigin = { + x: abs.x - rel.x, + y: abs.y - rel.y + }; + + switch (controlName) { + case 'pad': + // if the slider is at the bottom, move it up + switch (jsc.getSliderComponent(thisObj)) { + case 's': if (thisObj.hsv[1] === 0) { thisObj.fromHSV(null, 100, null); }; break; + case 'v': if (thisObj.hsv[2] === 0) { thisObj.fromHSV(null, null, 100); }; break; + } + jsc.setPad(thisObj, e, 0, 0); + break; + + case 'sld': + jsc.setSld(thisObj, e, 0); + break; + } + + jsc.dispatchFineChange(thisObj); + }, + + + onDocumentPointerMove : function (e, target, controlName, pointerType, offset) { + return function (e) { + var thisObj = target._jscInstance; + switch (controlName) { + case 'pad': + if (!e) { e = window.event; } + jsc.setPad(thisObj, e, offset[0], offset[1]); + jsc.dispatchFineChange(thisObj); + break; + + case 'sld': + if (!e) { e = window.event; } + jsc.setSld(thisObj, e, offset[1]); + jsc.dispatchFineChange(thisObj); + break; + } + } + }, + + + onDocumentPointerEnd : function (e, target, controlName, pointerType) { + return function (e) { + var thisObj = target._jscInstance; + jsc.detachGroupEvents('drag'); + jsc.releaseTarget(); + // Always dispatch changes after detaching outstanding mouse handlers, + // in case some user interaction will occur in user's onchange callback + // that would intrude with current mouse events + jsc.dispatchChange(thisObj); + }; + }, + + + dispatchChange : function (thisObj) { + if (thisObj.valueElement) { + if (jsc.isElementType(thisObj.valueElement, 'input')) { + jsc.fireEvent(thisObj.valueElement, 'change'); + } + } + }, + + + dispatchFineChange : function (thisObj) { + if (thisObj.onFineChange) { + var callback; + if (typeof thisObj.onFineChange === 'string') { + callback = new Function (thisObj.onFineChange); + } else { + callback = thisObj.onFineChange; + } + callback.call(thisObj); + } + }, + + + setPad : function (thisObj, e, ofsX, ofsY) { + var pointerAbs = jsc.getAbsPointerPos(e); + var x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.insetWidth; + var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth; + + var xVal = x * (360 / (thisObj.width - 1)); + var yVal = 100 - (y * (100 / (thisObj.height - 1))); + + switch (jsc.getPadYComponent(thisObj)) { + case 's': thisObj.fromHSV(xVal, yVal, null, jsc.leaveSld); break; + case 'v': thisObj.fromHSV(xVal, null, yVal, jsc.leaveSld); break; + } + }, + + + setSld : function (thisObj, e, ofsY) { + var pointerAbs = jsc.getAbsPointerPos(e); + var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth; + + var yVal = 100 - (y * (100 / (thisObj.height - 1))); + + switch (jsc.getSliderComponent(thisObj)) { + case 's': thisObj.fromHSV(null, yVal, null, jsc.leavePad); break; + case 'v': thisObj.fromHSV(null, null, yVal, jsc.leavePad); break; + } + }, + + + _vmlNS : 'jsc_vml_', + _vmlCSS : 'jsc_vml_css_', + _vmlReady : false, + + + initVML : function () { + if (!jsc._vmlReady) { + // init VML namespace + var doc = document; + if (!doc.namespaces[jsc._vmlNS]) { + doc.namespaces.add(jsc._vmlNS, 'urn:schemas-microsoft-com:vml'); + } + if (!doc.styleSheets[jsc._vmlCSS]) { + var tags = ['shape', 'shapetype', 'group', 'background', 'path', 'formulas', 'handles', 'fill', 'stroke', 'shadow', 'textbox', 'textpath', 'imagedata', 'line', 'polyline', 'curve', 'rect', 'roundrect', 'oval', 'arc', 'image']; + var ss = doc.createStyleSheet(); + ss.owningElement.id = jsc._vmlCSS; + for (var i = 0; i < tags.length; i += 1) { + ss.addRule(jsc._vmlNS + '\\:' + tags[i], 'behavior:url(#default#VML);'); + } + } + jsc._vmlReady = true; + } + }, + + + createPalette : function () { + + var paletteObj = { + elm: null, + draw: null + }; + + if (jsc.isCanvasSupported) { + // Canvas implementation for modern browsers + + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + + var drawFunc = function (width, height, type) { + canvas.width = width; + canvas.height = height; + + ctx.clearRect(0, 0, canvas.width, canvas.height); + + var hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0); + hGrad.addColorStop(0 / 6, '#F00'); + hGrad.addColorStop(1 / 6, '#FF0'); + hGrad.addColorStop(2 / 6, '#0F0'); + hGrad.addColorStop(3 / 6, '#0FF'); + hGrad.addColorStop(4 / 6, '#00F'); + hGrad.addColorStop(5 / 6, '#F0F'); + hGrad.addColorStop(6 / 6, '#F00'); + + ctx.fillStyle = hGrad; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + var vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height); + switch (type.toLowerCase()) { + case 's': + vGrad.addColorStop(0, 'rgba(255,255,255,0)'); + vGrad.addColorStop(1, 'rgba(255,255,255,1)'); + break; + case 'v': + vGrad.addColorStop(0, 'rgba(0,0,0,0)'); + vGrad.addColorStop(1, 'rgba(0,0,0,1)'); + break; + } + ctx.fillStyle = vGrad; + ctx.fillRect(0, 0, canvas.width, canvas.height); + }; + + paletteObj.elm = canvas; + paletteObj.draw = drawFunc; + + } else { + // VML fallback for IE 7 and 8 + + jsc.initVML(); + + var vmlContainer = document.createElement('div'); + vmlContainer.style.position = 'relative'; + vmlContainer.style.overflow = 'hidden'; + + var hGrad = document.createElement(jsc._vmlNS + ':fill'); + hGrad.type = 'gradient'; + hGrad.method = 'linear'; + hGrad.angle = '90'; + hGrad.colors = '16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0' + + var hRect = document.createElement(jsc._vmlNS + ':rect'); + hRect.style.position = 'absolute'; + hRect.style.left = -1 + 'px'; + hRect.style.top = -1 + 'px'; + hRect.stroked = false; + hRect.appendChild(hGrad); + vmlContainer.appendChild(hRect); + + var vGrad = document.createElement(jsc._vmlNS + ':fill'); + vGrad.type = 'gradient'; + vGrad.method = 'linear'; + vGrad.angle = '180'; + vGrad.opacity = '0'; + + var vRect = document.createElement(jsc._vmlNS + ':rect'); + vRect.style.position = 'absolute'; + vRect.style.left = -1 + 'px'; + vRect.style.top = -1 + 'px'; + vRect.stroked = false; + vRect.appendChild(vGrad); + vmlContainer.appendChild(vRect); + + var drawFunc = function (width, height, type) { + vmlContainer.style.width = width + 'px'; + vmlContainer.style.height = height + 'px'; + + hRect.style.width = + vRect.style.width = + (width + 1) + 'px'; + hRect.style.height = + vRect.style.height = + (height + 1) + 'px'; + + // Colors must be specified during every redraw, otherwise IE won't display + // a full gradient during a subsequential redraw + hGrad.color = '#F00'; + hGrad.color2 = '#F00'; + + switch (type.toLowerCase()) { + case 's': + vGrad.color = vGrad.color2 = '#FFF'; + break; + case 'v': + vGrad.color = vGrad.color2 = '#000'; + break; + } + }; + + paletteObj.elm = vmlContainer; + paletteObj.draw = drawFunc; + } + + return paletteObj; + }, + + + createSliderGradient : function () { + + var sliderObj = { + elm: null, + draw: null + }; + + if (jsc.isCanvasSupported) { + // Canvas implementation for modern browsers + + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + + var drawFunc = function (width, height, color1, color2) { + canvas.width = width; + canvas.height = height; + + ctx.clearRect(0, 0, canvas.width, canvas.height); + + var grad = ctx.createLinearGradient(0, 0, 0, canvas.height); + grad.addColorStop(0, color1); + grad.addColorStop(1, color2); + + ctx.fillStyle = grad; + ctx.fillRect(0, 0, canvas.width, canvas.height); + }; + + sliderObj.elm = canvas; + sliderObj.draw = drawFunc; + + } else { + // VML fallback for IE 7 and 8 + + jsc.initVML(); + + var vmlContainer = document.createElement('div'); + vmlContainer.style.position = 'relative'; + vmlContainer.style.overflow = 'hidden'; + + var grad = document.createElement(jsc._vmlNS + ':fill'); + grad.type = 'gradient'; + grad.method = 'linear'; + grad.angle = '180'; + + var rect = document.createElement(jsc._vmlNS + ':rect'); + rect.style.position = 'absolute'; + rect.style.left = -1 + 'px'; + rect.style.top = -1 + 'px'; + rect.stroked = false; + rect.appendChild(grad); + vmlContainer.appendChild(rect); + + var drawFunc = function (width, height, color1, color2) { + vmlContainer.style.width = width + 'px'; + vmlContainer.style.height = height + 'px'; + + rect.style.width = (width + 1) + 'px'; + rect.style.height = (height + 1) + 'px'; + + grad.color = color1; + grad.color2 = color2; + }; + + sliderObj.elm = vmlContainer; + sliderObj.draw = drawFunc; + } + + return sliderObj; + }, + + + leaveValue : 1<<0, + leaveStyle : 1<<1, + leavePad : 1<<2, + leaveSld : 1<<3, + + + BoxShadow : (function () { + var BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) { + this.hShadow = hShadow; + this.vShadow = vShadow; + this.blur = blur; + this.spread = spread; + this.color = color; + this.inset = !!inset; + }; + + BoxShadow.prototype.toString = function () { + var vals = [ + Math.round(this.hShadow) + 'px', + Math.round(this.vShadow) + 'px', + Math.round(this.blur) + 'px', + Math.round(this.spread) + 'px', + this.color + ]; + if (this.inset) { + vals.push('inset'); + } + return vals.join(' '); + }; + + return BoxShadow; + })(), + + + // + // Usage: + // var myColor = new jscolor( [, ]) + // + + jscolor : function (targetElement, options) { + + // General options + // + this.value = null; // initial HEX color. To change it later, use methods fromString(), fromHSV() and fromRGB() + this.valueElement = targetElement; // element that will be used to display and input the color code + this.styleElement = targetElement; // element that will preview the picked color using CSS backgroundColor + this.required = true; // whether the associated text can be left empty + this.refine = true; // whether to refine the entered color code (e.g. uppercase it and remove whitespace) + this.hash = false; // whether to prefix the HEX color code with # symbol + this.uppercase = true; // whether to show the color code in upper case + this.onFineChange = null; // called instantly every time the color changes (value can be either a function or a string with javascript code) + this.activeClass = 'jscolor-active'; // class to be set to the target element when a picker window is open on it + this.overwriteImportant = false; // whether to overwrite colors of styleElement using !important + this.minS = 0; // min allowed saturation (0 - 100) + this.maxS = 100; // max allowed saturation (0 - 100) + this.minV = 0; // min allowed value (brightness) (0 - 100) + this.maxV = 100; // max allowed value (brightness) (0 - 100) + + // Accessing the picked color + // + this.hsv = [0, 0, 100]; // read-only [0-360, 0-100, 0-100] + this.rgb = [255, 255, 255]; // read-only [0-255, 0-255, 0-255] + + // Color Picker options + // + this.width = 181; // width of color palette (in px) + this.height = 101; // height of color palette (in px) + this.showOnClick = true; // whether to display the color picker when user clicks on its target element + this.mode = 'HSV'; // HSV | HVS | HS | HV - layout of the color picker controls + this.position = 'bottom'; // left | right | top | bottom - position relative to the target element + this.smartPosition = true; // automatically change picker position when there is not enough space for it + this.sliderSize = 16; // px + this.crossSize = 8; // px + this.closable = false; // whether to display the Close button + this.closeText = 'Close'; + this.buttonColor = '#000000'; // CSS color + this.buttonHeight = 18; // px + this.padding = 12; // px + this.backgroundColor = '#FFFFFF'; // CSS color + this.borderWidth = 1; // px + this.borderColor = '#BBBBBB'; // CSS color + this.borderRadius = 8; // px + this.insetWidth = 1; // px + this.insetColor = '#BBBBBB'; // CSS color + this.shadow = true; // whether to display shadow + this.shadowBlur = 15; // px + this.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color + this.pointerColor = '#4C4C4C'; // px + this.pointerBorderColor = '#FFFFFF'; // px + this.pointerBorderWidth = 1; // px + this.pointerThickness = 2; // px + this.zIndex = 1000; + this.container = null; // where to append the color picker (BODY element by default) + + + for (var opt in options) { + if (options.hasOwnProperty(opt)) { + this[opt] = options[opt]; + } + } + + + this.hide = function () { + if (isPickerOwner()) { + detachPicker(); + } + }; + + + this.show = function () { + drawPicker(); + }; + + + this.redraw = function () { + if (isPickerOwner()) { + drawPicker(); + } + }; + + + this.importColor = function () { + if (!this.valueElement) { + this.exportColor(); + } else { + if (jsc.isElementType(this.valueElement, 'input')) { + if (!this.refine) { + if (!this.fromString(this.valueElement.value, jsc.leaveValue)) { + if (this.styleElement) { + this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage; + this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor; + this.styleElement.style.color = this.styleElement._jscOrigStyle.color; + } + this.exportColor(jsc.leaveValue | jsc.leaveStyle); + } + } else if (!this.required && /^\s*$/.test(this.valueElement.value)) { + this.valueElement.value = ''; + if (this.styleElement) { + this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage; + this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor; + this.styleElement.style.color = this.styleElement._jscOrigStyle.color; + } + this.exportColor(jsc.leaveValue | jsc.leaveStyle); + + } else if (this.fromString(this.valueElement.value)) { + // managed to import color successfully from the value -> OK, don't do anything + } else { + this.exportColor(); + } + } else { + // not an input element -> doesn't have any value + this.exportColor(); + } + } + }; + + + this.exportColor = function (flags) { + if (!(flags & jsc.leaveValue) && this.valueElement) { + var value = this.toString(); + if (this.uppercase) { value = value.toUpperCase(); } + if (this.hash) { value = '#' + value; } + + if (jsc.isElementType(this.valueElement, 'input')) { + this.valueElement.value = value; + } else { + this.valueElement.innerHTML = value; + } + } + if (!(flags & jsc.leaveStyle)) { + if (this.styleElement) { + var bgColor = '#' + this.toString(); + var fgColor = this.isLight() ? '#000' : '#FFF'; + + this.styleElement.style.backgroundImage = 'none'; + this.styleElement.style.backgroundColor = bgColor; + this.styleElement.style.color = fgColor; + + if (this.overwriteImportant) { + this.styleElement.setAttribute('style', + 'background: ' + bgColor + ' !important; ' + + 'color: ' + fgColor + ' !important;' + ); + } + } + } + if (!(flags & jsc.leavePad) && isPickerOwner()) { + redrawPad(); + } + if (!(flags & jsc.leaveSld) && isPickerOwner()) { + redrawSld(); + } + }; + + + // h: 0-360 + // s: 0-100 + // v: 0-100 + // + this.fromHSV = function (h, s, v, flags) { // null = don't change + if (h !== null) { + if (isNaN(h)) { return false; } + h = Math.max(0, Math.min(360, h)); + } + if (s !== null) { + if (isNaN(s)) { return false; } + s = Math.max(0, Math.min(100, this.maxS, s), this.minS); + } + if (v !== null) { + if (isNaN(v)) { return false; } + v = Math.max(0, Math.min(100, this.maxV, v), this.minV); + } + + this.rgb = HSV_RGB( + h===null ? this.hsv[0] : (this.hsv[0]=h), + s===null ? this.hsv[1] : (this.hsv[1]=s), + v===null ? this.hsv[2] : (this.hsv[2]=v) + ); + + this.exportColor(flags); + }; + + + // r: 0-255 + // g: 0-255 + // b: 0-255 + // + this.fromRGB = function (r, g, b, flags) { // null = don't change + if (r !== null) { + if (isNaN(r)) { return false; } + r = Math.max(0, Math.min(255, r)); + } + if (g !== null) { + if (isNaN(g)) { return false; } + g = Math.max(0, Math.min(255, g)); + } + if (b !== null) { + if (isNaN(b)) { return false; } + b = Math.max(0, Math.min(255, b)); + } + + var hsv = RGB_HSV( + r===null ? this.rgb[0] : r, + g===null ? this.rgb[1] : g, + b===null ? this.rgb[2] : b + ); + if (hsv[0] !== null) { + this.hsv[0] = Math.max(0, Math.min(360, hsv[0])); + } + if (hsv[2] !== 0) { + this.hsv[1] = hsv[1]===null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1])); + } + this.hsv[2] = hsv[2]===null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2])); + + // update RGB according to final HSV, as some values might be trimmed + var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]); + this.rgb[0] = rgb[0]; + this.rgb[1] = rgb[1]; + this.rgb[2] = rgb[2]; + + this.exportColor(flags); + }; + + + this.fromString = function (str, flags) { + var m; + if (m = str.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) { + // HEX notation + // + + if (m[1].length === 6) { + // 6-char notation + this.fromRGB( + parseInt(m[1].substr(0,2),16), + parseInt(m[1].substr(2,2),16), + parseInt(m[1].substr(4,2),16), + flags + ); + } else { + // 3-char notation + this.fromRGB( + parseInt(m[1].charAt(0) + m[1].charAt(0),16), + parseInt(m[1].charAt(1) + m[1].charAt(1),16), + parseInt(m[1].charAt(2) + m[1].charAt(2),16), + flags + ); + } + return true; + + } else if (m = str.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) { + var params = m[1].split(','); + var re = /^\s*(\d*)(\.\d+)?\s*$/; + var mR, mG, mB; + if ( + params.length >= 3 && + (mR = params[0].match(re)) && + (mG = params[1].match(re)) && + (mB = params[2].match(re)) + ) { + var r = parseFloat((mR[1] || '0') + (mR[2] || '')); + var g = parseFloat((mG[1] || '0') + (mG[2] || '')); + var b = parseFloat((mB[1] || '0') + (mB[2] || '')); + this.fromRGB(r, g, b, flags); + return true; + } + } + return false; + }; + + + this.toString = function () { + return ( + (0x100 | Math.round(this.rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(this.rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(this.rgb[2])).toString(16).substr(1) + ); + }; + + + this.toHEXString = function () { + return '#' + this.toString().toUpperCase(); + }; + + + this.toRGBString = function () { + return ('rgb(' + + Math.round(this.rgb[0]) + ',' + + Math.round(this.rgb[1]) + ',' + + Math.round(this.rgb[2]) + ')' + ); + }; + + + this.isLight = function () { + return ( + 0.213 * this.rgb[0] + + 0.715 * this.rgb[1] + + 0.072 * this.rgb[2] > + 255 / 2 + ); + }; + + + this._processParentElementsInDOM = function () { + if (this._linkedElementsProcessed) { return; } + this._linkedElementsProcessed = true; + + var elm = this.targetElement; + do { + // If the target element or one of its parent nodes has fixed position, + // then use fixed positioning instead + // + // Note: In Firefox, getComputedStyle returns null in a hidden iframe, + // that's why we need to check if the returned style object is non-empty + var currStyle = jsc.getStyle(elm); + if (currStyle && currStyle.position.toLowerCase() === 'fixed') { + this.fixed = true; + } + + if (elm !== this.targetElement) { + // Ensure to attach onParentScroll only once to each parent element + // (multiple targetElements can share the same parent nodes) + // + // Note: It's not just offsetParents that can be scrollable, + // that's why we loop through all parent nodes + if (!elm._jscEventsAttached) { + jsc.attachEvent(elm, 'scroll', jsc.onParentScroll); + elm._jscEventsAttached = true; + } + } + } while ((elm = elm.parentNode) && !jsc.isElementType(elm, 'body')); + }; + + + // r: 0-255 + // g: 0-255 + // b: 0-255 + // + // returns: [ 0-360, 0-100, 0-100 ] + // + function RGB_HSV (r, g, b) { + r /= 255; + g /= 255; + b /= 255; + var n = Math.min(Math.min(r,g),b); + var v = Math.max(Math.max(r,g),b); + var m = v - n; + if (m === 0) { return [ null, 0, 100 * v ]; } + var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m); + return [ + 60 * (h===6?0:h), + 100 * (m/v), + 100 * v + ]; + } + + + // h: 0-360 + // s: 0-100 + // v: 0-100 + // + // returns: [ 0-255, 0-255, 0-255 ] + // + function HSV_RGB (h, s, v) { + var u = 255 * (v / 100); + + if (h === null) { + return [ u, u, u ]; + } + + h /= 60; + s /= 100; + + var i = Math.floor(h); + var f = i%2 ? h-i : 1-(h-i); + var m = u * (1 - s); + var n = u * (1 - s * f); + switch (i) { + case 6: + case 0: return [u,n,m]; + case 1: return [n,u,m]; + case 2: return [m,u,n]; + case 3: return [m,n,u]; + case 4: return [n,m,u]; + case 5: return [u,m,n]; + } + } + + + function detachPicker () { + jsc.unsetClass(THIS.targetElement, THIS.activeClass); + jsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap); + delete jsc.picker.owner; + } + + + function drawPicker () { + + // At this point, when drawing the picker, we know what the parent elements are + // and we can do all related DOM operations, such as registering events on them + // or checking their positioning + THIS._processParentElementsInDOM(); + + if (!jsc.picker) { + jsc.picker = { + owner: null, + wrap : document.createElement('div'), + box : document.createElement('div'), + boxS : document.createElement('div'), // shadow area + boxB : document.createElement('div'), // border + pad : document.createElement('div'), + padB : document.createElement('div'), // border + padM : document.createElement('div'), // mouse/touch area + padPal : jsc.createPalette(), + cross : document.createElement('div'), + crossBY : document.createElement('div'), // border Y + crossBX : document.createElement('div'), // border X + crossLY : document.createElement('div'), // line Y + crossLX : document.createElement('div'), // line X + sld : document.createElement('div'), + sldB : document.createElement('div'), // border + sldM : document.createElement('div'), // mouse/touch area + sldGrad : jsc.createSliderGradient(), + sldPtrS : document.createElement('div'), // slider pointer spacer + sldPtrIB : document.createElement('div'), // slider pointer inner border + sldPtrMB : document.createElement('div'), // slider pointer middle border + sldPtrOB : document.createElement('div'), // slider pointer outer border + btn : document.createElement('div'), + btnT : document.createElement('span') // text + }; + + jsc.picker.pad.appendChild(jsc.picker.padPal.elm); + jsc.picker.padB.appendChild(jsc.picker.pad); + jsc.picker.cross.appendChild(jsc.picker.crossBY); + jsc.picker.cross.appendChild(jsc.picker.crossBX); + jsc.picker.cross.appendChild(jsc.picker.crossLY); + jsc.picker.cross.appendChild(jsc.picker.crossLX); + jsc.picker.padB.appendChild(jsc.picker.cross); + jsc.picker.box.appendChild(jsc.picker.padB); + jsc.picker.box.appendChild(jsc.picker.padM); + + jsc.picker.sld.appendChild(jsc.picker.sldGrad.elm); + jsc.picker.sldB.appendChild(jsc.picker.sld); + jsc.picker.sldB.appendChild(jsc.picker.sldPtrOB); + jsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB); + jsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB); + jsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS); + jsc.picker.box.appendChild(jsc.picker.sldB); + jsc.picker.box.appendChild(jsc.picker.sldM); + + jsc.picker.btn.appendChild(jsc.picker.btnT); + jsc.picker.box.appendChild(jsc.picker.btn); + + jsc.picker.boxB.appendChild(jsc.picker.box); + jsc.picker.wrap.appendChild(jsc.picker.boxS); + jsc.picker.wrap.appendChild(jsc.picker.boxB); + } + + var p = jsc.picker; + + var displaySlider = !!jsc.getSliderComponent(THIS); + var dims = jsc.getPickerDims(THIS); + var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize); + var padToSliderPadding = jsc.getPadToSliderPadding(THIS); + var borderRadius = Math.min( + THIS.borderRadius, + Math.round(THIS.padding * Math.PI)); // px + var padCursor = 'crosshair'; + + // wrap + p.wrap.style.clear = 'both'; + p.wrap.style.width = (dims[0] + 2 * THIS.borderWidth) + 'px'; + p.wrap.style.height = (dims[1] + 2 * THIS.borderWidth) + 'px'; + p.wrap.style.zIndex = THIS.zIndex; + + // picker + p.box.style.width = dims[0] + 'px'; + p.box.style.height = dims[1] + 'px'; + + p.boxS.style.position = 'absolute'; + p.boxS.style.left = '0'; + p.boxS.style.top = '0'; + p.boxS.style.width = '100%'; + p.boxS.style.height = '100%'; + jsc.setBorderRadius(p.boxS, borderRadius + 'px'); + + // picker border + p.boxB.style.position = 'relative'; + p.boxB.style.border = THIS.borderWidth + 'px solid'; + p.boxB.style.borderColor = THIS.borderColor; + p.boxB.style.background = THIS.backgroundColor; + jsc.setBorderRadius(p.boxB, borderRadius + 'px'); + + // IE hack: + // If the element is transparent, IE will trigger the event on the elements under it, + // e.g. on Canvas or on elements with border + p.padM.style.background = + p.sldM.style.background = + '#FFF'; + jsc.setStyle(p.padM, 'opacity', '0'); + jsc.setStyle(p.sldM, 'opacity', '0'); + + // pad + p.pad.style.position = 'relative'; + p.pad.style.width = THIS.width + 'px'; + p.pad.style.height = THIS.height + 'px'; + + // pad palettes (HSV and HVS) + p.padPal.draw(THIS.width, THIS.height, jsc.getPadYComponent(THIS)); + + // pad border + p.padB.style.position = 'absolute'; + p.padB.style.left = THIS.padding + 'px'; + p.padB.style.top = THIS.padding + 'px'; + p.padB.style.border = THIS.insetWidth + 'px solid'; + p.padB.style.borderColor = THIS.insetColor; + + // pad mouse area + p.padM._jscInstance = THIS; + p.padM._jscControlName = 'pad'; + p.padM.style.position = 'absolute'; + p.padM.style.left = '0'; + p.padM.style.top = '0'; + p.padM.style.width = (THIS.padding + 2 * THIS.insetWidth + THIS.width + padToSliderPadding / 2) + 'px'; + p.padM.style.height = dims[1] + 'px'; + p.padM.style.cursor = padCursor; + + // pad cross + p.cross.style.position = 'absolute'; + p.cross.style.left = + p.cross.style.top = + '0'; + p.cross.style.width = + p.cross.style.height = + crossOuterSize + 'px'; + + // pad cross border Y and X + p.crossBY.style.position = + p.crossBX.style.position = + 'absolute'; + p.crossBY.style.background = + p.crossBX.style.background = + THIS.pointerBorderColor; + p.crossBY.style.width = + p.crossBX.style.height = + (2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px'; + p.crossBY.style.height = + p.crossBX.style.width = + crossOuterSize + 'px'; + p.crossBY.style.left = + p.crossBX.style.top = + (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px'; + p.crossBY.style.top = + p.crossBX.style.left = + '0'; + + // pad cross line Y and X + p.crossLY.style.position = + p.crossLX.style.position = + 'absolute'; + p.crossLY.style.background = + p.crossLX.style.background = + THIS.pointerColor; + p.crossLY.style.height = + p.crossLX.style.width = + (crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px'; + p.crossLY.style.width = + p.crossLX.style.height = + THIS.pointerThickness + 'px'; + p.crossLY.style.left = + p.crossLX.style.top = + (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px'; + p.crossLY.style.top = + p.crossLX.style.left = + THIS.pointerBorderWidth + 'px'; + + // slider + p.sld.style.overflow = 'hidden'; + p.sld.style.width = THIS.sliderSize + 'px'; + p.sld.style.height = THIS.height + 'px'; + + // slider gradient + p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000'); + + // slider border + p.sldB.style.display = displaySlider ? 'block' : 'none'; + p.sldB.style.position = 'absolute'; + p.sldB.style.right = THIS.padding + 'px'; + p.sldB.style.top = THIS.padding + 'px'; + p.sldB.style.border = THIS.insetWidth + 'px solid'; + p.sldB.style.borderColor = THIS.insetColor; + + // slider mouse area + p.sldM._jscInstance = THIS; + p.sldM._jscControlName = 'sld'; + p.sldM.style.display = displaySlider ? 'block' : 'none'; + p.sldM.style.position = 'absolute'; + p.sldM.style.right = '0'; + p.sldM.style.top = '0'; + p.sldM.style.width = (THIS.sliderSize + padToSliderPadding / 2 + THIS.padding + 2 * THIS.insetWidth) + 'px'; + p.sldM.style.height = dims[1] + 'px'; + p.sldM.style.cursor = 'default'; + + // slider pointer inner and outer border + p.sldPtrIB.style.border = + p.sldPtrOB.style.border = + THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor; + + // slider pointer outer border + p.sldPtrOB.style.position = 'absolute'; + p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px'; + p.sldPtrOB.style.top = '0'; + + // slider pointer middle border + p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor; + + // slider pointer spacer + p.sldPtrS.style.width = THIS.sliderSize + 'px'; + p.sldPtrS.style.height = sliderPtrSpace + 'px'; + + // the Close button + function setBtnBorder () { + var insetColors = THIS.insetColor.split(/\s+/); + var outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1]; + p.btn.style.borderColor = outsetColor; + } + p.btn.style.display = THIS.closable ? 'block' : 'none'; + p.btn.style.position = 'absolute'; + p.btn.style.left = THIS.padding + 'px'; + p.btn.style.bottom = THIS.padding + 'px'; + p.btn.style.padding = '0 15px'; + p.btn.style.height = THIS.buttonHeight + 'px'; + p.btn.style.border = THIS.insetWidth + 'px solid'; + setBtnBorder(); + p.btn.style.color = THIS.buttonColor; + p.btn.style.font = '12px sans-serif'; + p.btn.style.textAlign = 'center'; + try { + p.btn.style.cursor = 'pointer'; + } catch(eOldIE) { + p.btn.style.cursor = 'hand'; + } + p.btn.onmousedown = function () { + THIS.hide(); + }; + p.btnT.style.lineHeight = THIS.buttonHeight + 'px'; + p.btnT.innerHTML = ''; + p.btnT.appendChild(document.createTextNode(THIS.closeText)); + + // place pointers + redrawPad(); + redrawSld(); + + // If we are changing the owner without first closing the picker, + // make sure to first deal with the old owner + if (jsc.picker.owner && jsc.picker.owner !== THIS) { + jsc.unsetClass(jsc.picker.owner.targetElement, THIS.activeClass); + } + + // Set the new picker owner + jsc.picker.owner = THIS; + + // The redrawPosition() method needs picker.owner to be set, that's why we call it here, + // after setting the owner + if (jsc.isElementType(container, 'body')) { + jsc.redrawPosition(); + } else { + jsc._drawPosition(THIS, 0, 0, 'relative', false); + } + + if (p.wrap.parentNode != container) { + container.appendChild(p.wrap); + } + + jsc.setClass(THIS.targetElement, THIS.activeClass); + } + + + function redrawPad () { + // redraw the pad pointer + switch (jsc.getPadYComponent(THIS)) { + case 's': var yComponent = 1; break; + case 'v': var yComponent = 2; break; + } + var x = Math.round((THIS.hsv[0] / 360) * (THIS.width - 1)); + var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1)); + var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize); + var ofs = -Math.floor(crossOuterSize / 2); + jsc.picker.cross.style.left = (x + ofs) + 'px'; + jsc.picker.cross.style.top = (y + ofs) + 'px'; + + // redraw the slider + switch (jsc.getSliderComponent(THIS)) { + case 's': + var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]); + var rgb2 = HSV_RGB(THIS.hsv[0], 0, THIS.hsv[2]); + var color1 = 'rgb(' + + Math.round(rgb1[0]) + ',' + + Math.round(rgb1[1]) + ',' + + Math.round(rgb1[2]) + ')'; + var color2 = 'rgb(' + + Math.round(rgb2[0]) + ',' + + Math.round(rgb2[1]) + ',' + + Math.round(rgb2[2]) + ')'; + jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2); + break; + case 'v': + var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 100); + var color1 = 'rgb(' + + Math.round(rgb[0]) + ',' + + Math.round(rgb[1]) + ',' + + Math.round(rgb[2]) + ')'; + var color2 = '#000'; + jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2); + break; + } + } + + + function redrawSld () { + var sldComponent = jsc.getSliderComponent(THIS); + if (sldComponent) { + // redraw the slider pointer + switch (sldComponent) { + case 's': var yComponent = 1; break; + case 'v': var yComponent = 2; break; + } + var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1)); + jsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(sliderPtrSpace / 2)) + 'px'; + } + } + + + function isPickerOwner () { + return jsc.picker && jsc.picker.owner === THIS; + } + + + function blurValue () { + THIS.importColor(); + } + + + // Find the target element + if (typeof targetElement === 'string') { + var id = targetElement; + var elm = document.getElementById(id); + if (elm) { + this.targetElement = elm; + } else { + jsc.warn('Could not find target element with ID \'' + id + '\''); + } + } else if (targetElement) { + this.targetElement = targetElement; + } else { + jsc.warn('Invalid target element: \'' + targetElement + '\''); + } + + if (this.targetElement._jscLinkedInstance) { + jsc.warn('Cannot link jscolor twice to the same element. Skipping.'); + return; + } + this.targetElement._jscLinkedInstance = this; + + // Find the value element + this.valueElement = jsc.fetchElement(this.valueElement); + // Find the style element + this.styleElement = jsc.fetchElement(this.styleElement); + + var THIS = this; + var container = + this.container ? + jsc.fetchElement(this.container) : + document.getElementsByTagName('body')[0]; + var sliderPtrSpace = 3; // px + + // For BUTTON elements it's important to stop them from sending the form when clicked + // (e.g. in Safari) + if (jsc.isElementType(this.targetElement, 'button')) { + if (this.targetElement.onclick) { + var origCallback = this.targetElement.onclick; + this.targetElement.onclick = function (evt) { + origCallback.call(this, evt); + return false; + }; + } else { + this.targetElement.onclick = function () { return false; }; + } + } + + /* + var elm = this.targetElement; + do { + // If the target element or one of its offsetParents has fixed position, + // then use fixed positioning instead + // + // Note: In Firefox, getComputedStyle returns null in a hidden iframe, + // that's why we need to check if the returned style object is non-empty + var currStyle = jsc.getStyle(elm); + if (currStyle && currStyle.position.toLowerCase() === 'fixed') { + this.fixed = true; + } + + if (elm !== this.targetElement) { + // attach onParentScroll so that we can recompute the picker position + // when one of the offsetParents is scrolled + if (!elm._jscEventsAttached) { + jsc.attachEvent(elm, 'scroll', jsc.onParentScroll); + elm._jscEventsAttached = true; + } + } + } while ((elm = elm.offsetParent) && !jsc.isElementType(elm, 'body')); + */ + + // valueElement + if (this.valueElement) { + if (jsc.isElementType(this.valueElement, 'input')) { + var updateField = function () { + THIS.fromString(THIS.valueElement.value, jsc.leaveValue); + jsc.dispatchFineChange(THIS); + }; + jsc.attachEvent(this.valueElement, 'keyup', updateField); + jsc.attachEvent(this.valueElement, 'input', updateField); + jsc.attachEvent(this.valueElement, 'blur', blurValue); + this.valueElement.setAttribute('autocomplete', 'off'); + } + } + + // styleElement + if (this.styleElement) { + this.styleElement._jscOrigStyle = { + backgroundImage : this.styleElement.style.backgroundImage, + backgroundColor : this.styleElement.style.backgroundColor, + color : this.styleElement.style.color + }; + } + + if (this.value) { + // Try to set the color from the .value option and if unsuccessful, + // export the current color + this.fromString(this.value) || this.exportColor(); + } else { + this.importColor(); + } + } + +}; + + +//================================ +// Public properties and methods +//================================ + + +// By default, search for all elements with class="jscolor" and install a color picker on them. +// +// You can change what class name will be looked for by setting the property jscolor.lookupClass +// anywhere in your HTML document. To completely disable the automatic lookup, set it to null. +// +jsc.jscolor.lookupClass = 'jscolor'; + + +jsc.jscolor.installByClassName = function (className) { + var inputElms = document.getElementsByTagName('input'); + var buttonElms = document.getElementsByTagName('button'); + + jsc.tryInstallOnElements(inputElms, className); + jsc.tryInstallOnElements(buttonElms, className); +}; + + +jsc.register(); + + +return jsc.jscolor; + + +})(); } From 9066682d322a073921db816a29f1ddf5f5bbba33 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 00:37:00 +0000 Subject: [PATCH 174/396] Prevent dragging --- scripts/communityModules/chat/FloofChat.html | 21 +++++++++++++++++--- scripts/communityModules/chat/FloofChat.js | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index b9b5540a9e..57fa1cbcdf 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -1,6 +1,6 @@ - + Title @@ -15,6 +15,14 @@
    -
    • Local
    • @@ -183,7 +199,6 @@
      -
    diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index f1942a0097..0dc4e6e29d 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -457,4 +457,4 @@ function shutdown() { } chatBar.close(); chatHistory.close(); -} +} \ No newline at end of file From a6dc494d7ca5bc7af2b58b8226f45e1e254fcf75 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Jan 2020 19:40:42 -0500 Subject: [PATCH 175/396] housekeeping --- libraries/script-engine/src/ScriptEngine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index aa96e738f3..d1daa9923d 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2386,7 +2386,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co QString domainSafeIP = nodeList->getDomainHandler().getHostname(); QString domainSafeURL = "hifi://" + currentDomain; for (const auto& str : safeURLS) { - if(domainSafeURL.startsWith(str) || domainSafeIP.startsWith(str)) { + if (domainSafeURL.startsWith(str) || domainSafeIP.startsWith(str)) { qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed. Current Domain Host: " << nodeList->getDomainHandler().getHostname() << "Current Domain: " << currentDomain; @@ -2396,9 +2396,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co // END CURRENT DOMAIN WHITELIST BYPASS // START CHECKING AGAINST THE WHITELIST - if (ScriptEngine::getContext() == "entity_server" || passList == true) { // If running on the server or waved through, do not engage whitelist. + if (ScriptEngine::getContext() == "entity_server") { // If running on the server, do not engage whitelist. passList = true; - } else { + } else if (!passList) { // If waved through, do not engage whitelist. for (const auto& str : safeURLS) { qCDebug(scriptengine) << whitelistPrefix << "Script URL: " << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN" << scriptOrURL.startsWith(str); From 3d8283bd8e62b9d0fa99c5c54d176197aaf41c5b Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 00:54:48 +0000 Subject: [PATCH 176/396] added to DefaultScripts --- scripts/communityModules/chat/FloofChat.html | 15 ++++++++------- scripts/defaultScripts.js | 4 +++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index 57fa1cbcdf..6ca92994a1 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -85,9 +85,7 @@ } .ChatLog { - height: calc(100vh - 128px); - /*height: calc(100vh - 103px); - width: calc(100vw - 40px);*/ + height: calc(100vh - 137px); padding: 20px !important; font-size: 20px; color: white; @@ -126,10 +124,13 @@ .ChatInputText { padding: 5px !important; height: 50px !important; - width: 100vw; + width: calc(100vw - 20px) !important; font-size: 20px !important; background-color: white !important; - border: white !important; + border-style: solid !important; + border-color: #232323 !important; + border-width: 5px 5px 5px 5px !important; + } .responsive { @@ -175,7 +176,7 @@
    -
    +
    diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 7f78d2477f..795458f05d 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -37,7 +37,9 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/keyboardShortcuts/keyboardShortcuts.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ - "system/controllers/controllerScripts.js" + "system/controllers/controllerScripts.js", + "communityModules/notificationCore/notificationCore.js", + "communityModules/chat/FloofChat.js" //"system/chat.js" ]; From d27d9645bd096d6d7e0ddd68ded2a09ddbe0f1c0 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 01:03:09 +0000 Subject: [PATCH 177/396] Removed some debug --- scripts/communityModules/notificationCore/notificationCore.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/communityModules/notificationCore/notificationCore.js b/scripts/communityModules/notificationCore/notificationCore.js index b3edfa52df..ba820a2634 100644 --- a/scripts/communityModules/notificationCore/notificationCore.js +++ b/scripts/communityModules/notificationCore/notificationCore.js @@ -147,7 +147,6 @@ function notif(text, colour) { }; noti.end = function () { - console.log("removed overlay"); Script.clearInterval(noti.timer); Script.clearTimeout(noti.timeout); Overlays.deleteOverlay(noti.id); From 672ac8066bf7bc9d74df5c2b96a5ae4cafcced85 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 04:38:33 +0000 Subject: [PATCH 178/396] Made changes --- libraries/script-engine/src/WebSocketClass.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/script-engine/src/WebSocketClass.cpp b/libraries/script-engine/src/WebSocketClass.cpp index f8fd49777f..9a2a51e0b7 100644 --- a/libraries/script-engine/src/WebSocketClass.cpp +++ b/libraries/script-engine/src/WebSocketClass.cpp @@ -16,6 +16,8 @@ #include "ScriptEngine.h" +#include "ScriptEngineLogging.h" + WebSocketClass::WebSocketClass(QScriptEngine* engine, QString url) : _webSocket(new QWebSocket()), _engine(engine) @@ -109,10 +111,10 @@ void WebSocketClass::handleOnBinaryMessage(const QByteArray& message) { QScriptValue arg = _engine->newObject(); QScriptValue data = _engine->newVariant(QVariant::fromValue(message)); QScriptValue ctor = _engine->globalObject().property("ArrayBuffer"); - ArrayBufferClass* array = qscriptvalue_cast(ctor.data()); + auto array = qscriptvalue_cast(ctor.data()); QScriptValue arrayBuffer; if (!array) { - qWarning() << "WebSocketClass::handleOnBinaryMessage !ArrayBuffer"; + qCWarning(scriptengine) << "WebSocketClass::handleOnBinaryMessage !ArrayBuffer"; } else { arrayBuffer = _engine->newObject(array, data); } From cb9563ab094f3a5f22f37afb462644dfb8068c68 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 8 Jan 2020 04:42:00 +0000 Subject: [PATCH 179/396] Fixed chat history bug --- scripts/communityModules/chat/FloofChat.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 0dc4e6e29d..1bff83bd0d 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -361,8 +361,8 @@ function time() { function addToLog(msg, dp, colour, tab) { historyLog.push([time(), msg, dp, colour, tab]); chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: [[time(), msg, dp, colour, tab]]})); - if (historyLog.length > 500) { - historyLog.pop(); + while(historyLog.length > 500) { + historyLog.shift(); } Settings.setValue(settingsRoot + "/HistoryLog", JSON.stringify(historyLog)) } From 2a8b92e6833482e053f88ba041622538dd11abfe Mon Sep 17 00:00:00 2001 From: NexPro Date: Wed, 8 Jan 2020 16:21:25 +0000 Subject: [PATCH 180/396] Updated interface login page --- interface/resources/qml/LoginDialog.qml | 3 ++- interface/resources/qml/LoginDialog/LinkAccountBody.qml | 4 ++-- interface/resources/qml/LoginDialog/SignUpBody.qml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml index e3cd492edb..fbc8f9495a 100644 --- a/interface/resources/qml/LoginDialog.qml +++ b/interface/resources/qml/LoginDialog.qml @@ -4,6 +4,7 @@ // Created by David Rowe on 3 Jun 2015 // Copyright 2015 High Fidelity, Inc. // Distributed under the Apache License, Version 2.0. +// // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // @@ -84,7 +85,7 @@ FocusScope { Image { id: banner anchors.centerIn: parent - source: "../images/high-fidelity-banner.svg" + source: "../images/project-athena-banner-color2.svg" horizontalAlignment: Image.AlignHCenter } } diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 04ffe72a57..6de8676fd0 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -356,7 +356,7 @@ Item { font.pixelSize: linkAccountBody.textFieldFontSize font.bold: linkAccountBody.fontBold - text: " Can't access your account?" + text: " Can't access your account?" verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter @@ -480,7 +480,7 @@ Item { leftMargin: hifi.dimensions.contentSpacing.x } - text: "Sign Up" + text: "Sign Up" linkColor: hifi.colors.blueAccent onLinkActivated: { diff --git a/interface/resources/qml/LoginDialog/SignUpBody.qml b/interface/resources/qml/LoginDialog/SignUpBody.qml index f1e0cfe685..095263be3f 100644 --- a/interface/resources/qml/LoginDialog/SignUpBody.qml +++ b/interface/resources/qml/LoginDialog/SignUpBody.qml @@ -395,7 +395,7 @@ Item { text: signUpBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By signing up, you agree to High Fidelity's Terms of Service") + termsText.text = qsTr("By signing up, you agree to High Fidelity's Terms of Service") } } From 3944d6e47cb5fa54940a4a89e088a256c1977939 Mon Sep 17 00:00:00 2001 From: NexPro Date: Wed, 8 Jan 2020 16:24:49 +0000 Subject: [PATCH 181/396] added banner svg --- .../images/project-athena-banner-color2.svg | 157 ++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 interface/resources/images/project-athena-banner-color2.svg diff --git a/interface/resources/images/project-athena-banner-color2.svg b/interface/resources/images/project-athena-banner-color2.svg new file mode 100644 index 0000000000..b41a980fe0 --- /dev/null +++ b/interface/resources/images/project-athena-banner-color2.svg @@ -0,0 +1,157 @@ + + + + + + image/svg+xml + + Artboard 1 + + + + + + + + + + + + + + + + + + + Artboard 1 + + + + + + + + + + + + + + + + + + + + + From 769d2050c730470be1834ea8edad871b6750014b Mon Sep 17 00:00:00 2001 From: NexPro Date: Wed, 8 Jan 2020 17:41:58 +0000 Subject: [PATCH 182/396] Additional re-branding of QML dialogs --- interface/resources/qml/LoginDialog/SignUpBody.qml | 2 +- interface/resources/qml/LoginDialog/UsernameCollisionBody.qml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/LoginDialog/SignUpBody.qml b/interface/resources/qml/LoginDialog/SignUpBody.qml index 095263be3f..4317c71db9 100644 --- a/interface/resources/qml/LoginDialog/SignUpBody.qml +++ b/interface/resources/qml/LoginDialog/SignUpBody.qml @@ -395,7 +395,7 @@ Item { text: signUpBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By signing up, you agree to High Fidelity's Terms of Service") + termsText.text = qsTr("By signing up, you agree to Project Athena's Terms of Service") } } diff --git a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml index d2fd1dfe35..8b3c878d46 100644 --- a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml +++ b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml @@ -19,7 +19,7 @@ import TabletScriptingInterface 1.0 Item { id: usernameCollisionBody clip: true - readonly property string termsContainerText: qsTr("By creating this user profile, you agree to High Fidelity's Terms of Service") + readonly property string termsContainerText: qsTr("By creating this user profile, you agree to Project Athena's Terms of Service") width: root.width height: root.height readonly property string fontFamily: "Raleway" @@ -218,7 +218,7 @@ Item { text: usernameCollisionBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By creating this user profile, you agree to High Fidelity's Terms of Service") + termsText.text = qsTr("By creating this user profile, you agree to Project Athena's Terms of Service") } } From 60e2c2b5204f07c027712998720561b323b16c3b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 9 Jan 2020 10:38:58 +1300 Subject: [PATCH 183/396] API docs rebranding --- tools/jsdoc/api-mainpage.md | 4 ++-- tools/jsdoc/hifi-jsdoc-template/publish.js | 2 +- .../static/images/fav-icon.ico | Bin 15086 -> 135615 bytes .../static/images/project-athena-logo.png | Bin 0 -> 218170 bytes .../static/images/white-logo.png | Bin 50233 -> 0 bytes .../static/styles/jsdoc.css | 1 + .../hifi-jsdoc-template/tmpl/layout.tmpl | 5 +++-- 7 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/images/project-athena-logo.png delete mode 100644 tools/jsdoc/hifi-jsdoc-template/static/images/white-logo.png diff --git a/tools/jsdoc/api-mainpage.md b/tools/jsdoc/api-mainpage.md index e1ec140af3..57a518dd81 100644 --- a/tools/jsdoc/api-mainpage.md +++ b/tools/jsdoc/api-mainpage.md @@ -1,4 +1,4 @@ -The High Fidelity JavaScript API lets content creators and developers create new experiences and transform virtual worlds within the High Fidelity metaverse. With it, you can build great content, customize avatars, play audio and so much more. +The Project Athena JavaScript API lets content creators and developers create new experiences and transform virtual worlds within the High Fidelity metaverse. With it, you can build great content, customize avatars, play audio and so much more. You are most likely to interact with these APIs: @@ -6,4 +6,4 @@ You are most likely to interact with these APIs: * The **[AvatarList](AvatarList.html)**, **[MyAvatar](MyAvatar.html)**, and **[Avatar](Avatar.html)** namespaces affect your personal avatars, and lets you get information on other people's avatars. * The **[Script](Script.html)** namespace lets you to connect callbacks from your client to script, such as functionality that is dependent on time (`Script.update`, `Script.setTimeout`, `Script.setInterval`, etc), connect paths relatively to assets (`Script.resolvePath`), refer to other scripts (`Script.require`, `Script.include`), or connect functions to events which occur when the script is turned off (`Script.scriptEnding`). -To learn more about using High Fidelity and exploring the metaverse, visit the [High Fidelity Documentation](https://docs.highfidelity.com). \ No newline at end of file +To learn more about using High Fidelity and exploring the metaverse, visit the [Project Athena Documentation](https://docs.projectathena.dev). diff --git a/tools/jsdoc/hifi-jsdoc-template/publish.js b/tools/jsdoc/hifi-jsdoc-template/publish.js index 7d0ded5a0b..1bafe0eec5 100644 --- a/tools/jsdoc/hifi-jsdoc-template/publish.js +++ b/tools/jsdoc/hifi-jsdoc-template/publish.js @@ -697,7 +697,7 @@ exports.publish = function(taffyData, opts, tutorials) { var files = find({kind: 'file'}); var packages = find({kind: 'package'}); - generate('', 'High Fidelity API Reference', + generate('', 'Project Athena API Reference', packages.concat( [{kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}] ).concat(files), diff --git a/tools/jsdoc/hifi-jsdoc-template/static/images/fav-icon.ico b/tools/jsdoc/hifi-jsdoc-template/static/images/fav-icon.ico index 2bacaf10830a7093029d6d9b841e56e01e5ff388..da7b47cbbad0b448154a27717e1578fe885d04c5 100644 GIT binary patch literal 135615 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

    -+{cbrvgPIx6JGW-sH>)v_KIdEF{ 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

    N5R+{i;&FT+$nMy{A+mGHF> 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,k(?Jqm{$>JP#T8=%Os=4~r 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 q9kNEIq2jt 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"JwSun;By~+ zNVQi4HnA4d63$2Ihy|`Xu^#DPaUJJLwxR{-nF!EU4QsZ*F7jDB3k+J|Ocm?Q%3VFM z(lvTkSz3CRCc`J3hY3(IkG0-(Zs`YXVJ^DB^t-Y;koe!ycuCPr^r=w|NrU%0AW>3e|nzV42ow>zI=RBy)K3h`)bCqPSh#Nx?z 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 z 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 literal 0 HcmV?d00001 diff --git a/tools/jsdoc/hifi-jsdoc-template/static/images/white-logo.png b/tools/jsdoc/hifi-jsdoc-template/static/images/white-logo.png deleted file mode 100644 index b23aa64e947b03cac0e0181b4952df281ee2de04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50233 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

  • D0Wo~|f&UIc~RpVT13BgI~&$dQUV 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�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 +
  • - - + + \ No newline at end of file diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 1bff83bd0d..b28613d49d 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -1,6 +1,11 @@ /* globals OverlayWindow */ var ROOT = Script.resolvePath('').split("FloofChat.js")[0]; +var H_KEY = 72; +var ENTER_KEY = 16777220; +var ESC_KEY = 16777216; +var FLOOF_CHAT_CHANNEL = "Chat"; +var FLOOF_NOTIFICATION_CHANNEL = "Floof-Notif"; Script.scriptEnding.connect(function () { shutdown(); @@ -9,7 +14,7 @@ Script.scriptEnding.connect(function () { var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ icon: ROOT + "chat.png", - text: "Chat\nHistory" + text: "CHAT" }); Script.scriptEnding.connect(function () { // So if anything errors out the tablet/toolbar button gets removed! @@ -31,7 +36,7 @@ var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain" var ws; var wsReady = false; -var webSocketURL = "ws://gridchat.darlingvr.club:8090"; +var WEB_SOCKET_URL = "ws://gridchat.darlingvr.club:8090"; var shutdownBool = false; var defaultColour = {red: 255, green: 255, blue: 255}; @@ -43,7 +48,7 @@ colours["gridChatColour"] = Settings.getValue(settingsRoot + "/gridChatColour", init(); function init() { - Messages.subscribe("Chat"); + Messages.subscribe(FLOOF_CHAT_CHANNEL); historyLog = []; try { historyLog = JSON.parse(Settings.getValue(settingsRoot + "/HistoryLog", "[]")); @@ -69,7 +74,7 @@ function init() { } function connectWebSocket(timeout) { - ws = new WebSocket(webSocketURL); + ws = new WebSocket(WEB_SOCKET_URL); ws.onmessage = function incoming(_data) { var message = _data.data; var cmd = {FAILED: true}; @@ -81,7 +86,7 @@ function connectWebSocket(timeout) { if (!cmd.FAILED) { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); if (!muted["Grid"]) { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ sender: "(G) " + cmd.displayName, text: replaceFormatting(cmd.message), colour: {text: cmd.colour} @@ -361,7 +366,7 @@ function time() { function addToLog(msg, dp, colour, tab) { historyLog.push([time(), msg, dp, colour, tab]); chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: [[time(), msg, dp, colour, tab]]})); - while(historyLog.length > 500) { + while (historyLog.length > 500) { historyLog.shift(); } Settings.setValue(settingsRoot + "/HistoryLog", JSON.stringify(historyLog)) @@ -433,13 +438,13 @@ function setVisible(_visible) { } function keyPressEvent(event) { - if (event.key === 72 && !event.isAutoRepeat && event.isControl) { + if (event.key === H_KEY && !event.isAutoRepeat && event.isControl) { toggleChatHistory() } - if (event.key === 16777220 && !event.isAutoRepeat && !visible) { + if (event.key === ENTER_KEY && !event.isAutoRepeat && !visible) { setVisible(true); } - if (event.key === 16777216 && !event.isAutoRepeat && visible) { + if (event.key === ESC_KEY && !event.isAutoRepeat && visible) { setVisible(false); } } diff --git a/scripts/communityModules/chat/css/FloofChat.css b/scripts/communityModules/chat/css/FloofChat.css new file mode 100644 index 0000000000..0b3a3fc64b --- /dev/null +++ b/scripts/communityModules/chat/css/FloofChat.css @@ -0,0 +1,157 @@ + +.disabledrag { + -webkit-user-drag: none !important; + -khtml-user-drag: none !important; + -moz-user-drag: none !important; + -o-user-drag: none !important; + user-drag: none !important; +} + +html { + height: 100%; +} + +div.dockButton { + + position: absolute; /*or fixed*/ + right: 10px; + + + overflow: hidden; + border: 1px solid #ccc; + background-color: #f1f1f1; +} + +div.dockButton button { + background-color: inherit; + float: right; + border: none; + outline: none; + cursor: pointer; + padding: 14px 16px; + transition: 0.3s; +} + +/* Change background color of buttons on hover */ +div.dockButton button:hover { + background-color: #ddd; +} + +/* Create an active/current tablink class */ +div.dockButton button.active { + background-color: #ccc; +} + +/* Style the tab content */ +.TabContent { + display: none; + + padding: 6px 12px; + border-top: none; +} + +body { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: hidden; + margin: 0; + font-family: 'Raleway', sans-serif; + color: white; + background: linear-gradient(#2b2b2b, #0f212e); +} + +.Content { + min-height: 100vh; + font-size: 20px; + width: 100%; + height: 100%; +} + +.ChatLog { + height: calc(100vh - 137px); + padding: 20px !important; + font-size: 20px; + color: white; + background-color: black; + overflow-x: hidden; + overflow-y: scroll; + word-wrap: break-word; +} + +.ChatLogLine { + margin-bottom: 15px; +} + +.ChatLogLineDisplayName { + font-weight: bold; +} + +.ChatLogLineMessage { +} + +.LogLogLine { + margin-bottom: 15px; + padding: 10px !important; +} + +.LogLogLineMessage { + /*font-style: italic;*/ +} + +.ChatInput { + color: #252525; + background: #252525; + height: 60px !important; +} + +.ChatInputText { + padding: 5px !important; + height: 50px !important; + width: calc(100vw - 20px) !important; + font-size: 20px !important; + background-color: white !important; + border-style: solid !important; + border-color: #232323 !important; + border-width: 5px 5px 5px 5px !important; + +} + +.responsive { + width: 100%; + max-width: 420px; + height: auto; +} + +.row .col { + padding: 0; +} + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 36px; + height: 14px; + background-color: rgba(0, 0, 0, 0.38); + border-radius: 15px; + margin-right: 10px; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; +} + +.muteSwitch label input[type=checkbox]:checked + .lever:after { + background-color: #a62113 !important; +} + +body, img, a, div { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-drag: none; + user-drag: none; + -webkit-touch-callout: none; +} \ No newline at end of file diff --git a/scripts/communityModules/notificationCore/notificationCore.js b/scripts/communityModules/notificationCore/notificationCore.js index ba820a2634..4f610fa433 100644 --- a/scripts/communityModules/notificationCore/notificationCore.js +++ b/scripts/communityModules/notificationCore/notificationCore.js @@ -4,6 +4,7 @@ var sizeData = {30: {widthMul: 1.8, heightMul: 2.05, split: 35, size: 30}}; var DEFAULT_SIZE = 30; var DEFAULT_OFFSET = 10; +var FLOOF_NOTIFICATION_CHANNEL = "Floof-Notif"; var offset = DEFAULT_OFFSET; @@ -15,7 +16,7 @@ function init(){ function messageReceived(channel, message, sender, local) { if (local) { - if (channel === "Floof-Notif") { + if (channel === FLOOF_NOTIFICATION_CHANNEL) { var cmd = {FAILED: true}; try { cmd = JSON.parse(message); From 49fc4df07a4ea3e68edf70e6c2a824453206815b Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Sat, 11 Jan 2020 20:34:30 +0000 Subject: [PATCH 204/396] Made more changes but still not all <3 --- scripts/communityModules/chat/FloofChat.js | 29 +++++++++++----------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index b28613d49d..5723a0ea85 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -4,6 +4,8 @@ var ROOT = Script.resolvePath('').split("FloofChat.js")[0]; var H_KEY = 72; var ENTER_KEY = 16777220; var ESC_KEY = 16777216; +var CONTROL_KEY = 67108864; +var SHIFT_KEY = 33554432; var FLOOF_CHAT_CHANNEL = "Chat"; var FLOOF_NOTIFICATION_CHANNEL = "Floof-Notif"; @@ -36,7 +38,7 @@ var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain" var ws; var wsReady = false; -var WEB_SOCKET_URL = "ws://gridchat.darlingvr.club:8090"; +var WEB_SOCKET_URL = "ws://gridchat.darlingvr.club:8090"; // WebSocket for Grid chat. var shutdownBool = false; var defaultColour = {red: 255, green: 255, blue: 255}; @@ -133,7 +135,7 @@ function sendWS(msg, timeout) { function setupHistoryWindow() { chatHistory = new OverlayWebWindow({ - title: 'Chat History', + title: 'Chat', source: ROOT + "FloofChat.html?appUUID=" + appUUID + "&" + Date.now(), width: 900, height: 700, @@ -313,7 +315,7 @@ function messageReceived(channel, message) { if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); if (!muted["Local"]) { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ sender: "(L) " + cmd.displayName, text: replaceFormatting(cmd.message), colour: {text: cmd.colour} @@ -323,7 +325,7 @@ function messageReceived(channel, message) { } else if (cmd.channel === "Domain") { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); if (!muted["Domain"]) { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ sender: "(D) " + cmd.displayName, text: replaceFormatting(cmd.message), colour: {text: cmd.colour} @@ -332,7 +334,7 @@ function messageReceived(channel, message) { } else if (cmd.channel === "Grid") { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); if (!muted["Grid"]) { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ sender: "(G) " + cmd.displayName, text: replaceFormatting(cmd.message), colour: {text: cmd.colour} @@ -340,7 +342,7 @@ function messageReceived(channel, message) { } } else { addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel); - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ sender: cmd.displayName, text: replaceFormatting(cmd.message), colour: {text: cmd.colour} @@ -372,9 +374,6 @@ function addToLog(msg, dp, colour, tab) { Settings.setValue(settingsRoot + "/HistoryLog", JSON.stringify(historyLog)) } -const CONTROL = 67108864; -const SHIFT = 33554432; - function fromQml(message) { var cmd = {FAILED: true}; try { @@ -385,13 +384,13 @@ function fromQml(message) { if (!cmd.FAILED) { if (cmd.type === "MSG") { if (cmd.message !== "") { - if (cmd.event.modifiers === CONTROL) { - Messages.sendMessage("Chat", JSON.stringify({ + if (cmd.event.modifiers === CONTROL_KEY) { + Messages.sendMessage(FLOOF_CHAT_CHANNEL, JSON.stringify({ type: "TransmitChatMessage", channel: "Domain", colour: chatColour("Domain"), message: cmd.message, displayName: MyAvatar.displayName })); - } else if (cmd.event.modifiers === CONTROL + SHIFT) { + } else if (cmd.event.modifiers === CONTROL_KEY + SHIFT_KEY) { sendWS({ uuid: "", type: "WebChat", @@ -401,7 +400,7 @@ function fromQml(message) { displayName: MyAvatar.displayName }); } else { - Messages.sendMessage("Chat", JSON.stringify({ + Messages.sendMessage(FLOOF_CHAT_CHANNEL, JSON.stringify({ type: "TransmitChatMessage", channel: "Local", position: MyAvatar.position, @@ -422,13 +421,13 @@ function fromQml(message) { function setVisible(_visible) { if (_visible) { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ type: "options", offset: 64 })); chatBar.sendToQml(JSON.stringify({visible: true})); } else { - Messages.sendLocalMessage("Floof-Notif", JSON.stringify({ + Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({ type: "options", offset: -1 })); From 6b77f6023f785fe3418fbd4805b608bd340b0f98 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Sat, 11 Jan 2020 20:41:23 +0000 Subject: [PATCH 205/396] Added use strict to the inworld JS's --- scripts/communityModules/chat/FloofChat.js | 1 + scripts/communityModules/notificationCore/notificationCore.js | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 5723a0ea85..2c5d0a28e1 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -1,4 +1,5 @@ /* globals OverlayWindow */ +"use strict"; var ROOT = Script.resolvePath('').split("FloofChat.js")[0]; var H_KEY = 72; diff --git a/scripts/communityModules/notificationCore/notificationCore.js b/scripts/communityModules/notificationCore/notificationCore.js index 4f610fa433..da88ff7c5d 100644 --- a/scripts/communityModules/notificationCore/notificationCore.js +++ b/scripts/communityModules/notificationCore/notificationCore.js @@ -1,3 +1,4 @@ +"use strict"; var notificationList = []; var sizeData = {30: {widthMul: 1.8, heightMul: 2.05, split: 35, size: 30}}; From b8dbb4585faf044ad8e91b6fa12109c2a8f6bf85 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Sat, 11 Jan 2020 21:09:21 +0000 Subject: [PATCH 206/396] Changed css --- scripts/communityModules/chat/css/FloofChat.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityModules/chat/css/FloofChat.css b/scripts/communityModules/chat/css/FloofChat.css index 0b3a3fc64b..476712ffbb 100644 --- a/scripts/communityModules/chat/css/FloofChat.css +++ b/scripts/communityModules/chat/css/FloofChat.css @@ -146,7 +146,7 @@ body { background-color: #a62113 !important; } -body, img, a, div { +img, a{ -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; From 37b7a9c5f45d393d071cc76f9471d12691de4707 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Jan 2020 16:26:23 +1300 Subject: [PATCH 207/396] Use Picks API and orbit about point in space if no intersection --- scripts/system/inspect.js | 59 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index fc37d70331..980444d247 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -59,6 +59,13 @@ var detachedMode = 4; var mode = noMode; +var pick = Picks.createPick(PickType.Ray, { + filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS + | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE | Picks.PICK_PRECISE, + joint: "Mouse", + enabled: false +}); + var mouseLastX = 0; var mouseLastY = 0; @@ -221,6 +228,7 @@ function keyPressEvent(event) { if (event.text === "ALT") { alt = true; changed = true; + Picks.enablePick(pick); } if (event.text === "CONTROL") { control = true; @@ -248,6 +256,7 @@ function keyReleaseEvent(event) { if (event.text === "ALT") { alt = false; changed = true; + Picks.disablePick(pick); } if (event.text === "CONTROL") { control = false; @@ -268,34 +277,32 @@ function mousePressEvent(event) { mouseLastX = event.x; mouseLastY = event.y; - // Compute trajectories related values - var pickRay = Camera.computePickRay(mouseLastX, mouseLastY); - var modelIntersection = Entities.findRayIntersection(pickRay, true); - var avatarIntersection = AvatarList.findRayIntersection(pickRay); + position = Camera.position; - position = Camera.getPosition(); - - if (avatarIntersection.intersects || (modelIntersection.intersects && modelIntersection.accurate)) { - if (avatarIntersection.intersects) { - center = avatarIntersection.intersection; - } else { - center = modelIntersection.intersection; - } - // We've selected our target, now orbit towards it automatically - rotatingTowardsTarget = true; - // calculate our target cam rotation - Script.setTimeout(function () { - rotatingTowardsTarget = false; - }, LOOK_AT_TIME); - - vector = Vec3.subtract(position, center); - targetCamOrientation = orientationOf(vector); - radius = Vec3.length(vector); - azimuth = Math.atan2(vector.z, vector.x); - altitude = Math.asin(vector.y / Vec3.length(vector)); - - isActive = true; + var pickResult = Picks.getPrevPickResult(pick); + if (pickResult.intersects) { + // Orbit about intersection. + center = pickResult.intersection; + } else { + // Orbit about point in space. + var ORBIT_DISTANCE = 10.0; + center = Vec3.sum(position, Vec3.multiply(ORBIT_DISTANCE, pickResult.searchRay.direction)); } + + // We've selected our target, now orbit towards it automatically + rotatingTowardsTarget = true; + // calculate our target cam rotation + Script.setTimeout(function () { + rotatingTowardsTarget = false; + }, LOOK_AT_TIME); + + vector = Vec3.subtract(position, center); + targetCamOrientation = orientationOf(vector); + radius = Vec3.length(vector); + azimuth = Math.atan2(vector.z, vector.x); + altitude = Math.asin(vector.y / Vec3.length(vector)); + + isActive = true; } } From 4ebf4e5cfd5c0e1eed9751a0c46bb0fcd8e06dd2 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Jan 2020 16:27:03 +1300 Subject: [PATCH 208/396] Ignore invisible --- scripts/system/inspect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 980444d247..db98211d9f 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -60,7 +60,7 @@ var detachedMode = 4; var mode = noMode; var pick = Picks.createPick(PickType.Ray, { - filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS + filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS | Picks.INCLUDE_VISIBLE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE | Picks.PICK_PRECISE, joint: "Mouse", enabled: false From 2abbdfbfe9742f4fc9d88126c751cf0d6d989785 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Jan 2020 16:32:20 +1300 Subject: [PATCH 209/396] Fix unnecessary "away" enabling and disabling --- scripts/system/inspect.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index db98211d9f..6f21e7e8ba 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -59,6 +59,8 @@ var detachedMode = 4; var mode = noMode; +var isAwayEnabled = true; + var pick = Picks.createPick(PickType.Ray, { filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS | Picks.INCLUDE_VISIBLE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE | Picks.PICK_PRECISE, @@ -158,8 +160,11 @@ function handlePanMode(dx, dy) { } function enableAway(enable) { - var CHANNEL_AWAY_ENABLE = "Hifi-Away-Enable"; - Messages.sendMessage(CHANNEL_AWAY_ENABLE, enable ? "enable" : "disable", true); + if (enable !== isAwayEnabled) { + var CHANNEL_AWAY_ENABLE = "Hifi-Away-Enable"; + Messages.sendMessage(CHANNEL_AWAY_ENABLE, enable ? "enable" : "disable", true); + } + isAwayEnabled = enable; } function saveCameraState() { From 316abaeedc743110335a98ab49bcd901f70f493b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Jan 2020 17:37:58 +1300 Subject: [PATCH 210/396] Fix jitter when start moving camera in edit mode focused on entity --- scripts/system/inspect.js | 21 ++++++++++++++++++++ scripts/system/libraries/entityCameraTool.js | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 6f21e7e8ba..e00dd5f3c2 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -61,6 +61,20 @@ var mode = noMode; var isAwayEnabled = true; +var EDIT_CAMERA_MANAGER_CHANNEL = "Edit-Camera-Manager-Channel"; +var isEditUsingCamera = false; +Messages.messageReceived.connect(function (channel, data, senderID, localOnly) { + if (channel === EDIT_CAMERA_MANAGER_CHANNEL && senderID === MyAvatar.sessionUUID && localOnly) { + var message; + try { + message = JSON.parse(data); + isEditUsingCamera = message.enabled; + } catch (e) { + // Ignore. + } + } +}); + var pick = Picks.createPick(PickType.Ray, { filter: Picks.PICK_DOMAIN_ENTITIES | Picks.PICK_AVATAR_ENTITIES | Picks.PICK_AVATARS | Picks.INCLUDE_VISIBLE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE | Picks.PICK_PRECISE, @@ -183,6 +197,10 @@ function restoreCameraState() { } function handleModes() { + if (isEditUsingCamera) { + return; + } + var newMode = (mode === noMode) ? noMode : detachedMode; if (alt) { if (control) { @@ -231,6 +249,9 @@ function keyPressEvent(event) { var changed = false; if (event.text === "ALT") { + if (isEditUsingCamera) { + return; + } alt = true; changed = true; Picks.enablePick(pick); diff --git a/scripts/system/libraries/entityCameraTool.js b/scripts/system/libraries/entityCameraTool.js index 2968b8e903..b93879d8e1 100644 --- a/scripts/system/libraries/entityCameraTool.js +++ b/scripts/system/libraries/entityCameraTool.js @@ -68,6 +68,8 @@ CameraManager = function() { that.enabled = false; that.mode = MODE_INACTIVE; + var EDIT_CAMERA_MANAGER_CHANNEL = "Edit-Camera-Manager-Channel"; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: false })); var actions = { orbitLeft: 0, @@ -153,6 +155,7 @@ CameraManager = function() { that.enabled = true; that.mode = MODE_INACTIVE; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: true })); // Pick a point INITIAL_ZOOM_DISTANCE in front of the camera to use as a focal point that.zoomDistance = INITIAL_ZOOM_DISTANCE; @@ -193,6 +196,7 @@ CameraManager = function() { that.enabled = false; that.mode = MODE_INACTIVE; + Messages.sendLocalMessage(EDIT_CAMERA_MANAGER_CHANNEL, JSON.stringify({ enabled: false })); if (!ignoreCamera) { Camera.mode = that.previousCameraMode; From 96dc01fcc6435235b3ee5dd42bc5521c7bf9f2a0 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 12 Jan 2020 12:47:17 -0600 Subject: [PATCH 211/396] Made requested changes to About dialog. Removed dash from "open source" Fixed missing and unecessary periods. --- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 821879139b..2be66442ce 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -45,7 +45,7 @@ Rectangle { } Item { height: 10; width: 1 } RalewayRegular { - text: "An open-source virtual reality platform." + text: "An open source virtual reality platform." size: 20 color: "white" } @@ -116,12 +116,12 @@ Rectangle { Item { height: 20; width: 1 } RalewayRegular { color: "white" - text: "© 2019 - 2020 Project Athena Contributors" + text: "© 2019 - 2020 Project Athena Contributors." size: 14 } RalewayRegular { color: "white" - text: "© 2012 - 2019 High Fidelity, Inc.. All rights reserved." + text: "© 2012 - 2019 High Fidelity, Inc. All rights reserved." size: 14 } RalewayRegular { From 7584429e77b7e7c427670e695dbf9c0e7fc2d621 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 12 Jan 2020 13:47:40 -0600 Subject: [PATCH 212/396] Remove reference to Mint --- BUILD_LINUX.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 323ad4c1ed..3b072ef86d 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -2,7 +2,7 @@ Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only Linux specific instructions are found in this file. -## Ubuntu 16.04/18.04/Mint 19 Tara specific build guide +## Ubuntu 16.04/18.04 specific build guide ### Ubuntu 16.04 only Add the following line to *.bash_profile* `export QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu/` From 7abb8347ca7ae677d1156b2376be07ff417c11cc Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Sun, 12 Jan 2020 15:02:56 -0500 Subject: [PATCH 213/396] Update BUILD_LINUX.md fixed a space --- BUILD_LINUX.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 3b072ef86d..14bd8c6af4 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -95,7 +95,7 @@ git checkout tag/1.0 Create the build directory: ```bash cd project-athena -mkdir build +mkdir build cd build ``` From b8a6ee325671e3bc5c4516765cccb0fc34d18f9d Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 2 Jan 2020 10:41:15 +0100 Subject: [PATCH 214/396] Unpack files with any kind of supported compression, not just gzip --- hifi_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hifi_utils.py b/hifi_utils.py index 24e43dc83c..d117011c99 100644 --- a/hifi_utils.py +++ b/hifi_utils.py @@ -118,6 +118,6 @@ def downloadAndExtract(url, destPath, hash=None, hasher=hashlib.sha512(), isZip= zip.extractall(destPath) else: # Extract the archive - with tarfile.open(tempFileName, 'r:gz') as tgz: + with tarfile.open(tempFileName, 'r:*') as tgz: tgz.extractall(destPath) os.remove(tempFileName) From 47043766f36e6991d46d5eefa54f0f1204fd198a Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 2 Jan 2020 10:42:09 +0100 Subject: [PATCH 215/396] Remove usage of deprecated platform.linux_distribution() Also, make error reporting slightly friendlier, and add experimental support for Ubuntu 19.10. --- hifi_vcpkg.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index f0e8840621..e6ffeb8dbb 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -9,6 +9,7 @@ import tempfile import json import xml.etree.ElementTree as ET import functools +import distro from os import path print = functools.partial(print, flush=True) @@ -286,15 +287,32 @@ endif() elif platform.system() == 'Darwin': url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-macos.tar.gz%3FversionId=bLAgnoJ8IMKpqv8NFDcAu8hsyQy3Rwwz' elif platform.system() == 'Linux': - if platform.linux_distribution()[1][:3] == '16.': - url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-16.04-with-symbols.tar.gz' - elif platform.linux_distribution()[1][:3] == '18.': - url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-18.04.tar.gz' + dist = distro.linux_distribution() + + if distro.id() == 'ubuntu': + u_major = int( distro.major_version() ) + u_minor = int( distro.minor_version() ) + + if u_major == 16: + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-16.04-with-symbols.tar.gz' + elif u_major == 18: + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-18.04.tar.gz' + elif u_major == 19 and u_minor == 10: + url = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.6-ubuntu-19.10.tar.xz' + elif u_major > 18 and ( u_major != 19 and u_minor != 4): + print("We don't support " + distro.name(pretty=True) + " yet. Perhaps consider helping us out?") + else: + print("Sorry, " + distro.name(pretty=True) + " is old and won't be officially supported. Please consider upgrading."); else: - print('UNKNOWN LINUX VERSION!!!') + print("Sorry, " + distro.name(pretty=True) + " is not supported. Please consider helping us out.") + print("It's also possible to build Qt for your distribution, please see the documentation at:") + print("https://github.com/kasenvr/project-athena/tree/kasen/core/tools/qt-builder") return; else: print('UNKNOWN OPERATING SYSTEM!!!') + print("System : " + platform.system()) + print("Architecture: " + platform.architecture()) + print("Machine : " + platform.machine()) return; print('Extracting ' + url + ' to ' + dest) From 1e34a59c6b0b766d963b1e0eb14cf0baa464d37f Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 12 Jan 2020 21:22:03 +0100 Subject: [PATCH 216/396] Add python3-distro to list of required Linux packages Also changed python3.6 to python, because "python3.6" doesn't work on Ubuntu 19.10, but "python3" works everywhere. --- BUILD_LINUX.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 14bd8c6af4..41f4238f0e 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -63,9 +63,9 @@ sudo apt-get install libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-de ```bash sudo apt-get -y install libpulse0 libnss3 libnspr4 libfontconfig1 libxcursor1 libxcomposite1 libxtst6 libxslt1.1 ``` -1. Install Python 3: +1. Install Python 3 and required packages ```bash -sudo apt-get install python3.6 +sudo apt-get install python3 python3-distro ``` 1. Install node, required to build the jsdoc documentation ```bash From 00221704005d6d07e794902e1ec67bbcbf609a1e Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 12 Jan 2020 18:33:46 -0600 Subject: [PATCH 217/396] Fix minor cmake oopsie. --- plugins/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index e49b847d3b..126f8d34ec 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -45,8 +45,6 @@ endif() # add_subdirectory(${DIR}) set(DIR "opusCodec") add_subdirectory(${DIR}) -set(DIR "opusCodec") -add_subdirectory(${DIR}) # example plugins set(DIR "KasenAPIExample") From 336b5e275b5ad533638f3bc3aa6715a4186856e6 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 12 Jan 2020 23:13:01 -0500 Subject: [PATCH 218/396] Removed obsolete default scripts + more branding changes. --- interface/src/Application.cpp | 4 ++-- libraries/entities/src/EntityItemProperties.cpp | 2 +- scripts/defaultScripts.js | 2 -- scripts/system/create/edit.js | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3994a574d7..ee9abbfedb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3184,7 +3184,7 @@ void Application::showLoginScreen() { QJsonObject loginData = {}; loginData["action"] = "login dialog popped up"; UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData); - _window->setWindowTitle("High Fidelity"); + _window->setWindowTitle("Project Athena"); } else { resumeAfterLoginDialogActionTaken(); } @@ -7066,7 +7066,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Project Athena v0.86.0 K2 - " + QString buildVersion = " - Project Athena Interface v0.86.0 K2 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 2b8f2b4c14..9afaa5e85b 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1366,7 +1366,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * var METERS_TO_INCHES = 39.3701; * var entity = Entities.addEntity({ * type: "Web", - * sourceUrl: "https://highfidelity.com/", + * sourceUrl: "https://projectathena.io/", * position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.75, z: -4 })), * rotation: MyAvatar.orientation, * dimensions: { diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 795458f05d..07708ec509 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -24,9 +24,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/avatarapp.js", "system/makeUserConnection.js", "system/tablet-goto.js", - "system/marketplaces/marketplaces.js", "system/notifications.js", - "system/commerce/wallet.js", "system/create/edit.js", "system/dialTone.js", "system/firstPersonHMD.js", diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index c57f4bae50..ef07aa4d6e 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -427,7 +427,7 @@ const DEFAULT_ENTITY_PROPERTIES = { y: 0.9, z: 0.01 }, - sourceUrl: "https://highfidelity.com/", + sourceUrl: "https://projectathena.io/", dpi: 30, }, ParticleEffect: { From 26bebba8dd14ccf4178963c3fad998038e9d8b5f Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Mon, 13 Jan 2020 03:08:45 +0100 Subject: [PATCH 219/396] fix opus library linking in cmake Signed-off-by: Marcus Llewellyn --- cmake/macros/TargetOpus.cmake | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/cmake/macros/TargetOpus.cmake b/cmake/macros/TargetOpus.cmake index eb72deed6a..a8faf5139e 100644 --- a/cmake/macros/TargetOpus.cmake +++ b/cmake/macros/TargetOpus.cmake @@ -5,14 +5,9 @@ # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html # -macro(TARGET_OPUS) - if (ANDROID) - # no idea if this is correct - target_link_libraries(${TARGET_NAME}) - else() - # using VCPKG for opus - find_package(OPUS REQUIRED) - target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${OPUS_INCLUDE_DIRS}) - target_link_libraries(${TARGET_NAME} ${OPUS_LIBRARIES}) - endif() +macro(TARGET_opus) + find_library(OPUS_LIBRARY_RELEASE NAMES opus PATHS ${VCPKG_INSTALL_ROOT}/lib) + find_library(OPUS_LIBRARY_DEBUG NAMES opus PATHS ${VCPKG_INSTALL_ROOT}/debug/lib) + select_library_configurations(OPUS) + target_link_libraries(${TARGET_NAME} ${OPUS_LIBRARY}) endmacro() From 3a5059a613704d562f5563a07456fbef84fe00db Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Mon, 13 Jan 2020 13:35:36 -0600 Subject: [PATCH 220/396] Re-enable hifiAC and pcmCodec projects These has been disabled for testing purpose. They are now restored. --- plugins/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 126f8d34ec..e0e6046691 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -38,11 +38,11 @@ if (NOT SERVER_ONLY AND NOT ANDROID) add_subdirectory(${DIR}) endif() -# server-side plugins -# set(DIR "pcmCodec") -# add_subdirectory(${DIR}) -# set(DIR "hifiCodec") -# add_subdirectory(${DIR}) +server-side plugins +set(DIR "pcmCodec") +add_subdirectory(${DIR}) +set(DIR "hifiCodec") +add_subdirectory(${DIR}) set(DIR "opusCodec") add_subdirectory(${DIR}) From 6a294404c2fb3f8c574e22bf8661e4446b14322b Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Mon, 13 Jan 2020 15:44:46 -0600 Subject: [PATCH 221/396] fix marcus being very stoopid --- plugins/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index e0e6046691..c88bb8a00d 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -38,7 +38,7 @@ if (NOT SERVER_ONLY AND NOT ANDROID) add_subdirectory(${DIR}) endif() -server-side plugins +# server-side plugins set(DIR "pcmCodec") add_subdirectory(${DIR}) set(DIR "hifiCodec") From 681bd3cb1ec35db96de1d185f406d6002813e99b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Jan 2020 11:34:16 +1300 Subject: [PATCH 222/396] Fix inspect not working after change camera mode --- scripts/system/inspect.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index e00dd5f3c2..17260a4358 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -354,6 +354,11 @@ function mouseMoveEvent(event) { mouseLastY = event.y; } +function onCameraModeUpdated(newMode) { + mode = noMode; + handleModes(); +} + function update() { handleModes(); if (rotatingTowardsTarget) { @@ -381,5 +386,7 @@ Controller.mousePressEvent.connect(mousePressEvent); Controller.mouseReleaseEvent.connect(mouseReleaseEvent); Controller.mouseMoveEvent.connect(mouseMoveEvent); +Camera.modeUpdated.connect(onCameraModeUpdated); + Script.update.connect(update); Script.scriptEnding.connect(scriptEnding); From a297d7d735a18d2a44c91c1435f2314d9576bc29 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Mon, 13 Jan 2020 18:01:48 -0500 Subject: [PATCH 223/396] Update BUILD_WIN.md Added pip install distro command step. --- BUILD_WIN.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 1ca4a69c6e..0cb5041448 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -29,14 +29,20 @@ If you already have Visual Studio installed and need to add Python, open the "Ad If you do not wish to use the Python installation bundled with Visual Studio, you can download the installer from [here](https://www.python.org/downloads/). Ensure you get version 3.6.6 or higher. -### Step 2. Installing CMake +### Step 2. Python Dependencies + +In a command-line that can access Python's pip you will need to run the following command: + +`pip install distro` + +### Step 3. Installing CMake Download and install the latest version of CMake 3.15. * Note that earlier versions of CMake will work, but there is a specific bug related to the interaction of Visual Studio 2019 and CMake versions prior to 3.15 that will cause Visual Studio to rebuild far more than it needs to on every build Download the file named win64-x64 Installer from the [CMake Website](https://cmake.org/download/). You can access the installer on this [3.15 Version page](https://cmake.org/files/v3.15/). During installation, make sure to check "Add CMake to system PATH for all users" when prompted. -### Step 3. Create VCPKG environment variable +### Step 4. Create VCPKG environment variable In the next step, you will use CMake to build Project Athena. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them. To create this variable: @@ -55,7 +61,7 @@ To create this variable: * Set "Variable name" to `HIFI_VCPKG_BOOTSTRAP` * Set "Variable value" to `1` -### Step 4. Running CMake to Generate Build Files +### Step 5. Running CMake to Generate Build Files Run Command Prompt from Start and run the following commands: `cd "%HIFI_DIR%"` @@ -70,7 +76,7 @@ Run `cmake .. -G "Visual Studio 16 2019" -A x64`. Where `%HIFI_DIR%` is the directory for the highfidelity repository. -### Step 5. Making a Build +### Step 6. Making a Build Open `%HIFI_DIR%\build\athena.sln` using Visual Studio. @@ -78,7 +84,7 @@ Change the Solution Configuration (menu ribbon under the menu bar, next to the g Run from the menu bar `Build > Build Solution`. -### Step 6. Testing Interface +### Step 7. Testing Interface Create another environment variable (see Step #3) * Set "Variable name": `_NO_DEBUG_HEAP` From ae620b78afa46c33cb7a1d3888e161d15f991f9b Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Mon, 13 Jan 2020 23:45:38 +0000 Subject: [PATCH 224/396] Added /l /d /g chatbar switches and /goto --- scripts/communityModules/chat/FloofChat.html | 4 +- scripts/communityModules/chat/FloofChat.js | 81 ++++++++++++++++---- 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index 469ef7cf10..ccfc547b2e 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -194,7 +194,7 @@ var part1 = text.substring(0, firstMatch - 2); var part2 = text.substring(firstMatch, secondMatch); var part3 = text.substring(secondMatch + 2); - text = part1 + "" + part2 + "" + part3; + text = part1 + "" + part2 + "" + part3; } } else if (text.indexOf("*") !== -1) { var firstMatch = text.indexOf("*") + 1; @@ -204,7 +204,7 @@ var part1 = text.substring(0, firstMatch - 1); var part2 = text.substring(firstMatch, secondMatch); var part3 = text.substring(secondMatch + 1); - text = part1 + "" + part2 + "" + part3; + text = part1 + "" + part2 + "" + part3; } } else if (text.indexOf("__") !== -1) { var firstMatch = text.indexOf("__") + 2; diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 2c5d0a28e1..92f69c9c32 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -170,6 +170,51 @@ function chatColour(tab) { } } +var chatBarChannel = "Local"; + + +function gotoConfirm(url) { + var result = Window.confirm("Do you want to goto " + ((url.indexOf("/") !== -1) ? url.split("/")[2] : url) + " ?"); + if (result) { + location = url; + } +} + +function processChat(cmd) { + var msg = cmd.message; + if (msg.indexOf("/") === 0) { + msg = msg.substring(1); + var commandList = msg.split(" "); + var cmd1 = commandList[0].toLowerCase(); + if (cmd1 === "l") { + chatBarChannel = "Local"; + msg = ""; + } + if (cmd1 === "d") { + chatBarChannel = "Domain"; + msg = ""; + } + if (cmd1 === "g") { + chatBarChannel = "Grid"; + msg = ""; + } + + if (cmd1 === "goto") { + gotoConfirm(commandList[1]); + msg = ""; + } + + if (cmd1 === "me") { + var tempList = commandList; + tempList.shift(); + msg = cmd.avatarName + " " + tempList.join(" "); + cmd.avatarName = ""; + } + } + cmd.message = msg; + return cmd; +} + function onWebEventReceived(event) { event = JSON.parse(event); if (event.type === "ready") { @@ -189,10 +234,7 @@ function onWebEventReceived(event) { chatHistory.setPosition({x: 0, y: Window.innerHeight - 700}); } if (event.cmd === "GOTO") { - var result = Window.confirm("Do you want to goto " + event.url.split("/")[2] + " ?"); - if (result) { - location = event.url; - } + gotoConfirm(event.url); } if (event.cmd === "URL") { new OverlayWebWindow({ @@ -208,6 +250,8 @@ function onWebEventReceived(event) { } } if (event.type === "WEBMSG") { + event.avatarName = MyAvatar.displayName; + event = processChat(event); if (event.message === "") return; sendWS({ uuid: "", @@ -215,10 +259,12 @@ function onWebEventReceived(event) { channel: event.tab, colour: chatColour(event.tab), message: event.message, - displayName: MyAvatar.displayName + displayName: event.avatarName }); } if (event.type === "MSG") { + event.avatarName = MyAvatar.displayName; + event = processChat(event); if (event.message === "") return; Messages.sendMessage("Chat", JSON.stringify({ type: "TransmitChatMessage", @@ -226,7 +272,7 @@ function onWebEventReceived(event) { channel: event.tab, colour: chatColour(event.tab), message: event.message, - displayName: MyAvatar.displayName + displayName: event.avatarName })); setVisible(false); } @@ -242,7 +288,7 @@ function replaceFormatting(text) { var part1 = text.substring(0, firstMatch - 2); var part2 = text.substring(firstMatch, secondMatch); var part3 = text.substring(secondMatch + 2); - text = part1 + "" + part2 + "" + part3; + text = part1 + "" + part2 + "" + part3; } } else if (text.indexOf("*") !== -1) { var firstMatch = text.indexOf("*") + 1; @@ -252,7 +298,7 @@ function replaceFormatting(text) { var part1 = text.substring(0, firstMatch - 1); var part2 = text.substring(firstMatch, secondMatch); var part3 = text.substring(secondMatch + 1); - text = part1 + "" + part2 + "" + part3; + text = part1 + "" + part2 + "" + part3; } } else if (text.indexOf("__") !== -1) { var firstMatch = text.indexOf("__") + 2; @@ -386,28 +432,37 @@ function fromQml(message) { if (cmd.type === "MSG") { if (cmd.message !== "") { if (cmd.event.modifiers === CONTROL_KEY) { + cmd.avatarName = MyAvatar.displayName; + cmd = processChat(cmd); + if (cmd.message === "") return; Messages.sendMessage(FLOOF_CHAT_CHANNEL, JSON.stringify({ type: "TransmitChatMessage", channel: "Domain", colour: chatColour("Domain"), message: cmd.message, - displayName: MyAvatar.displayName + displayName: cmd.avatarName })); } else if (cmd.event.modifiers === CONTROL_KEY + SHIFT_KEY) { + cmd.avatarName = MyAvatar.displayName; + cmd = processChat(cmd); + if (cmd.message === "") return; sendWS({ uuid: "", type: "WebChat", channel: "Grid", colour: chatColour("Grid"), message: cmd.message, - displayName: MyAvatar.displayName + displayName: cmd.avatarName }); } else { + cmd.avatarName = MyAvatar.displayName; + cmd = processChat(cmd); + if (cmd.message === "") return; Messages.sendMessage(FLOOF_CHAT_CHANNEL, JSON.stringify({ type: "TransmitChatMessage", - channel: "Local", + channel: chatBarChannel, position: MyAvatar.position, - colour: chatColour("Local"), + colour: chatColour(chatBarChannel), message: cmd.message, - displayName: MyAvatar.displayName + displayName: cmd.avatarName })); } } From 195f8867d825d8a18258ac59ba5453111f0b88c7 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Jan 2020 12:48:16 +1300 Subject: [PATCH 225/396] Disable API docs old analytics --- tools/jsdoc/hifi-jsdoc-template/tmpl/layout.tmpl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/layout.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/layout.tmpl index b9cc34ca09..90641a5523 100644 --- a/tools/jsdoc/hifi-jsdoc-template/tmpl/layout.tmpl +++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/layout.tmpl @@ -72,6 +72,7 @@ + + + + From 64149af8ce188452365b851690b715a2a07dcccf Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Mon, 13 Jan 2020 23:54:57 +0000 Subject: [PATCH 226/396] Fixed goto to go to in dialog I HOPE YOU'RE HAPPY KALILA ;w; --- scripts/communityModules/chat/FloofChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 92f69c9c32..438adb662d 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -174,7 +174,7 @@ var chatBarChannel = "Local"; function gotoConfirm(url) { - var result = Window.confirm("Do you want to goto " + ((url.indexOf("/") !== -1) ? url.split("/")[2] : url) + " ?"); + var result = Window.confirm("Do you want to go to '" + ((url.indexOf("/") !== -1) ? url.split("/")[2] : url) + "'?"); if (result) { location = url; } From 203c371a01c910dea01fe62ae25915f736d3c970 Mon Sep 17 00:00:00 2001 From: NexPro Date: Tue, 14 Jan 2020 00:33:29 +0000 Subject: [PATCH 227/396] Re-branding of help dialogs and tablet login --- .../html/img/tablet-help-gamepad.jpg | Bin 251863 -> 134511 bytes .../html/img/tablet-help-keyboard.jpg | Bin 339239 -> 161890 bytes .../resources/html/img/tablet-help-oculus.jpg | Bin 315914 -> 162456 bytes .../resources/html/img/tablet-help-vive.jpg | Bin 234811 -> 131584 bytes .../html/img/tablet-help-windowsMR.jpg | Bin 273720 -> 136749 bytes interface/resources/html/tabletHelp.html | 11 ++++++----- .../resources/images/Loading-Inner-H.png | Bin 1551 -> 7484 bytes .../qml/dialogs/TabletLoginDialog.qml | 2 +- 8 files changed, 7 insertions(+), 6 deletions(-) diff --git a/interface/resources/html/img/tablet-help-gamepad.jpg b/interface/resources/html/img/tablet-help-gamepad.jpg index af44233537ac956a49a9a96118478637990550ef..3f246e5cc0a063d4c6cd350accc5eca69bfd1d6c 100644 GIT binary patch literal 134511 zcmeFa2UwHK)+jtQK|v7}K~O2o#XgOX4YD>X07$knt5lTjy0MM|1 ztJ48M!vz?qd;kDBG~7SxB{au>>MKs=0JH!ARWuS?^?d*Ua-=Ju|Js*k9{@Dx0MpjL z9i-m?5ZwL!Q^^r!kL1;NL7`E8E+}ta6(bqmB2wbgTTM|h zNl`Irc?ofOF)?{Du@k(!$4yQgqXaTxV*R&FBK^(FDVVEh5j}GjMPst z2?_E0-)sRv0NkhjE+5^?`*h#yR4Z+jZ8UV>blmo{9cWViumjD5pY1?P^PLAx5$zA& zEUw@9X@0Zg)+h81ng=Xfy4$Mg0$OMR?AmGp$KR-Q&>*-1SeTfYwllG8-_F9uyn~sI zot1@!m7R0%UiQ6vIoVjY%D0cdE;KutnRo8mxqH{H-TQX!+O?1RW7oc~UD*B^2GH+- zjS1Wbo^&*PfR>Ghj*SKy0`!0pdPM^VfQEr)t9(zr)6N=#>7C!B1r>i+34tx>=9>BGO*jr=W|(N+rGH0a%Fx2cEjiPl2X3m zohpn+%Pe~Sq)R?z{uqM+Q$B=FKmF8mWGy|eoH3CZ4A;|A{-IlL$73D z=fk&`LE>`UKB@%I4Lg@41?)fhhR3TIu{-!lEg#)R6@c-W^ouUl1mkQDM>T{D8aety zgugF=;2$DD1Av8YYfLr(2NSanher=Do6#zX7shSku>BC|2wQQ8(jd1MqhBfA5}eU~ z7_aR?PB@rcJD*6~C9`K&KV3)XhKQR62bY$Yr&?XiA#t+p2t~Q%PEJm;Ve@ao4bP$k zb~kmwPj5UVjjX;Cc+vd9?xE`$&>XLAE-)jI8-M<%3I=*Ru}4ebPBLHfNog*j6&0An zNtC36b8l_WhDpc*S#$=TLWw1{NejO4XKBeLvQ1Za&9@D|rx{KtDZrdI@>&`4xBUcD z(mHxNSkajqR#H?}(_hiY>G1hzMz-0a*1F`SwNI4V8QYC^2)x~B*uZ3;jOMWp@TyK7 zq*tY*rvwbb)feZpa^h1nusXZw=1?aWbR#k3y)%@_MduB@NeDcDo@{q^zr*7yjzguq zhpendx-p8R{%K67BoP8#uqJ`LkpX#hRhooM%-P^@C(NlSqOBfgLz*Skdyc1gEXB%N z#4la`VttIm`PaU^)&h5O43KneyYL?+==}dL~j<8!Fc>^2}v-jo1>_jtIox ziPsXyhdReH{lgo@Z;sR&fdruCGe|7Jc!`U>SLZr*~j~G&viy(7gx&iACq>&g^&D(Ta@&eVeXP*BWth&5s_{ ziS3s;IvNnQaXNkF(wl5q1*@s_hTNE)N81jXXnDvIx!2|(5Dfv9^RGU%4p`4Vx#{Dd z`o(N$c)he;{`3sIv#=cky-@~p5089si=1zKo{8BsJn&EqxC;Iz&@4M|^=?3iIUs3U z5-pwHX}FK(>dm%=i)x-Ce(BlgHm|)~WhQG}v?O*w;3k=;oc{i%B?SDj(YEfGh1%t_ zw1DpN1FaMAfsxHpl5xY^MV+wD(>1TlUlqN{T+7_VJU^CloeQcpqSKGqC zxum9W_21&iiTmOWH5_fmM1qewU+y@(z25!Y=B)>;2U+8<)8FO!a94?@?MPeTF4Q)* zCnzL}Wm_T-jD_ru4V^i2h&XqzPw~aUnZsPia}qNq6vXGw-~=+YVqSW4-w+(C{gNfI z@3zu=ErED#LqT#rWn@W36#`Wd7^G}J0d}z9vjg)w7_)=0@=>3VR0jCBbAh=*O`ume{nR@^4sqIfyTZ1gEYgfcLTA{HUoRf zs`9>^$9;feV$(auyrpwH2e>U}A%O9vcj&Zaen0!(AyD;qu$1lMdHx~E*P=h%V%H;$ z>iI91j$zEnr;~x2Nar00rS<~*XDQ4y*;#`41W$nl zum1h5jTj#I{4s;d6MHG$5J0UTd4L(f%tL_w4g{c{zqGpX(;H3I)d7VMH1O$*81ic7 zJJWYV9qxL&czNz!jq}eaEvx~);Q)iM7FU6u?wx$RhM0K zeRrh#WqK_|yp2bPj7dXW4rdiF*>@2pWA<6d+wZW>Wf2#?bGXzS0Z-)isP{d3wVf{X zG#UFT#LQ+h%F`rs@><_3A6mt>4Vzy1LI2eqEfKDH=cmrn1*RP8u=Cz|I)aP)+3QpC z6x70lx8}%Q_v^$5YpW8#+Tgl?bX*_hS-}i&YseH0_Rc{S-fCLaDfAxb?=Q4V-=M3d zlu=R`h`Xw8Z(mutmU*Ps4?7!om|OkytSD>63jwJ&-~a>~iV8K;89x@N?m;#@*& ze<(>l=QcD{X^Aag!7Ry&>mp{_ldL*+mhtep!->m9U9O8mp%(*S-zPMa%U9Q=$3ne- zW#V(Q6#vXV<~>Yruk$PKe{uEkyD#Rm?+zY3hjj&V>-RQx1x`IFSSh{j!CmZTZy$oq ztx@CsolbddvjhUzdTW*fmw{s7Eh7biu1AUxSh*8*_bs58&OQrBeRQf(>3ng08;N}1rk#}DrXCslG29mF`@=HQ zz3)7Ib_(pxqI+{Z#Dp@|Fn;IxQMmTVhrkcXxu}KH3tH#)7_F3&8!t8epP|{{^YAqY zgrl~2=FhyJ_8f2yeHCzp>IMB1dyFqxVlIt@U<|uo4t=?EXGqIn)sy_?(hOM#b7>@4 zOSdPH$7EzAa5(L~%fteYM0{!?%qADxuvnM(mF`4ceD>_%=E7#zKiP)feqsU6w?6CE ziKmk!lEJJ3ye-{F(J;{sQb=m35NB_9*wHL2SM%Ve6A)36#c?SuhOR?mZdt_Azlt1l$Q}A}gFM>|z{pl3h`Iyb2 zxeXoZhGHf^=69214yng%BLg2Z{WohDDg%a6bGvI~=7u&?G2$ZpLkHRB4jo&0SoLLY z&v7J!cXsK!BB0BHR%UvWpbaJ#jdy#h1Ol1w9{m)z0e@|*( zYMuJ2;^9kevu^b@at)$VD7&JmeW>WKJdwWV?L3jjYG%ei2K(AU-xq~)GD4#Lz4h$f z8~^|;Kp*%56hHwdzzd835}<)U@ZOSkhxZTa?`)Jk&|cppVzKvk^+3CNZLtIZY~P|* z(KXlkYK_xW9<;)L(s<8L8tZwZT~S_s0053Hy}Z$0-<1F=9`?RJ8ivk(x<48!zFsPS zG`!G%G|t(3`2E0~cSZ;NXsCI5sQzeZd7=Mct?c0L{LK*G4r7KI$|~S%3;-B9^71;O z{O!-8K5p5AS~PsU{uh|C$Nx&F?CWTZ@ItHe8+uTm?T@1D;mG?}a6>;2^cGw{$m6Wx z5Aq!WNCz~^SJe(}N7Z0UNPTC0zwfhxTBj20JL^-$2Ir7YU)lW4u*N9wzZ}-c!Q(4j z-`C-+`Hx|DJNTl!OgD|1e7mR!L!<**8HGlpJUvie&fhw*e8*5l_zAxA zJKWIK+2v;h^LKYs@HTwWZbi76)$tpua41(^ULlqW)XBEn9324QK)VR*M>RqU!vk zY(d4gnqMOmUm;Wts5($*9m5t4(-!303PyVtZ2kXc|HE6jt)aGPxu|VA%O6(QD%2nm zHM9oy0yMA#_P}Fn#SsQB00}&RHxLHSzz%o-?CX-(2kHw(<`@_$r3sk7>T8 z=r%tOR|lk@iN`srqtg6o9EL3%0ALRQfN`s#rTP#6(k3VfhTgLx0 zMAy&x&zsdYI}fz6o%5flb~zwDJdBY+Xe~cYW8HJ#mqVuS;6D*>cR~4vD0#R#f43Ct zSLHRogQ*60L^|2|Z!OQ;1CYMxzaTgH4*oMav%Rwl$^+&5lX2O;@>kaQfuP#>Jj#pu zxgCx2*7HaEA%C7YJ3Nq1)Xo3TP!{{Gh4p`dGy77P&%Xh0`Pp&mK!Alho#9Jc^{;TY ztvby&U#13@zfS0{o=l|&ELXqz7xj(eJ^(bD0JKrzu7DH#3bpE7babE7bb+ymDmggo2=+NT{cGR-gnN0SedyB;W=5 zzy+WH8lZsRR*f2v-1}cp@B$TJ1Z1|3I9n&BuhAIBugN$x0Q$tz>Vigl%ZrM7`H9$3 z(`iH;P@bYecHW}mB4VOI0UqRS=irV+^V%bwUA+|f7N24HcwHS8`AnsC#dN(@kS?y8 zA-+hXkn_e4A?^;R9Qoj9col-=gFL-Gk!U;KAWsi3KlvaBO)#(Eh8g-@>}|jgs7N|u(*`Gw2ZujEbq6% zcZOHN*U?GdP*wfgSiX)($B%ybt@vvOXX;1kMc(=^6`CF!P8q;_Xp#@w3eqQRj)0D{m^Ow=zmP@ zM?E@=8Y2Br{=N=KwE(0Sn*V!uM~5GMz5RVXwiIx55Jh?*J&|5$KT&ZJ@gGBZe@}n< z(dAFV{XlO$(C-5TdHx;p?@yje=&h?OuZnW;r;e$ms>r8$N=#faY-39C2?^% zRT)(!ITbl28D%L|RVBIaeZR(W>^%PW#&vX%cS8Ak+MyNsTs`fak)m$iNM}CYAG*tL zg(P%Qjz~p5$*rN}ReX_lXr!tg8mY)9AtruGSX@F_Lef}VPF`GEUQEj3E0r$F(bXyV zJC%f(u$Z{8xRmktB(d*QNVJ`!9op_6&{3UY%b=RBerS|$@V9Aeg!K7V^Kj+enl$ou z4%ABlMLs{f0Hh<|H=yhPkx9QY40J(yQFZ()>AzC=p`6fxcD_g@XQUVUyGQ=9Qo*tXY>&*$;vQ_ra~ z=|&vq!jBQC$?!=3tBGF|;{Q%Qyqu<)OVIVZ1&`mnn_fS0O3U0eIO<;Elcx7GM3}s` zgr zzRQvVQYzv5Iot&ya zi>&@r693OR{C|@9ABgT&6A+2K)7edwcY&m7f*uk?*|D zZC}ztNNBRaOpK&2lB#p-D$EBq4s!XHO!b7HvW!zx+dSX1ex@Dv+{e_upzZMQZYeR< zQC_sc**71t=gTl#Tr_3B$eIclf`D*nVyV@%eA!)8(%Sp*H+%J1V9f^&t~{H2SEN-I zX6#xyy_cB%X5&$x)TRjB`szm)5zm(%hqCR5b1<#bBdnW@XvDtS9xq~ zgb?OAxehTQ_djY~#6mrP%$AaVd~D0wuq&Z2HfI?0bz3*i78~9y2(I9QfSiq7F($Ra z}aGs`gG7U$g@7e*yDp2|(D5q5ivfb75=YaGT-=(#`hcK##@MCY9z zcK$rr3cPvom}`Tpd}d1Bh*b93E;i?9$1xWbD$3cEOGavi$axUB?l%#gw?uI#^5O0B zXV2(8idA)ZUDLr^7lXNLwf}H-{=j-T9%sCWJ?RlzNKDOgrNKcUdDXI*`G&cfr*!VC z<~o}@!-*;oU|jOU8D%Qk5;^eMtsB=;^IZ22wBHw*a&~Wb>Kn3d(Qs#BYMJHChLs6r zE`~AS^m*>dW0Dr6SVbxJ)ADE;_lqYV4Zl0#K$EhK@e_MdBMd)Yyr}?3C5)ET5}Z3y z9BmBoL+G8SDD}C`_TvH&P%mcB;o)&uCWSVfM8psUn{D(SlL`}BDNf3H9oEO^_ji9# z6~2?3;}M`F(0*uS&E7N=A&MWqdOysIn56UEfhU<%p7X96H(eVLSAYC&3Lzmd!$#?p z5BXN;snOEf$&PsY%-P++^3SWz28At;%ic^sb;(io`H@Xa)<||8xL9aZKG71<<)104 zO&|uEGy6GqU8)+LJsPgJ|7!F#xnf=jq(yW=K$j9|>w1+e?x%P~q5ab(ouIwRomL1` zX6W;rFmqz`=jN2aq^haP3XEn;0ZyQQ?_2#=$5sAOflaL$*h3h8QD&BFe_;XHy=6@_ zf1t|6W@thZ)}$BP?L<=#pD=Yo;mZ-CCm_&>(SyL<$MEsd(K0m%q}}K)6C}0wIYu8i zz*7FUNSyJD_!l~MUF^}78;e5IHb{a^HTU3jS&o(2k;I^=skDMy0w$Zr{G-TC_)<`j z(l|ya_@XMlt|5$Yg*DiHHMYog?f9g)pG28#uyxoG76)Qjcc@&EtS;#l-ZaH4L7QNj zeDb6eF}2&WO-zfvj}${6(==`#PI)I3UBS~_CNMLsPWogkN(>*hD|k0_zf$aV-l-=i z{9SdV9ZaI)D2L68nMh4tq`Mn8mx(r0`cL|hSagu{MBg9L!FNnHCa)gSQ+X7t zK@drxsm~Z5x;tn!c!JiPU*n`*JgjiE6o-9J+L0H+kw}VjCfel(KWn|sAwKfqb*D1! zSltE2TrWom_^TdYJXyR9E2Cc@@-dER2|0FySU9OuZ{jZXmQ|;%bl>RJ z&*pg!O3^hVDHNk{RG|e?MMwVldQfw>^q8ox*URvOvGnUc2)IlzvwGL+B}VhN_a^b} zb<;}%gLNM9C4u|9*w)B0QWKlDOY6m=q_+^D2{Ry8Y_z}Bs_pfc6fK;w;@BVHQxS1c zXph9bTv+h4(>^v{4p}Y z%0nS>?TSWjTKIW7#YHGff=xn8G!74Ps#H@HtXDHnt_hzVl>N@FJ&*J0`anH{CoL zxAC^}X$yC`{)lrdk;j!iSoSXZH1_0dzlHQVv%jVdS&S&CKNQ+JN!Muu$Q{m|mJ{PokoOqb+%hX9@_=Cx&UBO?Pr~5NZd+$BG zQohU9G_m8v{WRfAd=D+>L*eDoRn&z@xn>BAk8 zkKt@$i9Y#ilcKQTO8kg=x=6KPlF&0o+pAuEy$}fE-}$xz_LLP5fj2lC+5BKzi(Y?3 z=gGOL1S989tKK&cO1lJ~;9-Efrp{4@VP86=hb_%1j=>zwyPFd_?$_LN_UGd&>r+Ha z@MYr9@T}P~&W)CFlioq#&SopmT5kgc3L)@bx(bm81yy|BIYnD9~82)h$?S5 z43G3mRVU4^pP*On_l-(A#@n4z=w&;{v$kw3OB(mOQ8){Mw2+vLO!|r;E9twJ4Rozi zgKqmkz>(7z0)p(?4x~lG>+9Gog|>rSIWiESv-rHfSn{ZRu_Qxg@GDm52HtqXqEZNKUlTWBn1HV@&Om^`!AMH8LM&i1GSh5A z@FSD^OLJ%Bt8w*r_NenmF^%4Tb<@>g)W=wG(xkK?3?00uqy6>=En&*d{evczEI5wD zOG58P%h>mj@0pvk!w29SGbVhrN4`bXK|Vlo-Va>?nF_oeLIPFTr4<^QS|FqO(IUPwG0i!P70A zvdWqcJ`Eoh5Lvpi(vfpb{ACyU{XW~P3G?=4XP)$Ki=2w=-9gy@H1)i3;L6mLUf$i} z0SG9B5+{Y}S_MtJFLXatz!vdYy&G!C^b{>9$&Rlo;}(zO%1Rteeupzl#AZT3{3yQd z%U#dXl}+m-mn)Lc71ft>_R^N_JIQv~x?upf7B&pKO5mVq=`vCVYO%{~(RrDKn3VU? zo_;L>ui1N6-Dzv!W@kFO+anmcZjSv@5?z*8ArzFF3mDfe!;Cf(02Un3-TMoKtm zAd=O>XKcDZ@uGcUWU4<_9)4F!RFqgPe1D^E$qMI*+Q$}RYlgNL(4^h)<=W;l6l`C} zGxddXuHKJgKS<#dHy(q)aSqB(+qEOnc_Zmh{X5dpo_h(*8Y(_{hvd11DmlkJAMzHU zlQNO4@XM(b*>i|VdDhzs&nFdOUo0zX;MwT)o0T0$*c#8C{dj9-ry!AT6arUpHiM#R z)fdZ}J-LnXJu=CHs;i#T$MdSLO=PirxPLdKV8R~Bvsd(G3;7%(iU=prbu{?&T+N6? z=GMP*>z0ZzTK%TVaYwjk7P%cV9z=c0l^n6;jw0i#2(Za|StPE*> zD(FmMnOic){-JY-?Fab1&H0(i^zg~-_9mva^8PQZ-)k;?P<`H|`7T>%*Htt9i0FF0 zMT##sL4NJk4F0nblX=j7)tICF6v+oChaiy29z2;|WaBEkG@InRudX&xFj_atoGqdl zrSI}G85jM`sOMpI>dY$ll!Wz%W`g!OFdw>cdiQZzhZc4p`DMm)iNkbo^bOmV~w1*FFa>hx2xh6PC)s9xh@mGx6+|y(>x6b zoMI!Uv&T*^m$pq`{m7Z4Zh?92n^B9Z?qCnDZfosNP;7fym7s|m`jF)0Bz>|qP#_I) zZ+0ZjCb%D+^LF)+VQ`7VN^`c)gxPhMj)HyK+P6!aGTGG!DWPF@mapT|&oy^O3nVVIqPBVuxm9>lA6&^Ei0P zPgiMVgk7B&(aM#a;(ww##@@l_lDCSE5Cg+?{cI#aGjGZj@wW_n^o169?TYn&%lz14 z*q_GSF^1A5{}>5hk}Kj??XT85IdUvF$4bXNnCE@`G1$vj#{P_JiRC7iC1GgdXRE5D z=FbMmaBtNIOj(z67z^S)Y7S^q`XxS;n;gmd97wV1Ins-Ma*m^BzWoHCFGiPgvPEZk zc_Hi57o5F(-{6K~0~`zkzTnI?5+NX2*FQe!RMAbN}(r6lME@)3Fk6$rh?yER{*!p1HvfuH8@z z+~-t!3Pq`bC28=#`Yhmq=()zQ_3Su{-;R;iNiT2hyRlMS$+u*laoobYfp#KW5&}(D zi12ii)kUmUlVts3!BL4fxOa~go>WS^xi5#B73DoC9U;c*ry_cfN)CUJJ>|$t+tyX3 zzYSJO5$J_0V6DE=uqNe^!wG+OxOE?hQrYSLY>+n*VKa(r0xLbMP%fg&ONR8;^1 z&MoYA|EkAtsQ>3R=U3G9e|GE`0{=Nt(~rDYXYZ3flXk&Iq$x`45U@gg=qECck$p`4 zY{z+GS8>*DnA>6Se)hm$_+R$;%<6O-9T9d@1m6y#4$X&i=Q)oct-k z^KY%^pN?w(#`E^q>*2rAH2%NxdUzmb#x!MUMcylYuU_!!>tiu$I+9#K+;kv}dZl87 z54?kpE23P`u9bylP3}2oR~_k<7IDN2-oDsKN<%1+IUpeS@tJR@3f-2gR@+~(PX*mx!u&x?_!RvtwuLgQ_Gt|fYWMeoVRIPbOKc0% zyysEES}x}*a*84O$eMnr`M*M9MA;#gyMwk1T_ zrgqPIj3jTYG(2LfG^TvCzao;vKG=h?9_9lr~?xyDZtQZKyQFIJxl#At6dO4v8%Zlh9M|E%~GtL z&MjOd2r#6-l9a0H(hPg$o9#2!F;~XEjvc96KL%Tx$EZHVPZs)RkN9k~m6WlhamwS3 zUM<`8*cbjq9#aC5?#V%>wru` z4g{jgKCKI4pWV%2Xf$9kz?d<+dA0K_(_-OW3p49>9zAL2ZH(870mp(L*D0DFJ0vl9+`ZT`=t0J4 z-*R5O6vA~!)jpBmX;%t2&5B=bWpw-@&R?D95hXd{LU(hXDlZ8YqPJbW&2yb@LELo6 z#+{Uj=b1`Q_}EK|PU;Sw1yJNKMN@(w7scHMu zx{cv#@eKT@C*q1=?mFCVcPQ*}kwUUN+d2tVQTg@ADCynR^;c8aHtFu{6+ch!?Yt-UWyH74$nt7^9BIe0O0OrAO+64_ZVvn4KiFs=c8!Bi*~%2l>1pzOcyv%B zw;TH&XG=@D6x`q35JFI%J!4q4QJrF$<29Uu`z+^lbX`>MYPc_auMf_~I=Y@f@mVCm z-<(k{?-8yWarpe9y?I%8`XuSLFpHGm5^5PEZ10h{9(wGM&jJ~(}zR7|Rkbx+-LUU2psnGq9DMS~1IExT1~+uIBr zwLHI7UMeeJ^D%t_fp)#=0L)48!>oKcN6D-e_(O=!pVsevCRC-gmkv+s6 z)2{4hA<2w6HWT6%n=jJDWm(cy5&LBYAKrx}$g<;%GG#4i;3=4-?yw7kW`i>WYl-Nj zFQdJ3Dhj@d#>w4>1Sa?}FCh^3+&FN&F}be3gklza4I>_RD5i9%uIo*7o_*YJlbm7<67azCjfpuRKH?byGW)ZpZ z4pu0!nHq1~VYlnaT>e*DEG-dy6?y{p8Tm5no}-&W%Mjobft3>7r;yYH5z9qB;?vhH zpG92-YB==I@&)B;>l>rF@#{e(*c;Ll`!ZfqDygBI@VeN~zx2)9X)fJo!z1#SvblC# z?nf5EcuAPNTl`Yov>{AimvVqqLP$;# z4(MSCSUWy8&v$-QcJ!iYuL%S)T%+q)*{yE9dHyyLDNXO8bm%p#9ex}mGEV9s7;|y@ z9V*zV*z+J!(=hE#nXmSJ2%IQ4&2onmZp(z}KlK#E4{ANC>MU(i%W$Eu{ILA4iNCyz zBmZT~C-KaGh;oYZ+SasimI~~HfMq6Y%oEBC zf|b~a6?Q%BgvX>^=*!W$Xg2mJSVVi9OSVRe);a&_xhPx^r4M!o2Z2*eq4{!E_%k>1 z&1S^8j%V;#1m8JayLbP%PWM_^2Vt}T+tCKsQkm#z6%`$5bV}*1EjwCqe5EgFhh&D- z7`71Cz;h!KJ`jqSKI2Xr?XOyFMhO$I9Y48qXcaf09qSgeo2`YfEdRi|erMoVbRB`> z)1Ki?YI~eQ;k40dx%gh2vq$}~Qp+dp-S_ve2a(edBK;5$ui`o8S{tT=_qylo!`yhZ zbhy}$r%>@_#oh6EI)mxg+s{M}kdrp8mQA#FCMQFHmsFhZ&Xtk5Eq_YUUbN&n`v5+? zi%$7g=a<_g_=N9xT7Ts0B35+>q=i=zkZ-%N66jRsHm;8wsFPw$d9^zq1r6!CB(6Uu z*-lW}VJ{#c0T&s;zw8itP?Axds$jamB4w|D1pIfcee~faSCc=DKQ88nK-wb+H05F- zz*&kNZ?-S!XwM`iWt@e;U7eBjJDf$<#NdfbjLpOPnFPtUq!%0F-ojEX90D3rANRW+ zyFYwaX{Ttz_#m4N@lQV=n|wNc#l3oEz|X#awLYQgNJ|OEEWH;~__oIEz1Lw!&LF zgdotaO|;<=C;B>C>*|v&Chtgdr@G&UscnaVh0J<)eC_MvkM)+?b#E6Jr0SJeOarq^$L{zYkBi>Ktd04QO5l?n zvFw*RARuo`nsAPXz=-S;>E@bW+=^e+45g%)6rcZl@u!Y6!K~(_Cw-2c(vR2AW$uyh z$tlo#Dd0K8N)mmCiDh@-{L2>)n??x8)#e;4C1&OyIO|wrKE=CU;<0xjzyxP5NSaiy z*@(=1&>ayr+uSZS_D7 zB7$s%Sc+oMqSueP{-+zTFK}XGn{tP3ML%5Ff4d1=nPqH|=F}(40=Lcx3iidwM2J<` zpnch)ezdSgi~P-j^QFv|!-M5o{65M|#T#_`_BFnZEb+@yPG+T7uI^i#c%6oI zW)BXlCw3Ihgj`uWV_e?7a!KX@m)xk1P;d?`=QpRM(Ni{B@O$N^_sxhYgf>jv8JGIH zimDnrKgVz#9miU8&BwpRkBSv6ByMUyE*B7U4 z*IC~~;MF9~8Uk`r5J(UaC0=>Fl@)Xw0`0PH+c^ohB3(UEfrVCsA$>K;nuia>Jkv2t zkuMXQG+qz3FX7YcNQ%1Y8?4b>G^@!wgXX<;Kh~68Bes1+BJ4M8rY^oA3Yj;AJC^Ae z=$x;$o7OQaCRa-?T*cQIvwjfqX}$OZ1g3bTnMK9SKVy=f-n_BHz3=0|X`ZWIS;gw` z_o2cNP02Jco&EUFlGBHMtBPkhHjLR` zjrnURw|DYPNF~fcKo&mkf%wD~mg!$?jk9y$*7ZMK;`2JZr1f?5{flXcMO#9=A^!AM(b40@v>sg~ zX|o`biI}$6FY$aYzMSt`nYUZHIP;+HhC%Jdi&qtO@g+rR39(~T@#B+n$~o-_o6ErT!WzpWy3Yo#E1gem#XM=Rb0-C5-ypXUxQTb38yR6xKX zkaiUUw;1EFOFT6YxULah$NvxGAN6$jSbU}l>3v_nUWL)2n`#!b?!>Y7qUImC3}e-JviI`jgts*#C}EsM5NPcn;yjt#Wgsxh+VUi;HVL`9pW#AZ zd_=vSe_3t|DZ>B)uTLWIqW4I-4}(RBRYM_NmO8oQdkl1}`|J?6F?VjZL^m`-AWia7 zrVidIyJ(2A&~>rmO`HA>9OtevQVIz^XUQI_b5ZW;lO*Im(*SQ)3-O1rtUpYRSkeFco`&pk880*-K$% zS9Zf>_{^;BnQ2h!EUkNT=*3b>PJ`I#4*pp%vy=z}b^606OX|#hObcx(s9=sZ-*k<( z2E*t}<^{-%_5~f|d(ZCiopmuI=NH$&aG{&T(%>l}PN~z}no?z=1Lg7D+!ulf(&X`n zf$`^`r6H!)i`E5``ixUJ91}U^<@c17GO=Q0kn=sJ17v#yre*HXw(Pi9+IUi^*O+hL*=SdQ1E z5q2GgWMV9Z72k1J;n}L5?aH{m+U!Q%B~jHk?k^)k((3glw;m9o4StVj)K<_X%xEJ& zdxN{541wZ~-qqCPcOM%vSyu4qCj{e3{aLuu8U1tJgLK|~^W5T2c1`R} z2h%AXJXIqob_0CulyGc9==!ivH`?q%^$N>&2m03N`vvE1vIP<`*UFYcb))Mt*+T*+ zATXu4n6Of)P+k09sf6g|G~Q>bdW%I@N98DYmjKBY*&rGtcLvtviBYI49{<>X_$9$KE~7XZGsh*C8N(2DW^IY_e(GkYH4IZ=ya)g}-?`$>~^b)bc~v z8tZ9F@HG6c$Ix?z zAgWfXk}t_^ZZUD+-^9yGkKP`W{0TW;RM*XJZ=*@->cxnzUQ8u($u(pJnR}f)b~tCx zt5h2P~tX~4sV!L?<5UJaKsk@QmM$*jXuo7Re<(%Wp!s40oJ*F# zzl8c?=xw~t9%?YjD&}^^wP!&(-NGqj?NiH}`41Vt@BEGK6T-IQagpU8%h}Iy<)3~x z74zS|LA=>jt<$z^W2c_pZCoIVuVrr;0;zC^JjQ;hFbe|hIu!G;3ocQv#H*--99k*@ zMwW`NPL6qb-_bIMzrTvyRLGpSFP0u5HkY-G@Xt)?;Sa_3X%?zQ^AuU0fLHY*d@;Q@ zMkyW$eAy(&WM&Fn5*1cm_8~cDySQckOBUN%_0teY`j86&QFgn#)Zb-bLQUW3iwP*kR*CP|zBCrjN76j7DNKXkdzf}>^BhG5BkEXCc{VgS|9f$q+ z0B44p5+#iL0iI4_SwPWg7i^t+&7S&wsDy`RnUD{=J^(pT551U+QJ;A8(2O zTi9Rw=l}2*y}xsMj@r)c|i zNBvLH_UqSTebqKwDn?|?sz-RG(^2c>p(rfS8j=V5Dw5SZG75fgS4>o|7r z;Ei&VhMQ~z#!!SF<*G)9?IKx-k}!(1;r=fpa$mzkGNdk2We*1Cf4$0DJIFc3-Rxn6 zO3QWgU;{m|{M%yWtUfHvewsmU}0f_`=-pYsA(KlpO|?S zaSx$Jv7=bb9M-M8wW&!soLZ`m-w-}jEOw7|&xck=wi(aHOn8;X?!X6Sr~i6CZBi&3 zSG?G6G7vKv15ysbdKX2S;`UxS&MaxroP6JCDgW3S&TJUgCJGlWo2!d-pZb!*@8BQO zC&V-{%ZPA388FuPk>WO5BKi+QU-hO!|m~Rf-6Qof$xZos=?We1Vcb>bAlE2xI1)y%JPt`CI47;ZB6`~>R_lu^UcfL zuOwo3oBNos60?Znr4;j{4cRB(y2-Pzh7}gP$I2aDe2slXQVSv{EPDrz_8{npYDARi zWMj%asdQ)afZ_}7Q4{5lAuhIa;q^h?4`I!Gr0cq}Ev%Dp8TWt?h4{gG+|`@dL%m&B zh1pgjPDCBcW$O^hj$gsqC`LbHznGT=0lCfsSBq$7vPoaJvgK*ZXX)q1IY+O5z@MN! zYMz%8RUv3Q@TnSM(uOAwWy%=l&j;0$7z56Zet}kMo zeSJT2EIM~XZ`>&=-|}||+_iD4#;;B^Z|AQNtM7f09i43@fK6(7l+&vETGICQ!;L^|FyNEHCX|P(?+hDZ9h4I$q=%F{V`QesBn# z;#{?&OF_iE7XP6*jweJ|?>$rYkPi^J4T0nV&!#SEQMj2}sSv$OSD%(}?`P%GfP?DC z!#Xe2!Cmajq)E-BQUc?IO&JKLGBLm)$Npk56T{%Aey@X4H_GNLEZ z*@qarzhbSQmZMAR{p#Vv_xxlZz@J*M;W8^jZD&VIBHOU>Y{9H8tcAo_%gR~;r&+p` zDtY3~9{K2V2(0gC?vOfdnU=;xACtY~aNf_@dt9v{hcB}h`+lsfJS>jm+%(jNKsnbs z1j_YWl}F38P|d6@mabTJo8YxxfBg?;YIX`qS#@V>IFHz_SETuv&=GGCT_1*-yNSR1 zOnd6cb#R^MqQbvv1t%U4jf4eS>aM6FZT!}wR6Xv zFtHIj;-;bQyr~fCW9*y==lAb89jwkOG3~i}<5`U9idBHy9qHX0^OD+Td=Cl~p0HjC zwJJApegJ`XgAh=n^~J|rAsqX<*<$TV1EA7<##s` zpDkEPW3THc(;3h9Ro%FrxiZp!;8k|_tuCQcEP7JidtOFfipN&a$-rJ=CF+v1i9Cik z^g36IJ$)=hjC9?qZk;-{+hJ$Zt5ooz(P9N>el?Rc)=*w(=E{{@I{)^1OT1A(4NWe*vPFzv ztV^Wy$cW~*zr-xx6bDH=9%>Q&akVaP#-$v+sgV)@9ZqKQ%ej5 zv5<}kNej^_Q^IV$3${ycpm+4Xm2X&5rULhk-8h>-Dqy7wVwyY?afvUOG);=BA(d8^ zj25`gkIL8Po!NIj@mRXoF+C2kbWl$;QmA#h%s86lQ@1I+X*OJy<_P(n4Gt;?mF)_1%`qxb z3?nt(kI&kHm=fF z=~jazy5&Ue2OqxMU>r3H5{BR1uA9jOCGXEXo_d7;2|DEqGwqxioxRiCtqLx$aLUKq zzTzttqXN>aS;YKNM~t9+pEK@Kmv=Y9re7huiEn=|+R#;>a>WxHTF35STN(E?$%IRV zuk*+IEY>TJrmy&f8*E6<5h9Zha&lIZBh%b2nXQe!nFEVcftvT7yovW6aaKQrT($!foAuT=|$D3(?LuF!K{bFcbs69Lq*D8?ze7?YN_lnlodQ%yy-fCXrAl- z)HTOw&5?{rK3>K(RB`9zwRhMRC}$_S&X~2FoDb!#s~$>Cg~=Rb1nSJiBa>#IlL|)X zN8M#+9)C|NBr;rIp>JVB^}m;ukl~qxgfXhuO%+ZNW6bMDHU$=n->=!nxqL$0p~Beu0yIKoHZr4gxfiXF;zqlt`AwFufJhYc+SV)5{wVUFxp!3ht{`lQ=lmQ z(weg9MZJp30lUFX54kjz73LRJOk6+B_N~R2hvan?=ZMnz+*E)9ozfVUulGdZCc(-1OHrSaLT-VM)Zx(A7r?^b9XB;E_ZtRB0X+?T#- zH8Q;GURj*JFv0OXC5x}Hp{1Gxst7H1?M8HNI^%n{&TmiNOu5v&|8lz!GF(-Sa1E83 z^2o&ndmI`X+8SU4sQ~{rM)d2*6galv*dnUd*iekKclv#S+V%G=Ayb=hRA^Z)=ng3- zW3Z`@9a=i*(aOP?s-rNM(RLuj6%j8z9WZ!6u?{Vv?*Vm0xZ%sEW~MtXAB6eVfBWh% zJs+!Aj@|&>I!cQqu^d(MwbZ3y`M2fPb{!_&8rcSE+_<_?v}&KSXJ)2{Lhr_lqjX+Y zqXsib`J^(FpftDTT90ApABlUbv%^xsqcwc7=##2oT7wS())cdKc-(QvKt;vl?l6IC zKd0x@xlcr!_t;`d?{4iHAQK=7tW*FOU&H+< z5j8A~xkCzcks0J9Y^6>vM1SM1igKwrQ1ZT&VR0a!dUC7e*-3AJ{s<|G3P@Aj72aI? zZ6A}&+okj9+;C}Waek@n=gzKSD|FJIwkUtqLH(iSq*3xzAl1aSf75RUcj9q5f0b3B)YLHegS6Ek@My+gf(lr5 zV=6)$e9~dBvK^Q0U>0F=C0t1%dH2#fc=CSliu!a14&Lc153|8aAAi-~Gb}W`7 zbp%Qn7U2Qoj|ndg_^3dt3>E08$$_`tL=ztzp*l#1xLc|{mbRFYeUqnEZqsVr&B>?Q z0}VJzKb1eT4E@5}Vtl~2VX)Um!qL_GbIrxO-`y(?ds10z-1?*IzIW0T5pkZuh!`M@ zYtf+sgh11eqn3V{3y%?5=J6_whQD?njZ@<9nwd<;ASIM+|B6@_$;!X6bsvB=!J`j$KF zFcd?7cM$%A3JCELf5$(MZ&KWNDEeK(C)N{`8j)v1os<{D@)#;0-I0GwR_WTzdW174 zeZ{Iet@1GY^v@kvJWCKC@f%B4Rh(U5s9N~%)xmBLU-5g?Vo9a~GM~GoaF3_^X^`6G zQRMMF#*??q`8@b#Lky%HEL&Y2D=)U{%z_(vwEwB)%Gmt%sh0)>>2hix;knYrZbML(8;?-gYdLuG8w(J z{CQ8!=Dw|mi~P{-sg%dag2Rhl7zU~)Vk9@&NLvM?g>9XtD8xKmkH7FZ-KEM)fa#tzyjDp#8dlzuU&j}_x9 zh=$w?Fi>fohP8Ue!fTDx5(aq2kAIpP9n=dSNTU>}Kx$U$`?;ZE%Y}gT#HPKvZaho1MK?x4M;+`kFT1 zu@rs*2bQEL5v!hzsQbEHH8Y!H@+aTtvcr7>KlGMrq5@19&lVjFAt)vV((P!kb3sdV z^R2?=(`ma#LC%v~Uvd80%O)eXVsjSlgI$~+cGmjE5IEQSj%<-}^zg?r=BUFje0EUn#1OZVWY>=!-XNCmk3 z4PSwJS}-8=)HT_y68S52nO z`P6VKm-*g+u34eVksV!fx6Tc9&-#vX_HTInCTx5D-PWrjPL8dXcNfnuxQ<7w>dXXm zSZdU3QlM2`4H`pKK+L_iPk@-LnG&_0S6*ElJ%QCf`!3GH(i_3C&AWlLcl|_bKyXd| z5;`U`xS-(w0lD4+C|kp14lv&x(XW}={|wb*hsgjBag zaSQzdTE66(RYB_TPVmkdDvEw07o^*&!9XdcHTZQ*sfFYG^_ERWxWp`HI)^kiXA*}= zZ&xx8j9!G+5A_{h&V~0X5EY$6>-r(HKO$SRcx31~K4+ji&ha7Py|NDRQ~-}6Euxfj zm9imP`@YxwK|&86ZzzC^FQE(9UgwgFkzJw197MeaLn@HB_~ayq3M7jd+Ts}T4Z%c_ zT$sjUcRXv)e#Hh;vbpDM4sVxin=HMq(fr=5IId?b38WM~8$dFM>03f{ zc6lC`5IzoSONy#ywLeFfiFe$G;Qv!AM3+@o;ORdH6nZ9y7H03=_YPg-3gv#QywiC@ z`FsxI90%PZqduv;CZQAl+0v1~9sATL8%vUP?oN??q?R~qm)x{#V09Z<`(275s@ zMNX`9q(zBOn7D7pIf=iOEB9zL7pt|$$qmTFL9mv5ij2%C9O>^Qe@bt0kZ~Mhp_#iz zR_OmAQvSnX0(Gq?zO0+coSy#Pa@I5uRai;x7y4fG@bm zVjg>AjF4ql379^8YdZOL^)`6!Zahh(q;iiRhCXAg1AhjI31C}Ax;8116(7*(c= z85do5wG?bi?>V@#`%2#AnGF>nMCvItX}!R~g*7wZaJgENIWvr`?>%8szdtI{wQvMW zH3*?NOv0|IMR%#<&7&>5oEgkEmBR$Q#I8Z6o9C>g4|V3Mw%dk1Ed75E6QfDkAWRk! z(OcI%w7zo$Ddoap}%;7U%E#Ef)6ZRemZUz3rAEF@5Hli{Dehr+Mql zETLK|`}hPo}bF?t*F9Z&&cXQ7t{fhqlV?ZDQrx++$eEIUn@;WN6gHNy7(I}ezUs#($1^%EZxwUo}auZD9xw!&^i#KKgTy`OMTKI z-ZBM?5M6t{(%{;^cw7;Io#1zIbFE^|j>&rY&cLaSl(pP5VxZd(=k&{7;x8YAi`I2y zYke~-j(X|dL8(v}uo#gJv=phyHbvUc+l6fgT3Qfmi3krO3b&3CHRs8`{!!JH{$%Yu zg*k@oPAaThoLOG{O-5~puLQ^RVCrvVqzQGdB zogqf=fZvDSYvH9a0uq)Fv9c}-4fgUNhm&D9q(>|9xl3D*3ylLA6|_VQFDyHMdPVBVH#hspdNx_k72xeE0hhYzCV6Yd!3i ztl-4DcR0<8As151+549Xh?y2~+8*WvsM>VH=8)43HdN@>SD@S0{n=9NHU!BKm+brZ zdR*OwvZGW_7H03PskQysVHXT71rgh|;GF@Ec%xV$`8>~{*`F6Sv{Fk^7Oi=Wdg=oK zeG*|&Q-Nl`ma6k20c1jD5yN7KrtF4TUv*)bu(YJzNl$tB_srV+~qOVV$e!5Y6}+1=4>&fSi^=o zXI1eJNGSZRxm5;}n&g2U<*hywQ+y594hR|t& z=m%=a>@J4Z@&CTpv9wU_gcG9DO@;&|{PpIZ5N2aePZS(>>rEbo2C6vaUC+799KHK&J$Mi$b%4zl(3N6d}ef z*KT)X#OGj{I&8MJ(I{pKhSo3lpoo121LqUfh3(M#YlH-g!3uC!-(3^qnMQ??w75a@ zmh1W3m&BA?Yz??F1(hD|6^a-#5e0Ki9U+Oymp4fRQm&INwR}4<@f_*;Qi-IJ0#lf^S@qGj_>5LPFKv#OH_wT@`S7mJ z+-@Y_Zj0V0kRV(L&Of(@Ns~Ac4DeQ!b}wXC;_F@92-$MD!HY?S(iv@xZG6wOCt-OK z%lpKMn;wGPzP@2z#pP!w+e=jnt}TRLzeh(izjz{z5+-P;Wl@1%B_jOsu)CINYg;#~ zO4^MSuNS%6f_cJh`|`BxGK{IkHZOFV z0>)88RA8CQgUn+|1ujxTYu|6L9siak=5sYGJvGcy7jxQM_E6<0h%b{0NM{zUTAGuZ z%x0{%F7ZS1EO<~*zUI`V07e|vFsHc1@=j~R(c7;+)UB_g*?cTE6y@zX|;kw2v*1r;al(bH{Da=+kJq}e*K|UQOgpgSDOCG`*0y~D2i-lFdmYskra zSTGs%?UKONTKCBFDF>XZYXM_KW7Gf@SiXkd+{>+7gnPZJGCZI_YT`A$#7%Th*+n4m z)okECMm1|vXusb&&ngEeEJedYRH=Pxtt`c?)@e)c*}}p@r2T04Za@>GHWhdv--i|M z#N5^-zF0!7?7L{{#c_>F@H(zuiM4ruuVN+Q4$_n$`OY=F2#4cueBGN_ zC%G$J$PbTdfseMBNG-=#Ep3Yim=M7v9=||wn9zo4uRWxQ@lD+;n-K7iXn)8ssQ8l@H7fP_=+rcY5sx4M=!@({=wT zm-bNh(=3ixv7c@EdEV~zs;UAcLkr}=--{i7UZDcp4~VG-9HF)Uc|7UQ&g@?~m;1jD zB>wBJ9-!O7Vk;DjK|d@V%Hvjf!Yrh=veJY#$RzE&@lZ=j6Qg(0Kc{&UIs}D4pVXrJ z`*!``T-ARoFz}De+#k6rpS~#2GDlq#Zj%=l^Q^kOzphSg(LYapB`b~!_~p%l@!+2k z1Lmm)F+8M2K};e;1|FQe=kKg*ARsUbR6rXaQe?D+^w&ZgL=(hCEygJhX z(c=he$n+NrF(bf}VyaA3#}VsFE)QAW(^cllZ|CG0wtTj5$(^`R7+_8@X<073)@@ps zp!LdKj-!b0?Bz9N*e`BW)5dKt_l=AvyW-Hc6UC#-Zc!>{he1V&e0Dj*f0uJT;Y>pxVH*4~`3xs#9o zZ1%O=q1|_0k1WBWX;?3MZYLeNmv%*(oMMbbleU(1^ER2E_aJEBE%f+Fm~(z0P7$+N z-fj-ffV;YKRw`wSKbKjuoYK%ooLd~N9g~EWr?WHLVz#9#x8{X{wI+EabA&FUX@W=K zM$8LKQFbMBa*Wy@7OZpNp#oQ{R86kIc1sbBw&u5|zVa-fee9YP)1`NRKA%XNh9~`8 zEl-}n^~A7cHnFM5i_RUU8u^2Q>IPqq)h7ID5IGcM{2DQM-7iaoY&x@ioe|r1;1g;$ zq@2YXDY*Wg8_t8=)E<-t(FHSwMN8L=(KGGdV?p_xUAGu;*-I3_zW?=f?14a02C~-b z)Gr6H#^JY@9;V(4S40w+*q$Kv;2EpptP^Wo(V_^NK(X^_Q~<_6@(W&7cQfCb39V%W zyU5p7$^O<`ZgZy)tJds3j{mlg#st0GUG*;3lpvo~sox5ga!B>5c0`@DclsH11s(fc z6&RIU{(FtVe{s40G5+zF#9sY1ym0$#iVcwpXyW&00&)a`G(%Ypd1E`*EvJ9_cu)a; z#-|_e_d_`6n4z24UblLmGq`y!1|bPr%NbWbWt3zxYwkG4Ff;k5 z-&QU&6qlGOk zPFV~F?yi%ndMw}|zI_NU73fuzN~;TbflE_dYLXu-Yw;Cq;+veD{1G_m<@DzI7f8jf znEo82R$axCaJz!9UU28Y`uC=_Dxu;Q_=+-PipJch z(!K%T@TGA}Ap4hvCtVgz#E;EhNu!)s&srclD>tY>+#LQ3T6cLA{xHq)S~2?k9_z;4ZdC?|j*5m+f^gYnB5I}xzRV_W zc2j|=o3*H5(muXu&sXd5F@9bt3i>*`0p-XF47NWMplQ`r&k0^|ns)WmS#u$ADNJ)5MY<5IN8*Vnw>jv6`wL4im{?izP$_y=D zgH=ND{?6e-ABORnhj0hzK5^*LcLEJoC=UwfMzX|jYhsi&o5MY##h9PPo~mbncVO4_ z8j}rr?R~EKzk%_XQxBwk3Bw5PDX#0 z0(h?!5#BX+!>6dGKrsa?IpiW#B!tt!cX+&JX+Sw&73O)K&qfkn&1s%4F$#s{X!aM$ z_i?8z+1Jz!aYgfPvM%xUamwaCZ+t9#*b*nnLC^+zM zo9}Ax<-A#jrE+?IiM6j4(BD2y1s)jYFBH)C&063k;^G<#mkKS-s_os_;*E-ry*R?r$mJDe~LseV)VpiK`IF`HjII3Pp%7SAmRE{fCU{KdLo+{rB_EHbd ze))}`)RUxmE=D+qEt|!Cm;XIvH2?{F4VRjfR)Cc(cF->{)7BZ&yHmbXUh1$r;Y;wt zHv-TiZn9z;5gPpbdSTiVVTA($#*eo{AMT#%f4?EeUjbJTNR?=eeE9e=S@$!>D4C;+ z-3ZxT_8nCq*^id_1}_aGX&Yn=XzFufXszpTuqRRnIZjGSSJcE(`{?AM$2r2osbTbY z5{|1zx0OcIYn1oa7h6-0a7{l4AoMrD>;1oo{@N*Rn;MHdJ7dQQ*XzK0V~x#G#Dp#{ zcC#AeEZg`CMyX;v6H)Zg?FCREowG->jAOQ{ciQ5ePF=71q)DBzhn=@uq4F{!U2AQM z+rx0Jj|mdJs|;3xT0buhE=*!r!cXr}0iO7gF6irBI=T7vrhRGR(Gh*1IlQUOkBKaF zYZkfu1V2$aNU1)2p`7f)p8Pc*%I2?utXOQ5QygFop!KtZ&qUI(b9}2@ARH=Mj7N`p zC)J6BoveD-slYALh3PQCwISHbQT$AI{LX!t&GY=synFq$3t!KO-j(8ce*EoeRNFNf z)^O$aL!jrCd<7OQ80Ctd0SoS*@-93*C>t5xR{|2QmA${RckHSSQ|l{$8fDJf>`I@2 z&5HI{@0?$tuq-c-m-nsdAQAn^Rk1D{+Aj88hv(Kh#ng3MxWZF&6WHe%$9@#V5doW4>;Xw{ss!Z+oWoDMkhe+D<>b;;6jbZ} zH|GFO*!v(fysSbjwpU~~U_C7O*aL38lB|^2bVxewMbSQTCT&ja9rHUYJ{usm7n?Ti z2PfN~@HS-21`KgbKqh-LOyM`RLi=c~TkSbXoMGErw=7Sy4rGt5@v_ArgW0?n_qEMA zHmpFQke}~{{OXs;Z(Ii|nY=XpMi@Hyazn;1_Vcm@52{$d7<6<)(p^Pz>~ubSt+`io zoIbF5`JUg)>RmRa^>ErcW7Xq1aQh7ge|yO^H^Hoh=;n=Zh2j2XnFN+LP8PS2jDsUF zRq=Cb{$i(O(F=@3%*`_;8<%?rHa&?G?BPNo3IRobLVZ zoyFi`pY2W&%fU?+M=YCk=7L?9A43CktH^PV7-`@j)4Bq0LGWP!`#LS##@j|LqKS`q zn?%ow$LxKG<`_iMX70|<{EW98Y?jVulTkIc77GFso^A=4F5EfWceS*gAv73LIxL=B zw5L#}DZLXdGp0MTR?-)F_X+bj%}25>C4_JhcCOWf=t2cFAt&}-B(ZNBa6EFSMxLX5 zZV5EM^Sq|Je(^2=l<=j0vz$2ZX;)XNJ}n_Ba4KV{l2|$F$oc-kZRG63rzA_a(i0Wa z8f^Gmb~>dju8BNCkWvh)4KV@ zb1HDPgX~QSR!32Rh^L^P8YX{`_yWG^umK;t9!Icpwd}mbmg`n%MJkXAFE48#_2EfUdk=1|BnN-> zkk90J`VML!+~==C1)h<*2xliF{B4I{-31OJc|@8qcdlm3`z#cMQJ{td-Ez{zKv1e_ zX|q1w{qU5{I1W>0+)R2ED^Eh48(YM$hM0H*Y=3*>8Rlv1~5+_1qhRLa`zB)083!rW?_`)~?LtoyR7YkINMfhFv9R9$tYF%)} z^L9~`Vf@6HG>D}fnW*~N3}dp+1%_Je4cQ!lta|Nt_O?fJ|fbJmJf zix=p=K%nRt`->ax4M`1m$bl($+Xd;QKC3)%3*P1 zr1URN`fs<-Q-NoflhD{l!Ub9{PbRxuZYO#!Rxa=R%M5t36Q6>Ics0YOcNIr34z*gJ zwA&zp=UOm}zkU#se8;Q`);l5i&~?mO|5!D zyT1hCa_A4bD+wEqY(^z>WJdL-7~K_541R2Tz%jYwp9c79>hev~K8L3!-L%-u0+QP~`F{m7qg0O}{FfnT2HU zqQ>wSv2hDV0fy@DrF*stis8)z>zt8S+df0B(=1%>SSXcl3U#OZeeMggWPfSM*)08) zx9i9zQ3;C>S}(dg;Bg}oTdDSHDCFKAdj?73n9f#J^@B`-Se|>3E@Y#%x4}QJV31Bw z`wlNXiu(febtDy_vqYDR@Sm{kbtMT3C43wZF@&5JQ%+zjQEN40=vgl(E~cNkce(X( zqY_qINtRSe1+vlPGAxB<$P+{aADO4qPrBkcc8(sH<1Ba60-jTWI#wQX*&-GARODWd z+Iv9-0^7FeFKiqhen%epQHVnLk>>bW%~8v{1~m^W*l8Qhw)I}GELmrDs`>>CJ@o}M zBOM)^s~A6%tgrD>fl^v}nS^?KNFo)uE~|8Fd|X+7?wfl(x{HAdIEVf8l`5||LvC=` z=2;Cx5mhLY>W1eVN^Z&{1`NE*INY>9)O4qv<6zR1j=n4XPE_G8-!%Kg$So-ctHh8F zVLIJ#&R)HQ>((dWhqb28E}EUQ32_tgor6mIxu3EkL3Z}L7AWnx4N2J#Y{^bTWahqY zPLdwwl{zc{6d3sle6BXkOjXE%vH)M2Cv7~SysTOtBaw+kZ|JlCwPE+a4f__UI*iL+ zE%^2&;uB|e3*>PQ&ge5prhMHQ)T0E=fklpr(E4CAeBK+6ZG=@Tn~cLn1;LiO zsZPx2^rx{-tjI)H`Ht0eb!&UOgGMS4XB(}r&C&DoiR)1$9|7G1?-5ib7@26EBxaTu zSA@816nv#@&Hgr_>&Xb}9%dxRJ-Zl+lEO3LAaU}IO9Mn_V%)m&x2g7_)$g$vZK8W7 zv!gN@9q(G1z3AH1L%vuv5FM;bAaX2)MHQ|G*uft(U2+T7E-#DbPApn0lmD2jbfVb_ z+OM@jKOjwzI)_1$@&izu=H3-lVCeblBQF9a)f%^F5;r?lJTF!(hL)0z`ec9WTe3th zjTbo=H5OJ($5T>M9$O{J90&Sy?#hzx5VsGYMu;itNO#W(rPBcq7tm%@AT^0l8AuEy z2D%l&UM;Sh`h9*F#zPZX@QE>)#el<_qRrQix$if!WMPdTdPXWIL}qh`6XuG(x_aMn z{QNm8=kzE3s%(qSH_JN}$`{eRq#uKIIhjt5&P!ws3&Rd8h#t_toU5DheT{EVA@Tgjm}qZFK75*#?)O3A zJHsz+L@cJ%VwCUhtE$k3D~!CAMy()4oRM*GWQKy5#jsgtgX`XiF!NO1LBi9_Pf`A2 z#*=T2QUn!y?k#rbS3M;pVCP7SWg>YzZ`8M-MuSu!-Lwr0!3}|sE)_&Ui5h`8?by*bHO`-g=E3Ht z*qjG6{Tu?u?o_uJ=a3ew(&Y271T@jBS4!A6$9dAtBrIDcX3$ON!ZX^rDjo0LB@82z zpTRN}NHnF1tEsxHD8Io0Rie41f-$z@7B!?))LY^@u20PFl(3P z+6i&6q+@?!snh!#>6fZwNq6Tt*)!TPeFreHDwSXPU&Rag@d*5n4%C`#GOS8pZQRVU z->l;nI``+hEv|&kjM2I)MhTI8J5wPIC1O1-`YAUS-iKC5WJGq#S)rd(fz)6^@4IEx z%xR0$%j@@TGfXFX{bjCw94Jcw&+@&=xw9*%-&kT44+~h-Dj#vNAARmyD8a2#{a$Ks zQmyf5z}!E&s{+n2#^^ILhTX;rC)yluCy=I&C1-lH((@ee$KRP>e@v@K1!ADZl)rx%Dr95Dz#K4lThiPBTa79)gkbwbR+qK?&p?b^6y}B_pPanL ze7e<0sbx257ul}QPsjFp@(g*`Qz2?1dT`gKOGuswzM<}p4~J*okVy9W=E=9GiRu%CWoi^N9roC} z*jBtS%B*M#0=jgHSd%X>6qY+1E)HUWy)JbY+i_!hzv-L9o=Q1m@ri zQ5b_m$eMucn64~)zOZ{0*NfQ1q`*sp4l?xkgiU)8ZNoWBdHYpGq!+Tz%~#;NYtOG8 z0-{Kl)SBg6F%faPof4wy^BxG}x9i-Ov)%qZb#c_-@;s%SCbZN z+YVJZSx{Y^#wWwpPZSjy+K9QTFJX7?T-c!kwDv3kplmL=G&dFeXo_MA_Ru#B6*n(2 zC48#syGjleLa^T1E%HebCI^Q?;cbJ04lre+=saLv834fn7ckqUg9MZJ{F#BL{9=mH%@q9*{w z&a2ZVe2v&zt=c%_Ahss@-ffW?_F6TpIbpB5+H)(b&1_Vlh*Xiiy3^5#8}C^|-(Z7D z7`>5BMx049O?$$V(+2qKEG*pIZ1(h+6l8zuGd*F$$09AwWj)fw8b8*ocwZ>kjWIpX z87i}Q-K}-QL5tD&s)N*OGFiM?R7Lf3tojj?S5cclHP89&`;T=I``K4dOZCbIR-%e# zEKQ}P@A;r~LPJjtyp@TXWU)>V&$$NWv8O31Ck(B=K-`{BRn2|rgT#%i5D~_unEvuG zIhYLCDdvJv7#&w=+;k}G(1CN3Z2c3_7cJ+J&(2oYY`V{TzCv){GW3gKr2WRuQnEIG zbz$kH8--8FA&Tg^HBwlinmoBup*OE8o~_uWq9}aCfw@0KdksOS#H(?D9N}=!?CBiS zG>NqGJ}bJ2HoPCO z|2ef3y0hJMKK;HCCMIv#X+JrU&3Gr(&iZ5Dy~V~;LJet4t@~t){TXe4<*|??B6Q~# za18XQpk(?!FUdifvNp)K2VX>9aeZrWcu3BBWhKXLwshI4Nxi;0OyBxe#YpXs-c#~0 zeIEdB=;|x1ORN96qul=5rLC%{gAd9H`jMhPrE|jWy*W<>*|G=7>{Wb*V*=7# zkDhyPQjw?ls9~({froL);%#eW$lR((j_bs6I59)pFMyt)dZnX5fi;Bn@zXuEnpuD9MCglXMK-=y4UD3|h)9k$L4bjev-)BI^r5`%IzS~6WZ8=eM6OJ^`I)8Hy{XtL#ac}>KaO$M`v2JXE%YCTfSjz#|tO?=l ztU1Q4x=s4iynuaXYrr6KemgN)L3arJ>6MHIs28EL;R`NXENX_PWhodhkFwAV36CvR zbweGYbF~im<9OHIT)s}ddL8`fIzMI4?WmD9=A@m7A6qiV@Jx)GP)|C{>WnTsThv~c zce^$w{52Jjt93c%l6k-Rdv^4HImh--!cYE~-TZUC!M_`b@lI9_|H=GmJc!>Sgz+n9 z^Roq%h>=wR6;LLq#^rDrj_g%ugujY@!jcQN^u=?o9*gA-t-BBIVcVD^qa%=eQ@e`( zg&T$L3O;^=Nfcgi5NK8M7l&}@t4RcQvshGC`L*0Vou?6p?Ibt3mi{)kCSl&6P|yZe z`-@|(sqYy9_+UrO^+kLe-MwHV(vR|yZ-yzFRqhe~(jUr3blf2y^C>I^eUnk0UTs&; z4U`FH?sy%8?D38nPu!M5q855)7>`u0wG?1cnK)2jgn1&04an= zmr;RE6-X>-!Gdys2(;GcOa*@9A&nrGp;RDGiJY(wSt_6c_^1Rd{ZRru)V=SxY?2Bz zs#5_8YvMF~O@|8D9*_OIEC2o~|DG%VoE7w#&~55JQrpCy;Bu|_wroQFNoa*=U2?U? zJz6Ltabarn&4U9^bGNH9rBBc7wLi|rhu!MY9FY5$Y317giQfA2pP2t{z5HJ!UH)}e z=Ku8OKeB3nu9EtH%V_^y-|cUqdH*V(=l?Vt|B-h8IFtX97W-GW`j7PZA9?nVqy2OB z)c;%7?O&FT`0p>G_kTLHk?-Z={S3!{{ZQ1-LHaOOKnJ`&xhnI!ueI56kYK&apuO4UQTAA z$V)#WC8z)wN{R9VN(Jthxd|jIfWD}4j+(vJ1)ci9>BiFR;sFWDzPL$qOQy zrfX0E)J=G!kP=}Mvd_J}l-^GTj83jOlw*WpTP@q9EK~k=W!tjPq-RusJNx^=og`mB z!5|-b*<6;@gU`n$$N_T2){C(6eFfxa>(SwouGKz{!)eTPh{yi9>zz7rFCI(YUKUVR z{CIhb^~ayjJNy@owxPurqFt-pxiM0k@W@^@rF~_PlNz?GExmASa5*sp^T{$rPwZovib7|Rwvxr+=9Bra>WonYl zRDeV3tf#$07tB6$8dNM)Me4*eZoHpeSC5`$Ix;o59gE)71q;?!9Z0L7)fKW4A2}Ab ztc7|u1*}6^KDJZNkSxtMk8ljKR3OH1vfr8Y-cN!CRA;@GmkRKuJ>2rl+2rlkvbQ^e z?uxL>!(aMS0fcYq#_aTN&MzmLz*Kh%3l%WxJ63=PDTmm-+xR=`Y5lD@`VLLp#<{S=E)|O zoHo*%oz+FgU9R7u0+CdpCf3-{&GpUS`o4cfRN8*1uT_a2#sz`?qA)d88%V_=Icm$z z`s+}DHE%F@fr5q%ulgF9iyL#r9Mvct`_7Wq zqsRfzOZ*1wHUB|{_dhD;|4(N_|LG2|q3V+OzI>YGtn(_YID-aYl3! zZ|Juxc|P$Ve>Tyc)2y0HdkVhsac-y2HIZyfSdC;KW30LXGTN(5AUzFu3X!qz|0{Fm zZ|(jH*6|dTs-gXqLj({*g5)PA{8jJOjFqD zVtJb!hREx6s0{>3bD12nGU{|^PDuDbj|zmnfc@vA|65u7*RK9Cbns6P`5D59+Hai* z=Aenti4H389x`vfdU8HsFMS1BCr@8dN(E@bRd;PTwro$>FEiH9mU!xo@+8BUi`9n9 zSd;f|F3WNXMDK<1)OuCM&Id8w|3g0wN$H(xgVE1PDcX2O)&slR)ZP_qR{`_Sx?#@BPmC>)t<;m1M0v zbIvixGv=7j1d9rJqH_T`P(0Y6CuYDU_IVLxJ2Ea6)lf$KBZQ&7rB{|ntSgU|lX0&=~?#=fZ`PP*K_sNm~zOuW-i%C&L5k>l zIO0Alv`clg;BAjdyRp z)HTx|ly4@E8D0-KcvV{{(Zg;@KMDqf5z}PGnI${&P$8a5_cn2M9iUHVZH4lK5@6t- zr&-FjwF8Mtn>A7?mXX&K_dVm0RwPLci&u&LNcoZq@PWjr5IH^=a&8Yco9{de1L`-R zIf^P+wREQl^4dn6BXBX{PN&&h|Ca;e-#5V@W~l#iBAe%&$?`PsM@L7=FO0Gevx9q9Afb)b+9p5{+xUDr@YUIUd zgBT4|$hYx~7d@)cSDrmBS7fwSd?2_)*@dEnw~TYqI8dajVR5k4kCAjV0o}IaHPVUU zCw_D@joX}i(Y~VR^sV%7H*c`_Uo@lhcXe1MIJRcf{NGzA<Y=iQEhE81WAmc%#VGwHQo>pWXimt;4w}UMxO&;h_aXS9Sy8TJ0uS6 zzC=cSo}#3?Q;+B$&GR=kXJ?A6gvl2gaDUJoBab9hYFrJj_T8EW4#I#R@(0a1w6vJA zP_L6s9A*T42)?nn9H+_l6QUKd!2up((dLDHU==G&M)V%Kml z?@P=7&iPdxY3M0Ir+xEt)HE4)_D(D{qcliMGpDt15qwIi|8A3XUaS?_`*6rMrx(#b zy^|%xN@&(MeHXpGZXcu6aO4P|`A5ex=tg&7!9z7r)AVCqufo&(iq*r9z+Uu*X+^i~ z;_O|iV_DzlgeLKn&w(ai9|U+F`(U%4WBF*mD!D+?zwg-&pvS(sf zKBAwCs@Vhv4aK83_T@x6XmRYM>65$>?Hgzc`@_w+!S_mx898->>ZtGu;^z1aFG^~q zO`FO(HqV~E1Ouucz}?fyw^QS0P9Vbl1O55Mp~PSGXGx610=!N&ET ztyecyp{6qseGRjZqa#EKYnE;zBn$48az`AF4sN@>RJ7wDC;sGv6Dl|gUf{~b_4rzc z#)RN)72o){1JGO7H;|9Z%}$=VRfNKo)ctsbWsCej z3h-{#9?c;xDR!x(_G~!bIrzdI^72Kz*J}(d_Zq4c#`D8K64JC5QK$IS4)f06=)W*w z|AtS0K%l=bD)H|D?0@pM|HBoU=_qNJ+r5YG(eEOco3X+u+YQ_(DsW`3N>SZ);TfoH zh3!x5_kmJOitv)eBq57oIxdZMWJQr1I)&T(V3#+)rzqm2c%9H8W`LCG3^!_!>3>TM*d{NMM-0kecoy}&41asyz|?x9d#1tFPe?$IkkW(<(rKP zBCYC~*F$dJ`u;@kLHRdiv**fcISbQ0S9Qhml<0lt>m{BdX?S||_VSmQgB@=PRO-+6 zzWRp*pshSr@J*|3b2emy@nH_mTXYX!xsJ?wntJ?EO4t-9(n3W|TS4l?5pCEnt4g>n2BD;*3vgF2)2bEypMjC_A(!s7Afq|xS7|0W69ze`=P+{O^ zKP{*L%EnD2=ZkBLS(Y$hVMSnx!T`en@s}G7L2jkQo+2)Zchk2IJcXQJ@PvUQ&NMuO}N+|vvw5JEFtL5-pD`CE`3l&`aZd_`b*SHQpvHyF6Cw5p2iAdsPg z!fB2b&jis5_BsVQtrtTd%8}~|FfbpYzax}IV}ZS;|340igOwf2)?4|UX#Qgx!`;;{ z;;$#~F8*a-U~{w4<%|~@T3BSOt)8#TSqaHovu@)X{AGnRpw2m#?PD)jKGgN9`*jC% zYfpwO6HA7fuddcD3Mcs&maE_B%fTqRA} z+i_6>eQE^;=n9v%OTOtoyc|8gCx`Zf&DO=SeG39NdmG(g?-Inbz0J zp$fl)8iz3pE}4diXJ)5;eK~+wc4T%>om!LQ?6@;DS7mfs;LSr&-3m9jidpi#=gdfH zS5us+>sIVlq&@XNN+1Njnn4CzJ()0s~4S?;vZmkysx+T!vVzlmG3UY~WLA;y|(EX>3!o za6?p75rjjMDhB3)vg=g7rb(20?~t!#m2(4udVhj~yxIue5yI|u}v zDJ0RiN6sW*eJ{U-rX@X~Ko}5%sF|!&Rv%#CK=VW$4}}82$ZrDIZP2U~3(%HubW zx(@R?#l9k1f_-4X(Mpw_{+&#i*8x>s5u}+jVAV0%Q{YzuD_&`h?pGEih|%n)?bfkKvXGt>d)eL$;WEnPCZ zdrHFPZ!OA}>nIYxm_wJ#kjb6Yp~q)vxW&Rv`76OCB^*kNG7K07f!*$4RYXia>w;UZ zWm)c2es7O!zvr&Qmof{Gjs=j3yem{REQ9~_j6%x6hapqAXdJzu61?vaVJBL~$4?|c zDEbobc#GZ0dbweEgyzYXi-#kAHo9u)DSNYFWy`i(R!<8?zxdeyRW)=f}zKZTxqv6C8trT?*11GN-OQSWOmEH z9#8?gH+*H$& zbn9Zy+mX0)x`g{18+xkM$G4_v(4@b^z(p9S36mQk)XY#VUcrFxHj(+wJw-mUN3n#< z&J!2MXObHIXi9$%W&|~2n`0F4WXE(U)lz> z*1RSWo#Tt_T9SMA2F{r9==9dnxNe9%3j_9FXUdcN4ED`-Hr3pCx-IZ)o9df;_ZJyI zCnkQ5HS!xp9ck0}UfuZ~&p2Vx6q?H;nTLidz; zubX#%PEF5I=MR#-X>BO-fMAQdM2kIHJ~YCRJnMJHVB2}6r{XceYa1C$OVd@c29Kg; z-{0TAiRKYQm;3_Loe3iHjH6_Dbj?skgRUV=RI)m+k-~zpv-HG*|n}TJAVWN z^kujM*rO1m2L?_qlmwa>7l!oFXD~ZB z$F$zJ4Pn-4uP{d49P4HLN7YK~)xCN&1`i^{-*TzC*f8?4z9+6iPEB^W3jki1|MZ*8 zf4RD1TF;=Rf9~Dfr+u%qaf9B=F*>kY%G2?c_0v0wFW@YqC{6N+R1__9 znt?tudjOnnOdNAuAKJ+X3uRls&c4(AZq1GAwt07WDZ=UUyRU}=bst*UBkt(Hz#(MX zil2g1p`5(~w=8Q+0`$hSh->3BLO-DVX1c)ch1T0y+LzxzkQ3!IM`k0Db39*i`pn$~ z=P;wBfF+we?T1G4P-5ifrVuTr;~aOaZ|UKM@|Sdvn{`*r=D+iDFMfcIJ}?0jmbeu) zOLxAh<&fx2-C!P zyY=>BM&x0^lt4Yd-MkmpgM6R*@*#uM_C9apZJXWMa`U)(uGizLttEo_Li{jL(=bZ_ z=?-fPJZagw^@Vk)Z+W!3bNZh2_oewS`eQ{q2>Oy`Yd%b|T6-Vtvx|O%WhBG~Sj_8} z6DkX^xr(QjjJ>A~yRCz3^DuBp@4_+eSMIk;TEX|2Gk3cthIa1wvgM=G)<@UbKL?%~ zDU%|i6-?jx-_=iqh>h*!PdZ1m#RnM<_aB2}t4$b~^P>yu!ZcZZ=e^%uT zn(-|vO%qmynnC`Kx&m_O+>1?5#F06M^{bp77{Kg|@m)yoO$hm8& zkaEy-_tq^GL%~x}uIZ>znP!9IGp9|6@O_=OVLz#R`%ZCv05Oz@6B@23(v7IT$uKas zr=lb>VKxp1d`?Z?`2+*a4s{dvX*^|39KDuM4k_TKbx_8PM(wc8x&;`pGlE_eHgUp?)j!sRSP#L}Zh@IcC2ag&t3k08MXkG+6bz zFmSDtA#ea~bhSKT3`KphJ8r%3PN#i?yyIK`pcU(2bDZWRNm_{~QXl-Mjo{)3epNpl z_3nVj&YH+!7&y%xs|_f1JBf*Ajk+s1KOTSdI_PD<$Ad7CP#x@KmDwZkFpz)Tf~Cda zf|Y^eC3KI)>R^kv`vonFU_eM{9tJ#5O5?^YFX!B8c7A+9-tfXm+&d?T^%;ry0ZDgg%UTT6lx3dI0 zzF8ExtzUO(T1ctqfyGO*#QdvC!s?z2TovOKOT0$^k-*Bpkd7PKi*5QToX>`GtPv`d zY?Bpy#=7|LT0>)fJV{OHJhBPg!Hj{|;=~ ze7_Joyt;^B55Wq(sa>surlFT7Qw@_ z!$C&IDP`$QSeS6kmxp>SmZFdT?W$`Hr>WDDg>TBxoshV!awSn$jNgxTLFYB^jdsH- z?{!P~+6P~4X~`kCah##b9G)IP9ODH)W@$XQySNkD!&ZvD^hhvdZ2Q2~hZ0YQUug@5=?jmP>lOANI+rm=LcB%htTiukWIoBf z!R@QTW_j-0Wi+8ZU!9daM0jHUe4@cNaPQKTDLNV~feqiWT+I6i7IM@1ku%p69v^-xD1 zlX*BUih~!!mC$v+^wg0TU?7r6^Eg^Q{z~6zJ*{55@kQO$5HZWlmm|HkB272+I}4C@ z>1O(^Z8*OWH6JmiES4xbnqbTxOD~E*8~IV=(UMsds4|`|4U=jKY$bK|L%Uk zf&8ND7owlHXKN4NHtaGT-G2dW4WNE5GLij!PyRED@$**^-Did}xlTJ(Q7zflCU;W$ zdYN(i-y3FmY=3}_h;dzIOiIpJh3?RAf1iXBMNd5Qw;2y6kFgqaEC^+Vg6X=Niv0;- zL)|?0ynluJ<4`=NoMzst|IpDWao93F_LoZ$V8XaFL`Ak zk&@kOg3{OI8quoL(D&~vEx4y*_!th{t9V)_b96S{bG?=@Q=nB%rC#98SPh$P^i~!> zN0g4{Zjc)FPv01KQSIzCpot@=vb4uR3PA(6IO=nyqnV{=Hq4DdPbkeDT!!3e*z_6P z%yG8NKW?wTwe?Mq?MS3&U@d;_jC_}#)jxVr^Oe(>4y*O7 zRC*OY`qa&+GTq)>OiiWj>zQRsC)ewCYcv%L7R%XWt_Je?Q?rnN2lyQO)d+HM`` zF7**TQ12~#23h6NGl)S9y=IE9Lx!%j9B$+3uCNf)=oG>j5&>~J1b08h=6M}KqhrF9 zyRY0yOiEqQXkUZvRarP_Rxw4= z9$`@i*H(+%;+Qj|%vo)H_pC1ar6kDC%nm?SHgH!+YbL2N-`=c}$>iu?d@CzoWTzW6 zr!~u?!sWDfwYH8#zhqz0btegn$B4(A^|;!k{?~u|$5`CFFx8Q5| zss4hBn}|77?$jW;_AhRif2@%@!T>(~9H>50I=bM0K&`yNT}SFjutx;xLH813z#0bP z548vX;>{Oflj_dSW+Nrj?aFj+-KTsNvTnR7JvDzQ(3=`<(COfy4-$VU(Q?RTb0 zj{;Xzh3@|Il)lEU37LG(ERZ-&q^F&}bcB3tN$j~*?m5avCNHh5J;i9~FpdwIFEI~> zuF)dDZsgn(C$!EXeUo)oNpsDskT1Sl|J{lP#=W}q-NDD0;m%3NBnEWM;Iz4Yg8`Uvv{;7!fxr1^X7?xvZ_GL;2`i0Ef zg(=lV#;Pua@J|14_1~8`C&>4Zwh*G2q{3hyUu80VNvFZ@$b23-XA#>&5TmN;IEHk} zakIe5e4eWB3MR%A_voK>5=*yO-EiNTNEo;vl;g1fz~rNr+O6C&9-(@=-{4I`-gWgb zb~baK#w!^5_}#8}KD9Os)P#Zhm|Pf`)*vXHc8zNpyDgOv>AIR=&Z8-UUWE8C`BbVVs09iUP5Y)|9qE~ll^_TqtD=%2i;VYvr zr0#9IQk$$|4sDYx6Q?4xM3x04RO%4@(uf6NL`_xONf@}2)2~1csnI*{P{{pRyklPm z<0rkz7dTyI-rgu;-uc?8ziXQ6IST>>CvBu6bvqzv+e(u3;z><`y;ylhi)7XnTucd z-3WiZwLUxUD4|k&aD-nBO&uZ z+yYo3l)fQ*rQAHuN-+x|Bvu8*!ho+_q|@(7gQ-{A*6aOQ^b)f3BXMtfPprPvYqqD1 z=q{=n;IRCdaiIFPJLaf3cneZUAHW*0KFsNv5b}p&CM{2bQ;F^{AdvFe=a};&Kf4v= znl4HXKU5AzQcyJopwEKio9crT_MQjb}g*V8!cx`U_dc8I)BlaCOq)Fwt7!l zpXn%|9(-F;D^(WledF`9n6ua2r}u5XZAH5JK(`+SAgx)RbqZ_bdE6Y=6N4RGeDOXk zRZlCUR%@L$LEJ>P;Tynd^b7Nreq-?MN4#M*b7{)_YN_OBk@ZobCB@1zlM*kRZJ#r0 zwRm#8m3g~?v^;P3GtF~txQ8!R<{DsN|EOZ{wl%@c=-NC#I*@Hr37k%wI z_XXwXw;ZG<1P%PuL$zQ6tWsm!%=?IjMjKBGSUm>X1sM;&?9wOGF;`tO~f4Z zX5ExZIQNHP>OX_$;xkwpmvF7=KHI0_Zw}QzYAZeGy&SOS_7v$h`ADnhM<=EGi$jk$ zTL~gI2u%iZEQc%^6;}usKH@f$h$%dCwox9s?&GAvJR*H)g4Z6sz2^BF-m~lcXIX?` zXuFtnT-mxuqs&eYaVsy<2jTG8v+V>mY1()K25{h~Q(h|_Zf6XG6mB0^bhUCaI-7;N zM-<}jRp$>Xk9Sp)AdNCPc#Th$p0zUa*JjU6a(L(y+a487jq-I=-l@I2ew(fFIAY|M zFJk`qENao6i6|FidMs9&`oEK`49e1f59ZUo^fwP)9r@B7C21LT{#A^b1>s@vVZq8BPxA8l?rr@3vY*V2UCW`~NFNtQGPqSb)K_ty?rWX& z{y?iRxd&&#AoVhrFL`bs{)b)U-)WhDbUpuvcAP}4wX@mSdqSOMLW}R(!z#)&>JMZG`8smLFO0YZ=)I=OY;J9*n`j z-bS4&Cv$-v3i5soIcy?{0_jY%Hf#nu3X>W#_6swd@QR@{tYJ{+E}v3XZ=Nxtr@D&& zwnIe3$;Lbzg0?$);}m-RQ`BgYvZni%82vjVqZ-AUPbobj1UZ`{e&A#_7XoRYkAvwiCU;y$0*p}@y);beDcyIDYfwl-TsY0 zmDimM6mdVTP*G$V5|`5GL$GVdAXT#UrQADM6-YN?_vzevVjLTlh$^HC*zC%5tyejq z&DooY=k7C5?y#>@XC4!xJ9Ml;E`_)fORupsn-k|@Kp$buVq?uu1Ym!`lpGMsN4TGW zfn*Qdlr9W(vLMp&0Lv_hz(xs&MHUz`MZVxAG~;>j{3$^4207AA#rNaqNPz_aTFhg_?(0< zy-LVI;f`4b)QQrsluE;TPyggwl0q+d?9*d9k*I zDo#R$7A8ZL!tcMzI}tQ7ra{Ox{mC?}JH{WW$a-rF?AhKG8Nc=Q^u@c#!F)$2m%HM{ z2dIh`9UGP7PHLg%*^=n%LLp!q8ytxJ;%Uf;`4j1My_L)V_SvJI4cn|{1^j0*9W8zO z_b(kxBxQJs6$^yxBcv!p=h7UBT)A!DTj!<1A!GqGN2_f_zUZCmB)mmeH!z_bo{IcI zEsf6q7dv}??-lwZiTw}lKM9z!6|TgTYLU6gl6Br_Sj3ZZuHyb2?ybQ-dl=Z(wG#%U zTss)xCt|l)`(qgRaOjN_gff}K`G&)QvAYSksajD>qw~)iZ>8p#(=E#Ov@k%RS?;y? zUs&YV^gkvxsP4n#{a@p3q4c@U-#kC63~gpVtL;(66I2t~)7l+DzH) z9^AmKW6;dG$hW$WxnP zRDWgg#ennfTx`aQU-3|KZPzhvO{O0V^yaX&V4!F(o^iDwk**=Si{Yl=+*c-Ams8h_ zs}cJ(n6A-r3hyeu6r%JDJT#*4eZxjeNHj-wojh*9!|x-GWb@I=+n-kiIRmS7yBw}z zMI^WQ9ppQR=vf56H^$V)LCNR>)nYEA*8y#Cr?`|@hIF>njDvx_D5hz1sB7!eOQl3^ z0Er{UC->>|)5)(|llY)_90E zn@sAu&Ws*j@UrUch`kn~d+$ba(3L~jQ_)xU4w)gBo%S*=>zH-JfVOI3=WT*`VB5oI zUp3AhmqM;p`ao+)XV15!mwMTPyOxq=x)o=z+BjP9*Xg>rkL%3O%eO5FcaS|WfT&ZX z9pxUSXonCyv#pIC{6ciX5;Jq>ceWeJ3Tlay?;(uqlC|E*ZFP_Rcy-Xq^KSx`@8!mm z5eL%dBjnegE-vvr#`jv!On-lT76x{*cEG@;aTp+L5n&)99Q-lNrc9Enx&2>4X?E*^yi*_yDC~uSujLF<10KUFd@3|enmWY3 z2?NmWqc9Ncwt$N~O{1ZILbTzUbm#>zz%4O>fgR)h2vO^q>Dq0`6hy4=oD~eP?&Bc= z;s<^Cs*bk6ouE4M@Jd%X46Ju5au0%c0xf+B$;_XjhuCxD*={gEeS>DIL!X(SR*-6c zdh%Z-rZ86V&x)m{dZ_l}>OX)1g)hzjgIV?>XAmOh8?>CI zI!;r}EUvm*?9*AM2;SIUZ9TG?h7b6w?&Lo{6;rg2Hp;rjAa<@$9Haa$X8H%jGl?^a z?SxOtyVmaFyJKB>Zi_JBv8vx?o1iaXgDm6^6=Upzfrw!){U{@~(z`VwF2Y1)pY5`s zXN7yJhZ0^hIpCp0X7W~9Y|<9#wcjeY|E-t&Av^k4FaN%V;(z3#Nyivn(B3H8p0Pio zdI|>2e39TF+tcB7HS&L#6g=owP=g45zr${A||f2+yDGQ zD>U6Nw<`>*LMNUC<4DRn7G@MjH9DzFUlQu)8(b2jdVPbc3DtPkIEr(CIlR5?)L-(` zd1Ac3+6RKbc$)VO7%=FLXCH=oN|u&S?gz>4+=_0Wo8n(g%#b;VZk`)yST1-Y)LcH~ zfIQm9ZUKrxHZ;M2q5eY=i(WNF?S;$Uhm}W1FYf=@?NYL=%c3@a7nQ7c#YCsY$aeF> zycbhx_VFstR4Fo^IC=$jqld9avDsDDS=(t>Ald6_PWmh1trKYGg%utJYDrHyc5&mO zrgW`y&^5@7!Zczv{8+UmJaSm`xa0L*Z6}Ca<6eUSWj&LIM;~%(l0KZa&PwVy<||ty zS0Sg#y4W;0Qj6zzeTuW2n#jTG+-VnN z>!>Eis7(Nx0+8laZlz5E!BQ(QAZKB>)|v95Yu>IP^l8chvWIz{E>HQLSg-UkQ8#r$D{HKFGHuX}v#DP*ib_{`>CUpPo19t&a z3{Q)Xvi8lOVME>czS`dJts~fKxuwD|7;uvCtq%Cx)cMcU!T-S$G9P*c8JWX?pX=Ln z!pgfr7??av{oZhbcbGh)&`5qqid=}d4-=Dk$&L&9bv7>wUf75Agy$ZN6Fw1D~!LqAsWYXgY>`1_LfP ztBeobl(>gq!@Yn+R^z_IfNJ2I{{Z8|Zp$vJ9tEzcLx%DsUJwCvh&e2K&1yJHSULNZK_jYxTwNf_3guTULr`WgHc z*?@K8Mfru#e&vo&pU~|uxbvXvr`qDclc2*s_j54tlg4J7dj3_m$4?a^o0 zg3;(!GZ;{ft;AJFmH7w8j+w=7{z|dyn`n9<@(f3J5Mf`dZuI=E`m5obb}Czqd*FFd z*7u8_6x%L4uj>g~M@o~VrQ45=#Yf5o*eqZ7}Zd$$Lrd<#c+VZOo@e?P=y zF3}9zgG<-K#bQ62e3#loyf2FyMmDXt(*v+!KxE_V(k4E%8Iy>|};DEPO zCX)NpjKvW8a~=QIsu&Qr;0|U7(ms-=8J6Bo?pP_LFYmAnlza&h*C#r3{Xl5y$`d8$ z&QITjFcQA(`#1Qw_AMMa@h1sy?iArre_C@GUXrqOOwg0mn$|$hZ{>Z00j25WvRuys z^yPPB8mGcXs?vM)r2wz3by_18g2oc$)bapp{hdFakOVS?&+)y|`fEm%%im>nsrY<@ zy&?a5^~1qejhZI*9v-kg9{!Wyk42kuR!H~^cw&IncX<2A^|I>SI(<(FLO6HGG(YWT zHP-1b*@7MnEEDt>J-iO&&f+>1$L?`Ki>1cvNZGIxaWAwfj)(B+X!l_?Vi-62wc~%Rz}RBxB}O_hQ3Mwq6aDfN-S^9cA({pa%mY!qiW39w(rStw zs54DL3P&{M70mB<%JBaZ^CUqM{9)$tKCLu<36Pe0B19UQvfZ${qS4}z;4~i}9s>i@ z>{^ePZ5p)h){WL38M9+we7s(&T{H3*|Awovq6Q;e9dW(pQg+bM1kk~&3sE)Ma5_X; z83ueozsugpQ}+=`x4kM!aTL*^ESdNX9bkNZ%SRZHE&MjR)37x)`QhyW$wWSWQZJ5y z)xWYs0E;Czotf{DIuRsMMJ!;u^-8gJh)k^@U8IcCo@aWN*>T92Q(u@%90lkq+a)>Z zSk&VxQT^m1~VL&#- zwLQ})1ylbG-AUa5>#GMkebVvWk+L3jIf!1U2_!y1p26N^dGYM7bT2C|TX->`h9K4f zu=&^*mD$ymoh=>^Ua=gK&6?$)%;%b4YG(Ea&%=Nn4BR+Uue-pC%*PD&p1v5;qH=4A z!rA&!fxC1C23Dm#Z@gdHHIG>mZjr$+`AfAf2HxJ{&M@U!9%Td~laV{R3y)xSe50V; zR9SCP2Is@Ld#)Y0Cvg14nmcusixiQH&-PTgkP(iHPF$rR7DwG4Y?M%9oxL(6bt}>n zVc00bT7s+1aJYIH5BLHD z0at9$4s_3bTS8ME6gRo1FU(tDAk|&hr}J3S^o?sRd;`g8E@!m@mgW`F(H825ZI^`4 z`eBFz9cxg^*qm|C#)%#0XS%^+5)6nyljzPDejAxNcjh!a2F9dgCPk0W2M9w!o^j1l zlowHD()5Q~naMvr){xk{U|~ec@xdPjht5ckknio@n693|DgDZMR7?2G_7;% zg8i#sk8d7Ja@3T3DJ(hVoT+|m;%RDaVz3PKK#^8;Gh){wx4;qXTs(5~W!jW&sZkgz z67rXv<)9CT3hv}-Ho`z3)Uk;YS?rUrr}TErx5=P;_;T=KIb71qnKPSz#`nwB1&)<5 zRd)9|@5|3*uvDIa{4L!EI9a>#!}|T`56u&IQ%S4ejHr9bM4gq}EA1A-ac0}x4T-0> zz<^ci&_*k>bQ`F;Wy2kdPv1a`?TC?MO<#inhdPL%*>6Qxq+UsLmg)c>+sBQbb409( z*DjLVI5qq3A!BZ0$C(R-T{uLkvMCI_4CN1k5}{O_O#2PG*zYu!1@Kh?+p4A3wo`UA zNXSMBx^;6L+O0{;UF;aMB}Z+#3k89sd#uezIKCUfnvm}{V!j>y%0rFyF-8dtsLvIj zt{;&F&l9SU!PA+=GhfsB*k{4F^cp$Wduysmd~|+dmp=@Qy#du0pNFQFipO77{T0O$ z&zI&}DJ)%lJQGVJ((A%AKPoemb)CqeJn1tq;9uu?mHuZ9>R+Wbf1To$xF6QJSbN%q zg7@bdA{&8G`_^y4}9;c;Twl?_6AZh6Gxv#ONfna`buTMgRcB^u|KMqBA z;>xXczJ$E)pP8+7!W5kS*`~4l6e;^wES>d<1_KT$g8g5Vri)taa15y2c(L!@O!pSW zd|^!(=;9$4Q9`Uj-L^dgI{S@glkHrz)5=mqqTQ7*m<^|FL1!w~;p!7ZX<-NrksGOZ zN%Eo0BMwl!o(Qe{4&Sv1qv#ZJ|gnly7%f9*uY-@Ag5JoVcPONzyevB<{WKK-4FZGe^t@ zLQ+3xCLG%HLBTC&8@H#wl+vY-ZDsZRgrs=0j?5SjbxO$aQ<$XuaV9aY zE4IRlGpkh-M$OdUf@h1Tm0sY+gTviuZX- z_}c0cUt>Vw+$cn$7pubSvE_tZ~p_edrTI8-Z^u*3b_yXzJ@q!F}ph``U_ zpf1v?H>cnGVDu#lXE^+T!IJq$sTOsKjJ9}cQW7NNhR*ILp<*;CEr8M5%2@}&Kbzew z#bWJ+F*&A=bBxbMV?P}0esNJn79eW6eM;O+V!=`}ulX`jWAc9W!n+;Io#o?uC7YLQ zZ-)mWM?$v_4%$Q_SmVo6P1PI@43NhaucW+LH=t2a%+6xl5920bTqHscHK?Edy+fpf zFbo4yLPy&z>3qKj8T3oAGWgDCx8<&;b)*4;*)wB4z~K+AL=@0qz_~m@JjO|mi(0sA zV-lTBJDnWaGj2cRG)1UOaoBwORHwOc;UW*T*5Ks!}Ozzs;nKR?y=P4 z!L*&axlKMND}=M}hMjCZ3;4?I6#ezAs7(=T_1htX%SCpUcZ;ub`g3I9 zGk!u2e4@H>bMhgz=(U-bGxF@MMK?`Y0UinI54s)V7I}_pYA|r(bN^af$gjU>y++Z3 zvzPoN<~+7=n}dGsMzjrEx&~6QvW1QF^C)loYx>JcFNTVgdM?4hK~0+udy&p>m0J;E zFKo4P{^TIFDWAEZj!f|1pE_(J8{&YNid_^MJ?Uiro<6%)Pm_zBAabt;a*9#mLzdH8 zTfRcRSzvWsvr0nH_TOSz!+Xf;Xi7-V#@INMzNa+)8fi}VcZGrNX*QYMQznvxhRAM3 zU&^yu-#0J-EbW@0@>60EeIqc?K;oU^Z#Sd=UsQYedkO15aA`T{`&YuiZj9it@iozv z>)_3EZO4D9GKL^R-g73XO%5FWT<3>_L$A#)G7e-&EbAsN@ub2f)k zGiU!gIfZpE52LC=mh?xI<%6fQ&XA=~@7g68GURC|ariD6CJqB{2j{@_K4Z4WxJ7V4 zz=FNE+uka$o*&ccGlKLxrgcSTZGFP;H<$EJx3U@clD2_XkX~bCr#aV>h4y}%)8L)e zw(y3bD{zOv6itEnR`xAW=n%OD&R_ue!AD<@j=ErzNq!>%Syj_dXk+I(G9)pl?sCF}RKyf4X)<_c{!Gd75~8B>kAB3H!p3kB!jQ%R8lBi1F;^@k1oq z_Tj%`?vZti_(#*ZYsRiiXc3UYQo{Ww*>W=#vq_)e0&awjKL5*)-Li>7qYr8&R4 zch8Ze0tv^Bh-)R-T)FURp_a(z?U8eyU$-zXkdD2Bf#Y3MBh(_GY zd-Q%z=jPTZhbStP^GnV6SsaHDAi}L%KZQ|VmMe=}IN;F5PN2Dd9#~TydM&&rkc3jS zecwMzRFF1`*gK}|%fk&3)1U5@lyGNz7|hh4}$JEqC={B9%jh+Ek$_lRzFDcwkwzyh(P!)RU1Ly7mx`_x*FGc&yp7Ma1o zQRJ&yD$P%x*Gu%c6iee#KZjBK*CijssW1`snKu_fo@3H>RGS*tLx4UFVcphgWDt1~d5=2C9s(?8uKs;;Q>JmTp7yO|RgUeAvh z(s}QD9~7ruF;|@NKzMe}suq3!A>J(YbRI9=(0*+bJCp!DhSiK{$ zxCZjb>L(Ma0Wcs*S_qsmN?{?cda-=I#{WOOy?0y_S@#D#uDhbE5)}&|FeoY(r1v%= zDk4fm6cmK02neW%NQaDyD;6M9q(elcgGdvR5|I)hbOfYJ?8mL%l*=Bo89vRyD~>^#ih#tqKM|T`>G{I#*-3F5Z zDNqizHS>*+ro~CMFm6L?F#Hk{B(;S{?QxJu|9aPC;*ZU23_3AEDYEBpH~HnR0J}vZ zLF^f+Ei+!tW^~n=O1V@?E}VyuA25k4HatuLt=FtX93bjNNMoPl)-zK@x4RqpqsFy( z{}X(T=CK-=+A8|v)V%hIU|*Ly3DX~N%Bp8Ze^){O&g}b(5AyBQ*1rv`OhL@s1dB6! zyU(OGtwn(}k`R8S($aZt-`s!%6zCA^ha6|1eW?k?FTCL#xs&)#9d`9N*goJ8FD2RA zeeZ_2rZ4D>oVX22DybFbvx*;yB~F5Z@N7ITKL(;q=|N`L0VCc*DnCeGthLPMkK_4> z?L&bB0<^(aEWxx@^aZ~436X(KWt-Sr2#ha<>y|?E@D#W#7gvh{((Xa=xsK)5(tK&= z)ypUlq3ev3o_VZNfdYDQ-fAn;hP_pwS}hdFto3Nb+D)T?TxfH<+{v=R+({qTe3I7P zM=0Qhv4&<~HQqw`b4W@18FIQ~T|{L>q#Kvwuxdu1^fO^>j#sBY5;`Xij!oE1Ml3=} z)KUi8kbw6Py3sJo@(0pz869HY^f-5K4x5|sKG-$#SeB2z` z#rtVAc0t)#ePED~+3n9ve>bX|fJL(O+4)Ka$lBBh8wR!=L*~lSt(+Z*W9zRgw+;xy zUXh6OJfR$qm1sJ(^iRk?gH-!bc2~y|>-@o4=GDW-H7_$fP~bwCWg|Ib;{kgaw&(C_>NLb)%5wEXO!%U zU~u5@#WS>DYAjJ8R)jd`wdywE<)81h%b_A}xO!nBV^&PtRLqolj)bwt%F0iVNgWo< zrZ@g!ht;9`)}&|@c=B|@gsgGs{$7E69*!4RxeK9t-#yWM@zM7M$ zuY4VJbvq%&W|}baEW8RAXJol#+AkDn%rK zN#;{1!GHeLUsn_(d$w*Eh%ZGOv5uoN3%qjM$INjeBdqQW%}U2i&8Wtqb|H}6gyH9HsDYK3C5YJAA>OF z9Ov|#A>;8*de4kf`Wx4J9!S_jY)Bn)X6mmxXngY6&`uFYWns4;@(wGqoRQdR%!PJ_ zjuJhiqM-kjR1sZf?@6Jw7vZu?)Kq$^^MVjF+)bUPUyxLx8GLz(!X6Ax;!T#rv8#+L zYZYzwcwYc7Vis{D?XsjJ@3%dl@_w5?dgDTJp7@TSc&Jo1M6>RI0 z;|V7pk{R2|no}!ts?RV!TBi};o9IXc$c-C>`F>u>&Og4B7TbK?!)6%2cOYR!%*nxo zmiB42W{f#Kk)I3ACur(C&1#)Xrc5Gs#>A^5v<;?KHnhl7x&^A+JkDV9USmbM9Upkx z$3jHz$oCyPvy1|5C!2_cw`c8F3sRf;&Abyw$5Ej1ltF_T>1EbVqxHK4cdmBNU?~Br zD6so*4ngK)2Q!W?xSD_g={6jz9D8>`9p%ysVXA2#2xL3U*+|^*JR(EhVHHc}WAv~5s?7Dvhj)6z|aI@!+xnkY_=Q!;5Xso}D z=glWdHzizXVaO>{j8E5Gd05uh&L|FqE9}p8U%Eur(VJAaSwIH1HS4^PK1bXd3|09W zqJTLPG6GFm1M_XU9x8UbLVd#Ga#cASzIL!KiL6Ja?_@Kr2j3PNqX4G6!4GHK zye$JP4WK7+V4SpEe%Xuaw56;3CX?I;Oa^?+fZtGNy-c)wJoD8Nv@18}z3I~K`*`VL zPi5xC6MG9#KvHxYM;9Ew92+EUH~PtWiOg=}gH2uuZF3Ex3g+an6m>cZXt7E2B`@o> znUvDsrgcHJ?~*$vwTiXmkBMV%>JOdkhGJDM;;$+%F5W?biP42+yiOBAzdPEk z_*mwJLf9jKUDl`1U(f(Ei=W`FyhNQf993d+r=IzGD2d-SApvkSX~=xI(a!&fo6_Jl zgPF)lo=^Ysb@vyoHod<2y<*xZ5I+yjmWP{<6XJ&HsxKof+_oKmgFDu5e(BQ-Ihyhc zsCH$d9YxE?ObPoC?5}JGyEvsWT5I!-BSjLh3wazGT!lo#Mt#B(4ieda@JZ60AZz;J zGQ#QhQH6_Dj#EJTH{%4Ve zaNz1;-Tj`lEu1yJQy9l9b>$bYoLN}l`C4!Gfzm3bDiThUdF^;&5wiO!dxXA++q6$S z++}w{^!lGIkG3Tx+8oV>uKsjRLL|GB`JfOuBDh-6L~uEeyH#|jonc)B&dd-lo1peZ z2>m*V`VSGkfDQF!r?W+;#`8vYZMwVrmznAhlkSt1`F>xx$rz+Y4dSjVNIp2<3R?E9Dhg6u!rHn`!n{YCB00Wg&M{KOw$uyUUWss zxh<0}lT?;x&ERaZ+=Stt2DPhy?Dsb$#}c7-Zodw;v9(Szt?-HA2i={ING@TKt?>dj zSA?3@ARBBs(4e+`p{W1UE5H2)(m7|+R z@WqGr=?FQgW$Iza&q>YaDCwwv%+@Wqq^OrAzQ3N+u)Jb+U=I1Ad*1~jlGKd17JnyZx+1sbSr zK-3@O1Hzc*3JFmkaiilli=1+{;kZa+S>+!#^jDu?Uf1wF3T*NEVdRwalbI8+iMF4T z85od3nl;xfg@!csF~e1!0Ss6S8$S(y@HwFY`JYkW&G$<}W-6hHtp~rcU;g0C|Ll!? z8wdN_aM(P##*&=H<%p%`13O-|VY2!#pD?-Z&g^aRxNETgmxqF+izongqQGtT;1v{j z=t!GxZi74sRK6a#w6NtbF}xNOkRvIC9r|TS#~sSPX1-4b@+K$47y-`ABx&5`U-fAlp>s6_~<%jRLQf zy;itP@vy@4tHB%Q?D96GCs;eL5oae%5W*}dB+R?;;inF>^MgW>{^=5emy0snMNptB ztiKio)(k{7Kj-mtyfo5NnvSSs>PwD^=paJvrg2?GWl zJk}gULq9Fq|tm6J)n&_-xB;gY*V&MD+z z)FKL~Ny{x$QQ%Vk%wYIIZgYk;fwq5;VT!0$kP{~=Au_w6RJL=hnlMF^0sAK!Z3Au<7yzi!hW@Lc;Z&yw#0doI_KB0F%s!4I#&jgekUhyMay^=uAtawdkM;SV2HX7ZA9>r48YhVd#G36} zubcnlGeSZe+)z4MA|x5?4OOj!2jMbLqT`#m7$dM^Z}UO`m$@cq>dd5fa#O7QjxW!{ zV89(ZKB!zw6*HBGJ~~VnMAsy3zKt1q6lxVUZy2j5m6nP`yzcwu)vKp9g6oU9V*l_X@Q;W1 za@%K9q{KDiNcATvLj`dE8toE|)c4=S4$8LEOs%Y>8>So-K=X3_n;(`&J+Nf~7^W9# z)^|YSrck|200W=%lB zTw1(+LYzE1#nhT_?pSZOdJMTW$mvT)>JB!j*?p&q|J(ArI_SR%61^Z0dMBq{bgXpU z0nwr~M9g$}aQqs{_=b;`Kv0ar6a%~iZ>IMbXY$@g+!m|-LSUp$admV2SMyrCNL9KH zrSDA7UvWMR2`cbZBpUi+`4JLr%_DXplR8qo!Rp-EgVJLKZys}AsgErrpunXxp0K;4 zb2eMvOCvj?f8uAjd#*j)Ga7*KllW!>TH~IDg)tYZ$f-w(Dy1$ zD&LKRp*jSP`%K zXtZpA9K6MgX}{AV>qC<(`WY`|7H<#o1C_rtM zTR!nL8?j(Z54UBHb}V$w)~PLD4&YRnkJao!0n6PZ4$6avG;9auQmKe@^}RM`1nGL7 zsINWiGNX(AikP6sH`_Lj0u5FkO*cMrthc`CxG~JKk=P=Bky{AYr8uhiC5D+YKrG#$ zor{+<>h34_>zDr2%%%;%)ImC42CH(D{~clekIP@P&An+k2hYD+eE(j4w%$>(_T-1h zf;R5IXPX5#X+P~QY?PqT!?0E!N3IfZ59N!@s@mgKe>6una<;I9J6vBkKG8`6g(SKU zF)B&a79Ob9HZA=*T5w(G9hw?Jnht~25-4!itJKw`E$7bTpfaAKo;*K#b2`tP;5(Xk zB|_=UD(S|h>l#B*E;c*$%lCACcIb+E^|7Z$I>v4?B;96t-3Ic$m`A(V(z4gC5H{C7 zS_nza_41)G;czp9hJ>rbJ(cN}Mn@%|?>Zf7fN!WAI*Qmk+FPbpNHi0kMsl0K1dJ@| zEX2*IxXwi*mROtBP#I;Ag=}m(GaqOTrB9n{R*x1f-)QoRDs+uZIKe#ApzuL>Q=Cbci z&1~&~qi>Ms7bLCE&VIO^xZIb+T{l&7MN0CaOTEkBAnPkY9p89zNJBYv;>i&*r<8Ok zl0Cak!=vT*($oJV9lteI{wC`30{OYDKtyRt2KzZ-+wnkoBCQ$AawllMZs0e`MDyNB zEug@wcR202g~e=Rami8aV`v%$+N7i=XkTHLnUnvmmy}72`*XjnlLre}yAo`;3h6d1 z+jmr>9clhjqa)+Z>lB7-j|lh%=?I+SJ*6M*@h(bPySHYdGc<*`w~|oy&^ebW>#+8@ zK8K9#8PJCcHLr;VY&GSt_^sv~9>ZR1@l{K>n)jG&vM35yoQU?I87nYs@3P@)^}$Jk za(R%hA)LY&9{tP*OiyRolj*9L@;`Lz?Nb29Vkcb!PBL{;~GdARC< z#EbFpC*IGTZ*~6oAB@eJH`Nz{{n=LIIr15l8`oMt_CDUTQziA$7*&nCMdNKncX9qr zDgAQm$hZ#XeB`Nuly#(7%muEF)bIr?FKs-x_k5>Jw&lBQc-T&+8wGYQqJWpW0d?Zz zB&qdK-B;>CVC#qnFJt{G>_d#w1#SN{{@`L1k_Ct6CS178gsXEnJDYT~RS!W;D3IZ} zZSWa#DHyUm71P7i9f+k$Bdc$rKtTP(=jcQ4gq!=|m2)?$=d9ymYNa2cz;PUxXwKb6 zbdtbzXp`iUGAs>mPNb?xf(*+fI9KB(<-X^slfq^0Uq`2?=N`xQ;gN+WmQnLgx#m~W zvY|7jZ8x`0*O)(ao22HNE(dqpX@}N$zC5mbO5{zYvZvjTFTIUCUY$pLoa%t0PhZ}a z>kS-90*RnMBBUwoK5%;f6{Tgu2d;#iT;98N?{e!sNg3{3Kiq6=36I&eZqItfp3YjZ zCuo0V-`PcO%MkI#XvW<@oytYsYVz#swZoKsV@Pfjf`Rp;gs(nV=pmBEb%R}Ksn;#U!rSgRSMWenlQmq;|jFq%@Fz{OH*13uTCK)Ke zu++?kSjR$7BQge$e2P(^y4))Z1y;`OwME26DkB-?L{3VL(sRG{|3^vxor}JY5B*J) z-i2-B+0B#SJ_o$DsbT7#;Y*q=H&?>>Fk3p_tYlgAx~Dg#OO9NQo5g9*5*EwcZ(tWI zmv3?3qJSzmJ8_$`1x_yZ%=hnsBU=gEJFM)!EOB|Sv>onZ86=J8pXnt{x{ifZh$ z{Z8{pl5MmP?(Qvz;T;kvFwFB|#oR%f#PX;r`5N}T-X)AI3M`eb81H#qmf;lY9rL`Q zXnpUe+aG-IefAS+wr$o<89!MzHoNHHa%oGjLIC6FZnl2Z?77fu)_6J?@p=2&x^n{D z>}GWo_#%5dj=x>5{P8C{(rG6p|99H8EO%XZQ=9gCcPK`kgZd>s;-WrJ? zE#F)gU_0tAR+5GSfpP7;7U}6I40Z@D)#}LEGHY~hB~I0W znIfD3-f5oUBfIp;Z#v@rj(VRx_sq+vE+!{lPB%Rz^<#nJiQZk8mTeZg4XRurqgM$j z7v)(AA#UP{J?9JLM{42BjSOr*hpn^olxZFD`Ie&gE23}T6CFKLQ@3LTOOGRGGw~F| z_!X4YmK!UE#}JQ2GIfl!l%S}t5}z|&3(MW5-Q`Sx?F*5qS(hqGE7d@& zdz?S4jErA(nYW3po;w#L^Om{;iTd&NzCvf&i)N|`OJ|>NrMtx{r)AI$d;F>IE z5w%bm3azOoP7>oapHy?8hBpQo=jD^uY|(F@Fg}RXdBKsf4LZ4+Lk+8rv*|qi!O=qN zMjPp>_Tyh_HExAfqQDlAehNM+l7(1I>0Zmb;aq!$lU7n^M;WS-# zP(m!Xwfx!+{r9SXZ;X-O9G^B=it)U?v`HozDlUIKbjka6stT7yMFHD*jE(J=#*bbn zg%RC}r%a;pZHIRwj4RKgP~bKmk)xaRbjI}O&Ieo@ZK>3)|`DD?%@*#1SNeezCAHKxICjJFYS;rT&R#o8DrCz_)o zVr0Ys7wnN#i6rCze=kEmN1fenO3$X2k{pi}ZahM|qM{S<7_plk+`q1Uni2Mi@&vbf z>1n&Whuv^XrN8hXE172s1)EHgU03`G{qhQrLoO!=!b8o9n5;?jmF+uE@kN(SyY4Q6 zHghQ`;Pj$phGp{+lMh8z;Nl~Fjf=~LKxUcg0 zU_%s$1t*$c!Qvtd@w^#_F(3WW1!>}mp8eU4^~7NF$q(`<5a7&QQ@w4tf5t7O0$jQ3 zgP-e+)B+dLw-28!Z%B9z$8~U$<>sjC{Gjvk>o!o? zJ2XxC?f>^fUcFeo4 zNV5P7&;E=8I&5j)P87(FUYv_Qerr7Nwn0CMhy6T7%0^l>}}e2G&8p4 zHTw&awwy>^<1B=5q!YbyQAtkoi{#k=JFWc_!jX-HB+wBBEPWdsmT+~ zS-h&k1u6ch77BpQWy5#81LMP@99$D*l#q!X2snuX)vz+BJd_$YiZlF9>-=eHVqwdB ze{Oc$BJA_yk%d&CAXWwL4>&gXTp8YbQ4y z)!nrM1w=PD`M-UkUZY3ZrN@I~KT`1&JKfE1jHWA7kA`KC2zv zfdUfYco4e#0gp0WLhqRF{R+cFAASzElLnZ4*JEy7yV9Gg~OvOs}QEXb;v zU@K*}G&nBCYnP{Sa*5=T2W(xJp3lv8(>B@UrIU+x1QLtXG{N^o0mBh`#qNUaAM4GI zT**pJlWg&)Y1AJVj*)wL?C_=IHwA~VI~)IU4RjB$h(E9E2INyTH7=OW>H=Q53k(k87J$wl~!Uhql+Ubh!p+!-w}t{X96;VFSLyQF&5Sr5C1kOsW2 z!2tWyZr!RTNkh$xsaN1SBWg3dmEmXN)fH0O?J}Bu^T1M0vb7MI*BVCs8J6c7A*Y+* zqZyiCJMSNdkIwp-=8wGo=#l`R-Q5ojvF_*^E{rccf6>CY`e|ueTSi#!FfuSX%a#Fzjkgf~eYy6sZ#b0Rohw0+; zHX33PXgxh}p>FiPUkGfK7vLfWc1%*L6eJ)Ojj->7q& zGRr%{8`L4P%pLFXG(BYv1er;CcoC_ ze$ybmS+h)pS03R7KfyoZ4^nYcIPEzFb|YQ~TC|bag#!I>*{>bIMCx@PerFNHdl^`T zQ7rmX(nTcoCFP7K@!P-?TScOin{JH;lJ%MJw$C#@`X^M*+de{p4ZWPc5u`pEH(~Zz zB5XWbRua(netK(Pd)PVLg6%lm*+{&8S(v^_UAcl5GU$$x;T6xh$DjjvV5uQ#&DtoM2JsLzwoAAZ8KWW0F?FXh=0Kd&OF z0|j1P^EFDW1ji&=!<$$I15qeojRM20WaPTFT3p!VKdWbSXdcn_w1~o0>FYgfK7|;} z)wsKH-+wKGdVflPGwY%NR<8124V5)Q)p2*61`jY8{@7dkISEhv!Nl$wWmEHVU<#mg7kbg@LA6WSs} zp9nP9boeZXG(h1i8rPqFe)+Jflm;IAVx`Z+H~++?{N={|i|~C5D*YSK8naJZCD+$Y z{qkd*3wz?0jL-=hO*}iBZ?LjNWrNVdq8e|joA?`F^^uRzeJ%drg3$!hh!MR|D9w8{ z=~JGw+{)JW`7a~bb1doId~vqh3x}z^hLaN$hX?6en(@v_Mo)B*95TnFx#YldSt4-< z0vhyIqJZ&$;U81i|8!jIB6b#hoQ6nbnjbG!yK=|7ZI4ITO0zLwZlT#-moPlKgK8ZPkWld z-*9dRBSck`_RuX)-kAB46oXGoYDzuFZIsY(dpyJ?b3d2+b&picX@4f~BUhn-R=eCX z-DA{+GvXww*DsqDWKf@u0!l8kICBYTLZ1nj;~WJ9eu>Regvq1+Y}?=kTPvIozG8s{H84%4VSfPq_U$-LEW_x)cUBirMg*&HJynH@SmJZZq$I zm(go;>JSAK*i_Fo*cK3@--H6~-mxXyOh%?I%S|p4eRaTvGh&@u|7}k1KjS-}{}K-T z8)${I3-w!}S8lyVxA*IuuJVztfq!ZY_6HxwD9}kuavd}o#j~FT=c5SY zo#`C&rfp5@&urTuSCsO@8x-&#i)5zYgtSY`pec85AJ%@+Q}Z}xLJ(R)5|NrHGlzlb z|8z$(avBB)y_6_Qa-Yxt3=&t9d5*5>bK*-ZLgXZ2+7|_Kbu=4~Lro;6DGEIClD*yh z;!kkd-@b=;*El$@9WYkAeNJ&3C@YBqHSA9_%=RlFn9nSSKO@=hFRg0I+fiT>?cx~m z(4VB`tL^UHHLA9tB7UMDF7??n40W$Sf$i(2eT2MD!g_QRaAcB$tybwRgP-WcgD2iN znVl)>Hi|mW^Y@QK;yRBLr!Zx+g}K9(@|quU^G1q1>Mt+pfwTP*d!u~c{ls^Q#rJH9 z;|BE6@s#={7x5b0e9ltogvN5-pLStgn7-19t$!7?(V04c0zXOfTH}qe#t(JB&Whq= zi9-x#!3@g(~|*ER1wg6Lkv3d~s_zD3^bH5LWR zv6k0X$jK&f#x2wFeXpAaRaG>aj4vLkW%SQcM}&uWY8+Y33s+qKXW{zJgvd32-G`xW z8&ftWZtgi(hZ(5~W4T1bUtBXH7Yg)An@Qk2LTrr5Wyr1o9`M@POU5G91VuZdLdaYZb5aMe)2O+!0L!=wC9{PZhVZySA`@g5gD z*V??f*x+v1aAhbVx%HTH2`IP9g@1rBGAyCra|3$%Dn#td5yaAnANZ<9yFXdgKWE^x zc$r9_ob!X2M9x|Nn0_<4wK7S4*jcXlg#GlYq#qSw&9Bi09&R=vfc@UT!CN)(7#e&zmihGys~0MriG3wiPJ%*Is)m(=9Uc*7yeI$FnR;V0K#_^>M`er-q< zSbBVLHa~Ulio!8rfyK3vBx=>7b<;}X9;*u|uuoPPHYf59p@0fJ_J+T5w9KaglN<6= z!4VWt*;mBfXNm}5?C~?$FgedJAc5{L(Sri3J1?~d2UJDAM}c7%$~aAC40rguPx{TW zY(NA)g|~F*viG_^CSR0y|1A8G`>zy!_2mzcXb1UnhCZY*QQVz>+f-&$?57=#xN!Eke$0QP=cV{DM&^+_Z!zEH4n< zQx~}UtK`PT*yB{djSLxfG zLmBsToH-ZiY;pLkrzFb+{{XN{Iu|!lYv)bOPyM{)M|>rEQK1TY0Ow7}F%4C(Xi5LU zv%lK3=X?&-6>y_o&ozrAx`kl;_oYF2VH>V-Yj zUK(=!L!Id3`DmZwY=PQ*CFgEawfiC!}*x09>%vdh^mPn&xC%o3IY|)z3O& zP=nq1jk5WZGx9rI_dxq?`MXEwoKI*)o#xnh(rK{y z`By|zS91ZeeC}fCRIr%T;1o!8-qdvAn@%L(h|h1#Yvl9zhOOb3E1@+N9S^G%WA5uz z)Ezsvhb;f`me4B2KJiC1AKhY`uQ;X1FzfcaD6rxDi{R-kGdrKeq%HR+p@6N#=(?Hw zL+%gdwt@qd4rKNqVF(3Iu-``Ro4uh|5yr#q8zw{JAhfK60;O`0e72j^YW{gDrDL=5EO?T8K>JuG!#VxVKJ$OGC4ZNESGjO z2n8Uyab-i`e`$|gGXB}m)E{MrNPSdWsDQk|8@>AC^z*i>>NyRf=E zTX^J#-@}jEnVfqLHvc?X)P18SpmAwT!tdp@+eS+ z_}=m*QPoMjrWr9HVos9jHUxfk+6hOIJMCuZ~H$PvL; zE#9e-D6oI7Kz&v5M6p?0ormSkbD{d3L1aYoIV>U4erdMik!MU;B{+@(n@Qr8uxrIM z*W2Q;r|8Dvlk_^?hGiT#-5buTDMbPHJ+-*qMwVweZ$oY@R@^N3!T(azs=oA=J9>FY zyK0G5j;8-d9rckVG6PZdunOs3d1T!yPdavn$o?bDpVUSkgc(Mj z>z9r7bmqF{Oba=hXV-gu&X*YY;Io%y@YeN0UR<71q=rsYELL1sA$a?-odF|_E5bGY zBkm~^(d(C+n#tD1&Ch3FG_A_Sus)UF;Xgi5w-+3K%=26LY3}0c3Nil#?YsN{{_@X) z*J9R)N^?(~AVw)SIhqV9TTgEi`a%EojH1k+I}Q9tUGtqy{WrR&oSmSTV>2#H#+>eL zeJfkp_uw=)R3 zWqSIQfiYh3brqO5(=X;>%1`pGZ=c?M|KcrVaOVu;y^MFMy@cK+-Y^^ws%1FpTDOqY zUfi&x1V+S6ioHH4c6XQ7xd8szAA*qCpUDw-x|LbnLoUNhw#Z&^mE{8dv~jJ?)tx-#CSwqcIpR^c8@9Ee<(DS>&5NJeZL+fE42$b=DfY2ujhr zcE>;76?VpO+OX+lY+rdW@aV;F1AhNvH8P0%*&~K@)tGWKdQtW2m%Y|P#~v+-5ep$= zvTE4Spk|QlTam;s(;D!PC=g5KLsJPWaot{biXoMk6Nu@y#b!<}3iu#l?phOA%6gl6 zm0}Y{nf!dD!q36dsqzOZCz#sXaY{dpX_oqSy_&;##TzwnoC5bytUhbrxG)^ejmEapy3`J<3HI51-4$t~h<3wG>1e>Q#m6&nv=Sk8r;5Ms7bylgPm=i!{Qj z9!1<-q)G*m<>mN~`0K|LD|(%43{c?F2s>MNERY9J?IeyO?GbH_qBM|N%b&RkX^DQ6 zavlqk?KM8Lul`=_#L?A-C}5ee#+?jg$p=GZHYr)2X;YgQIzU|L{S^45&xaWH!-32K}fn})4Guzy0Y;KL1 z=msYi-A@uTi2`ba3=~k6S=)qokmzM7(D}N2^`^{q`|-kEtXzHy3IttKGRW#QGL_wT z8xckUm1(Y0zQUx!BH0Uk?Pmv@-{Q;It2E91E4loquN#X$W6d{cGQ)KDC+YH9!|}W9 zM)FcC(+HIDwGCYTr&X;D9xLRQ@;2GxZ@%TElz46U?A=s3N`A)oI#w#JzUP2zksx(dg=a>HJ*Z-Hf(TuV<(BfV2icW)b+(yL)m*Hmwuav-UZFLb? zS%|il1j&}cDl$^9wzei~@4tWoBiAQ=ZkxxDVmIj0s0no=Lv7Kp=56Q>JW%?Vf`Z@8 z!*A?5i?;dUk5`KeLtaL&KiBg7lCR$Oz&N{0*F|^a>`@d^+r0-_KdHPf(D;VAHaUbmjF2zS^~Ai1Q*rIRDHNS+UJFq2-En$o*RAqv(6O;ErP z1ha!JJjcc_?u5%4c3;%WS!hX@glv z+H`tV7%l5A3Ve)%LvzV9l#MhLcw)fW*&KG=!Z&nza57-ZIv;+1r_&gcJy zwf+xsW zgeJ%ia6E6}sq76`8l?%hHQh-z%yZD;3wH}N{X>~gffWCG535JVpi^+42RX7E1vb$u zje0B&<{o$4!RzMZW`lTn`-;X4BHSinXx6a#RR=}uvn>lq2qk@+aQ^7VrY~^2@)9T zD9rb)WF9<}$Ykl@STRGqgs^R0VFV75Iv`g@phaGrR;>=Gq}QQ<#NyXJU9Vx)f*je8 zo%rMJXFhGjW}RGl9RDO&w{O&$A#YT;-ywwpA;^4TZ~I6Z9P zgR_^x8Ex{pj)lUKl+sUjUh`n4Mmig_;!D!?3B|Dp(`uzE>ycFn!crB1tE=vSgutD=$KQ(pnBMP|sM_V}Dy83wj8Mhx_0zSU)g522!eU8k<+goyU zZK6?N@bPvO`1lJ71i3o($`5@K8d$+Su%x}5$5tmr^*6L0RvMd7QUhv12~(wM-|{kZkXGI7Bl;B z!8Pb}O%h`q>qvQOA{WpnhOxg~krWV5TxtswXjJ<2FIOJr^*CNBR!gyetMYroU_d${-i zp5Kw<%Qs?TbIh$;6pE=rCj+_O0>#TEVHI@YQS8+yujpyFbX^%SGA0c ziD0P<1nzTTElbsLPpa1q6cB=zPgI_zi9!9>jt|akfN?TlLR;|pFkVe!?$eLcD zN{0*C(ipky2PhCD2-Tk#U<>n!)C0VLENzAo3fQ8+))L-@F}KfNx9byTK>nFZUU~rk z7&r?LZ)2}K3y&IOnK0wr;P8S>P!}cQ5R-KU1v1W~!2Zi9U=qLuS-+rwK8MIQtV5cS zj3Pw21)9d?p};)?l0L%AB=Apw_Pi4)kl2R;w6HLKB>$`v&uT2J#Oro#0t&2y8AbxM z6p$ed=c2$P+!BRL$lh2T&$rjxHWW7Wv$_;%PcQr(9dDL;m#lScV+A5f0@Zx!t6T%T07+d&bH> zIW8dskLMF6l>K?pJYRFRQUO7GWDEtwFRI{n?wLv4p*srS1e+b;PmyeCYp-eDkDt4= z!((6HTcgW^6Ul7-lTh8S+fjW-{{$8>-fELam$(wvZy|XiU9aMsBVlxYJ5mv{mloCM z<=#fxivrULP`xMg$%YA6<Z9OKmk~0u18zZ5 zku$g9d=$udjRM=eY>;G%97~uq9r3UKl#K#`ODozb%(Ez9260jewAXTsy?#XMS|q^r zH*(<^COOoAh+Z%4lB;C?c@+5itatB+{$Qkgzme;l2djhvGGs5nAF5H{Y%X%P5=p`^ zp|6i(KwtTY$Uo=AJ2keayR^*lz!xbL$nZpgeV0(cgz(k2A=O&sQcNKxj_M?sKl&Ih zZMgzYQ;`)eJS2)e+BSa_ zq`r33Nh&99r14kKk?LN{G_Z}tJj1^(r(yqpuf_W=?DD_Y^(ynSSMm-MslnKec+3?P z!0S{Gmt~;9W~lRNRbji;naPCmQX*9<<{}DQSSFTD7m)f5IJw+sBKi^k>6$w-#c>Eax!d|0PwhFHEO-{fq_>^~}z`1Q%$mMCZ zR=zoQt*xEFmf(XyQ0L~0V)Fbxtt1W#oYOjp$&b1vp-n2U<4y6QDR}r@ zl)sXOOjU$dsCQh8kncb(@YAaQ3DNWG>CN;K+0Ex$R&S+meE`3I#R^TR%s_!$Db<*p ztrY($RVeo02v-*ay`Htw&G)KF=CQo(Q9uF(G~12(SJp$(Qp+d)ANJlmuE}jnAAc1U zE7<5rP(Tz=qzY1^pdcb3AWcf7OOYzQL_w)Sq<4bSd+#MuBPH}+rG?%?O-SV-h#DeRWuZRA+;^_+2jVL-EGGcNLcy4 z7JRsUYcr~LUT$ztW`W42MDDzBI7@DW47gCo)*!Q8?rkr}#y_&qyLfwXwwY-cQBu2| z(7(i)9(5L70RpG?CGxyWY%TQBejxAy+6-Bt{`%Pd)abvv_rET+Y8O-wYJ5M34f&I_ z`d3iRwvzA>=+@_q1CLd){{}CA`}R-)VxE#d@T5UWgBb)*sx?z``vOB5`3aJJ`1+Mi;9jW~?2tu^Wa0q)n@PrJRw&DU>A z^a0MuBRH~R;GuimJB^5S~sHUyW0>`3kLWf+D)e&`wx= z1HHsR|9-Jhb9+f>WwrogSbRLz#5u(>s;AH(_=ey8lTCI-Rj7JTr!`>pjeSGpg5f3E`cwD~+EpJlMc)>Lw3|qIo+ONenVr zilx@6d9rmM@3n1s2XA{jl4G2wyL?bEbKlFhV#k%sfh0Uv!iYPqAH_yMS}$yQo_E4h?<7YCMcp_3$x-u zz{onkAHug!ZejXwsnp-Tw#7xPjOyLKmFs#p1Lb;m3o~W(r1Zi82vqXkTw@n0Q3U}( z5GW38BW_U+)L=4YyU$cE;ch=B3Y^hq#PE@BdaMr>%{QmDz(=RabL^sCYrnE1ZaB*{ z>DApyV-!N6?^6v9@>%xBQWI*o<0Cystkn7Os52VbK2Z#kiIrxvK>c;ah{!u0k++N)m-Rm|QGa%p)Hd!k* zPzOOJo9pMsCvn;pZjZyTk_ExuH;N z-;2h5CX;Zs({G19Pl~d84l~?>qe46;eVgI@vb@P2xc;zQm`w{^{1+ zU*LH9MuO_F!>MO!^o@zUKUHJFl@WyTl}?!N+2Y4iM_X-nUu2ji*%^uRA!dBz#=V9; z)y;B~mv}e^(qaN zOB#eO;F0_2{JtyE+yY{>2J)9wlvM0PuJ7}vyakf}=C<>{Gzb4du|KUZb+}hznYi0I zaZ}Og>{QHVHcKH(6U$c?-#zF+CqgANdh%bO33cr)Wm^Dp5fdGs2KJ~$udVwgn|9WZVpH=Dq=IuIJi*v6MjC5ljvtjw~ z_Y|}!U%c#^21Pn%-%dBoc?flIF~8ydBo+jkjC7W&El)iWrM!vW+IuWcS5$Nd9d?9J zXau#ITK~)$`fF8nvWufa>nIP}g!C4pitwK2p6rQjC+6l4Y}$F=U*n0oq?+lINO@ga z839GROG9&BnXJq zIeDK@9BZF7Il=e}?nJ#nh6cc}vY9Vc9&d|=N@)%EhgGugvM;d6g%lAi4X)j=JUSlu zXGJl8BGNA=$1i5}U$D-Eth0SCGTUHMYx~AUGh8s=w+TaN@s?xyYWXTWvoF1S#qh=f z!~Q#hF|i9RO@t0O-yU4eoJC@H;*5j0--5u+sdD&sG7&yRs5C{2`+Lk;fPfTy@`ar0 zv9FfPVh~E$D8z9jXK*n!HR8&QXN(hh$YVq|`<$objWrRH4cQC?{MQX!vYq}^d;gzA zj1elTN`HXZm;RzRsWZ5-*^o2~Z^-<&Vp;Mh5HMVRlTe7P@12X__KCGv-*bK~@1uGGk@PXr;(@dwU-_YOlhx>*Z$2C(46&NP>M6bhwWJBhdF3-STUl z_Gg!_{pM6>cA>iRf*5>@ZhoM4c|$nn?gJ_=-c%c^bZ^RvJ3(iGs?+zFgjVXV zJRXTS*r}rI;xlL+ixGbsb&iMn3uGCIn2A#Q0%^W}fu~4`O`e-J#Gj|BKh!nUJ|z5O zP@;8;)KNg@+S_5E_^<5Z`Um+L%TlSIrwQS4iMKEE_#92jh}-kL-A{@nA&aIc72{-c zf*=0}KSxL!-fN2Ot-hStoj4=Nq~TJy!x#$RL*~trtaH!qB+H?2GD)v**NL#?p8e|1 z&%3FAC_gqY9h++s{KCv85!T4NAVF=s7cX>hFk9j~L{$()RN9uO$Jqb1eTOTskbADO z8G0+*i1A_VSO_k$7COuZuQyd1?!FLSl&Cp-aCpQSV$RRd!1#)!l_n`ombgLuq#;n- z-z6Sb^HHnLsDI(ED8nVTA*V|8M?*iq`SaH#Pivj{n|q>v(T#s*GJktMxKQ01?__&! zb^`CZ3IfT?=ZoM)pPAr=oaAGs3d8s#;RWrH5B5O7u>MfNNBN`BGeW^*$hI70Bb&tM zY?Ys;^ku3meLO(nSP+wYe=mxy-xM0ffM&bYc|Ea9DN%F_&F=E_lzX?9eCVIqq>sHj z)tDcoJ=sxyF_A0#uaH(Wkscl6RvHoEJJ0d1tn4N!5TK^% z%v13-Y4nlI!C~Ps2Zx@SZ>SSy(P8EMww=?d?{?66ss~uO?@};PMgNilM^g|_&I?(N z82?Q6T~1Mk$KOVpZ)>&k{BxJc`h6hK$YOf126@E^HNQ?m z29`pNt34tQ?!6&M7}=q}cI|+`F%XD3Ao=!g>ZXsx2;!l4Q$`IBJ3RQQXLdlK3IY2; z-sH|nxqk7G3?}))PP$B=my!&02X{!RYvf!ibB9<_v((1hKe3n2#4%CAQ&Qyh)!oJ% z>SeNJbf-na*k81_R(k}(fj>Q^WZM7&s@5-*$FF|=ys_sY#5S>=(*fm9IZqa^%Yth4*NTwK4I^gVFE;7>hq@EZz8H%V@RhZtlFkJN9~9gv(S#o zdpho1XtDwlzd#)6b4=t*ywKlxP=*Xgu^@NyDThVpQ`&D)>DgY_L~JK_k)dQ{<*Z9v z-TPlqRmRL!7hCFb<->auZGR;iH4u<^yY6OOQ7F&;-hd|xBI*3{U3}MB!;V@kTB#3p zqonWHano&@22Y&c7go1ha3e=ZndkKb=RAj^a4}(KzFpH#;~*fgMQ)E7*><;S9jkO+ zu<4zZj0S-$2wH#$dFr9A$cFo# zuwPN4or1Rv6}N9Ekml^cW%>E^~*q`Ae0xmL_P%qcencH zTesH-R>xy4k@3AA(ud<7*P(u!Ke&qT*%goacdCljx6%HBs;Bx^1nv6deRNPhuufO2 zjx}*tqPxwg^op-0WPmur7e6Fc{)-lh5OZ+0+a_f`)9`VR{0%Gmoumm>QVbIagtgz5 zh)LPPS?|aW@D3a-;z-q_(C`LlcunhK%RPKMacWfBM;#=_i`@qSua4KAeoN^(GoCS? z_bO{cMhk}w>wenokAUwgtr{?7x&BE>{+I1?3(`1^th|JsJX+3TkU*Ku!Bt3sx(=Z3~-e^9W5zg z@$a!F&Z(8WsfK7~+Y5fvA02_4MofQ^PWcVS=U4t4zc{*{fYlYjn_?g|)z2P?9x9hV zI;d9N(neWV%u!E4SP8SZ7lnW7aUB|vOkRdA$oAuu z#9TO^{Uj{VB6?{IZx4)M-y8R$$_XW+>4UH4)1uB+!q1}OcP3&+op%oorhifv&}@8> zp=h4dpDG&f^a#pN@xf%%&9-80a|lxW6vgT-@HYBrrCdE?R1ur|RIvM}n%v9clk-_5 z)o+Z~@TyN<4%ty@gi)pX(ZJFh_f#i}QwNQM!yxlpB-z7OPXuBF;@043a%wLU-if6- zx#q>PF#`g3N#P)nRc{~W!SJ8d_TT6Hp9zlNp5Oe*6KUmnW984uD@kf^-y>AHb<18o zR8Ab*JpwmInWhgf^}X8N3Ku_n*m&?G=zuHPH#j1VjC_Erh)lRll^0s-ySyVmm^x2#Q-l$Kd)Jg!5PW)hIbdy^8T zUtrZ8k~wxD;5J2qWkD^D|3}5ZmE^^tQPPa2Sr3C1JM=W7DXja*csz=h!8q#d@z9xN zhdX^==e{``uq>IHrjb>KS0zjwpja1V(fEIlmVB&#J&(g_OiEYDc!n7d9MTtoJm3LC~t|_K-#4>d?1)&Qu|I z4FiHzaKplja22=E<8;FgsbZYHWQLwO45E0(c4pTY`Wyt}4#?I7Q@_Sk%$NW}F@jnN zk__1ffpRc9!k}+HWIlglCS91I*wdOm?E0D5M-WT2E~&mmRo?Hx zaL))aKz7=$BQG7(OP+^aa~UU;sd)OKtg`O!_=AA@XXtlE=&rq`e#*ecrSDzU2k;qB z8OeqCV7;EzwKS+uAinXi>j1UWgWQcy%*S8B#!&}j3~GHdUg=OM?ZOa5UY^GG;gRGT zb3+2>ZnXrolu;*6De!W28uY1i-6SoW!yJllgimW{B{d!X=-c7fH1ql7b{5;HZ?z{R zd;8`HcK1Ob0Wz5R8PBOZw4u^6ICy{E$yEKh@_!ddMLA7Pm_U?EUuc!p*=!EPk;Sf=)>4%(CmWxFuzNY9#^m3bL)(d_iK{qcz#a{xuv$d;ZR>rI39hF+y)z5=yG4f!?Ime=7g#wCf>(23qH}d zs&5zyR3!y^cDWi@hzUDWO;$kClu5VSi^c3|^MtPP%^?O(F@k`+J9>;I$7-r=bZsQH z_Ctp+FM%g&oi&b)1bIuawM$Bu=re+c>Jno!ET;U?cA)JS`$T`OcN2Hf76eDiS`eF z`+v*o{_Uau<=Fn=Z-2jI`-i{%{f_M){`U7fwtx8B-|yJ|EBf1yo`@>4bU^ivN7v!% zOdbhhPd*gMM#+wYKwT%-M$bNUqxg@ffAq#5-1zUzg@mOLap7qrW(7qwjf_EFGwk2= z-~UDi^KVBW|J0`-@Nb!x-#^ZuHQ(8nE=g%t`zki%RYrEe+&YxE; ze*ZXs&Y%4LasIqg@%zX5FXKOP3rq5-1tJ~6Adhs@i3kE-An;UeD)lx9AU9!40o6OH zQ`_V-Bt8w#@MC00-%))uPJg`bkN*3E zFMrIB|JU{)9~{E{xZvRT?~J>iWmU&dbB$$4yW799Qil0yY*d0OE)dvh(=aMF;dme6AHPg?nOT85f zD_~&d>DGGuP-~t>YjyqB`njA8b(`@gEHwyAP6q#EOqOV}$d>n#0;;}hpI9WfPrVX@ z3~eX&u0SJpK%nciJznWWxj!~?@KLZ3Pt&{mNzdacWj~$aGewjNZnK^W45d@-aX6l9pe`~)5-}n5BQp}GxHmzzwfG5#ugtzA;?ZMMEO z7o_;L=o1S56rFf#mQYV+a?XTjYT}#Rk#Nz@W@Qb6!(DQWTBM}TKq);*Tic99pvS8l5+Y&G#b_Bud&FU+TAJ#T>L-7x$))`lZxSQMtuO5+ zdvQr*M;JBVU}XF7tuc||!z?ReF>_>O+*}~HG%G4*<&j>RSNbOXRSE&=IG&MYA8~u} zYd28`clAIZQciN3WY3G!g2(Eb;_8t2X`b4?yq#7F?utatWeP7Yi5h#l>o@QBH;eJy z^E09Q=zm;S>`}kaOKb~mI0psInqG_v&!zSqs_O|d#Vn_{*snGPgTRTEDO@Y(I5bZe z&x69;hWzy6Tm6F7nCp)MaKiq>c1Nm%BRX^{j6e1_i=AbRHl_Qxb?o}{d9E>S1sDFY zuOH?OAE_-XYSG8UGLII`2j7V4=ssiWC2z*U@I1%wNrA)zrVAmg-jBlBuODIZ=K%_V z(_sY^*E+(Np*Ji-lRmwWm!2ts+D-}hAa0T`E_InNeX$5WrPf?BXh)weBS)82!6n;m zPo>P-THXGMdgq#jY2n%ZV`mJMdkA;lNH?5y~;dvq^UeJY|_kC5SV_NKqkKdzo zv~)(=7jEdiqDiTcNG#!_n@$xzjBX6~D{{HKGZq!Sq2VwNBbiKDI1t0qGd#I2vOFpO-Eytym zI?zXQYdv9kpUaKQ72v-o9!h&nS6#8M?`u!|EuPAfilR@Ac0tVESruHKv(Y&JcV9$w zeRvAL-9Gjh{^*MSJVryscZD``gZ<$r2D2w0s~F8XG?^bXV)E;KbQsu=JOlx6hYh?@ z*g9nB)=xddgoh~+HzRaMbToB@a@#H^ygJQN{Z@9RL-hXF9;Rw>t>j2?8*yc_odhvE zmmR7p9O}2E;vCyIKg6#X#Q{5IBWt$QQ6Vx7AABNk?(dvM_D`>71PA}pKDVNHQS)qN zAdrZ}y)HH#nVLduqsD6%tUw?@i8w_ty9|%EOxnJZy;9}+AyJ@Z{pv7c|K%QZ;m{>4 z^KHLuv#$sUxIp&Tsk{YC>=`Z7d*KyPhf`>xG<^?rHr)aQ7?MH2|Kq?*0=kY@E}Ogz z?~ghRpY4F)BHBTK?+l^E#2ku(4msST-nt3`XJ8B3V;QA~DZv_QXG@OwL0-Dem5#9U zw>wG%`B2Iqy$=HNr0e2@4`Z3Ku~I3|ygD9GE@9xz)$MikS6RGC+}FEPoNEfR#4Xjl zwYxJv9~w3ayV}Vx4DG-t#Ia@9UUaa6Kp6;B8p2bo;ZrzxefciNH1IZV2O8zOElW^i zFpd1~&0QQ)z#~U;p}6K!E=%uwwV@q#$J*-U5ccuhn`fE#bM7BfG~Sg+6<|&aY;&Zd zZS!fw%??nKcuF+ws?*^#lc9UZMhdEzmN zACWwmip8)a4JypqHoHa<&Uc3U=Kz zw{KJ?D>eIw!~17;yGUYGxWt6lH!B8shZ0glDQ}KUlszISnw2;wbGJg%sI^C9{n5TB zB#KPL#bF)3TbScnE@3JIY5W-O8>Db4wdYjto;#Ze>psOXabWr!J#UG>Izlq@uve_9 z%(-G2M5$@dbIG0W@nMaMXX{y~&xhjnVhV9Bq(OzII^?24pQBF{ZfaVD^4RBH*#rK@ zgMMPfYmTVc>9TN@$D>C2>lxp_cQ-XYJ3?mR-RHMli%-5Cpvs(bm3L41v6TZ;mlgNr<>=bccn3mY@C->}cT>U}YTNuuhF>nYXGAt=kicEQ#n zh3ZvT9p#{t4XCW_j1{NR5?fg}&J6uy+;0~`%-s17W27gOViuKW121qel)qjozg;rM9P9rSP@>^${DSt8ac;H+ffNvU{FxxL zPXYl>A`@IEzd6dqnpgvkh4vO9I+(_yh47)GS1xls<32C>brVx=_7r{d%eJn!4}Wjd zCukt4@1o1~D%;kW@$S>1=wa(vgQtN5CtE09d-u$So^dh6S$=r<+Db)cv%-3k0%o{p zpLXo1-~=~0l4PA2a??AXxkd2?2z1v-Pz%RWmPbs7+lJ6*Qw)1c3B-J2?eRE$@e&aH zXtCvM3dKCaCjR2p0%E=nOkMb4TV9!Nizs_;tBpF0#ml4>D3-etgBVf?;#uYCEO(|bA!MEhHix+ zA&{u2cTkled$0#xR+!ZGI>)IP*Kzj-dkFI*%b-0EDei9woXoj9^htIJAm9TXQhN17 z3x}4YXgE33%Db13g(rqgti(pFw#>}T$b^rV#A zPT(VUZ}AK-pERwIIl(YYG)I->xYpX?&7V%!OLT3v);EvLQo%1>`2Nv%!}jN6R!9$9 zT;|Jh9-00lr>bn8ghGuDOyois^jfd^yRb~l+h|C_exH$C7T_O}sIzCv1&E4&< z3~j)v!0Jc?1KCMXeR5g<<9=TR-lT=RZ3b`aG-9giP5E&m2y%I*YC9H zY)r`PL8}G61%WtTtirvTo|oRrMFVe8feMw0{B?ZgS2f4TLLIBo$4r@{L7+MYfk$?~ zIdBL~Wcc1r+Pfi7T(lv*g5H6*Y48%8cvl!?k`K2@PTUX3?9gemp;%(q?k$5E>I^OU z`nL=0;?YD_qJpwc=b(87|Aj^h(yOZA_SFqKC5D3-{bnK`@|a})a-oN62Q-y+$1~lG zvWY4Ff~`ljdb;I+aliAIikHxAy5zoB;taN1bI2V#rQlN=5&2MA7dO?)o!L0=2b)i7 zx(Al3)@I|*@f`3y?T+f(z3182IBQ-g)xnDxfIK9JQy!qn1658WHW0v!1mUL^4ME@u z7S0X=WmphU0)Z=r`%X}u3YPm=K<$#i~LV%dE%zkf#k50MlkCqCp_s z$9mTg1pGdZIwJSei9-*DAv1*_AV%t=d8YaHxZLoOSl_hkF{a2Rn%&YuXpL9zjdABY znIu_Z(&v)5WXo$flJ7G5=1!tk8;_C@^|Q{Jk!<-dF17ie$6MGkR@|wrPWE$#O5Rl-))sB~^YgATPsk9o4@$HNHr-mT?ltiTz zyGpjsdLFy_&DaYAFm>HpjtqgjCWe=6Ju)w!KwnLtI{S5DDa@pL-?c`InpYjVy|BZ_ z+%F+zJuh#@E0q0sCimgDx!`*0Yo60Fv6?Y+eplABONu_ax`Yv1Wl7M_p|8sMCS5i$ zw2QqMse9)yG<(L6zWfxKhjvGew=R@McS>TCySyOlU!q#A=dZ_jD> zEeamVZ@n$x(6Di5W^?AMi5gLb(0`xj{?U|G;M?8Moh$ZI7c^hIn!ycH93_OY7tt7U zubUq&`|1(DX#YI}4Y^E7J#R##hEsx`klP~Iw(;#aKl?$cdt>J=tuS60jM&Y# zhk4EMx_-vmpxT~A7=jW6yl61_3kM)jGC?ka$8cP@kViv z1^>r%rHtfzGar+QHV@2Ltouv+JhPd2%1|4b8llz)WKo$bMq8%|zS~CF4Dm~dBhY3#g%|%dwtKW$w?!0G6NUwoN={3p&XViGnn#BFCBvHz(lkmRB zg~rv1ZJXoTqH@ZuXVczW$L6t}(!}ogUbbuWGW0wD%{NhR@kqAT*rX%2?E(mV{{Wv6 zEh6HflMj_hV_zf!u9BK?`XC?{3|V3tcoW100&*S}G8*q6PG5i5bz9sI$P|)LlozH~ zf&?P^8h0PPiOo5%KPUMmy+x#OF7N_Ipr1d#1CD=e^5cyA13wJP3KzS1cstt!-x{fqi@i)K&SH2^=%T+)i{7EBOK%UTf z7B#cA-4981Xuaouk(fZNi>pVqs3_{VS6isKZ zr%SudEkCM$F=6+~nLG1H-8PzScd3kgstoRsKSj)gD(!x6+J3f6)vPs9mPz1jbHtJK zPT_T`wh}}$hGX9;*I6gWHS~GkCxC$eOwkgGFZa_-Jk$xYKL0fW{t>>WoeuAX5+|aO z31lDWPG0+e%w`71>`V8#EFSa;A*3j{6LGxUqhqq^@9%Cma75b6yu$B1%=>o#P+_mw z%H+;N8;^&!PhcCY+s>N_mUDJfA5LweAwB4NqCFYDLthdqo@W#iD8?A7AjetBDfDnl zf)zN;966`;Pd*gvZwn6)_-pG=iFmPRWxb`@Zq?<}NA2hOuSW!hTP7u@3p4U0v)otW zJy=Oyv%J`q9w}}xe;cx|ESGMBD-QnP5Al4NXf;Kj#6TG?{;i4!d#1j#LH&6DMsxUp zk@Cz*OfW)qIu_XrXSVV!brWAUL?iklAxb+Skn}mnoOVd>rQ0GbqWWnb<9m13pv6aa z3`O4I9d>0TmQ&JC_(GPyPb-!Vi&y3@Uz{RG?2uHbA=!`nlPK~g8DbJe?4EW7=MyeE zF!IFK3SUJuRDr574xN|!WG|GGYhGstYFNWW}XD-h7Hyb?7}9FY)y>}>bG>-Z)JP&3KC(r=%gZ4Z#- zrG#wBKw!xSgXH(P1(F_gX;5h;Wb+OPWWfuWP8?=js{*fdw*2N#lAiGc5cG%nUYD#$A@_f4%D68Jm!onpF${Y~5XgwdKIHVZ(Ogn1Ev?Nq;IJWql z&(}Uuq=}hb%TW#Dvv6IFS4#`gv)`F@7z}U1m3ey{0)wd5tkyEWx$~s27A0nR1RH+u zuxV>77&K$ce20b-q~KkO>1DW<3@nyAs^C_&)Rthtsg?S$GSep_{8k*(ARy}-)Mwb9 z(-%x}Bm)F2KOR8)w(?#ZKE;u0A_-Sr@>2Dv9ayIyNj$XZ*C6J&ztTTuFeyt+CrX_N zyPYTH8sH=1n(QTsg6&}6;v7G}PPI_qcd~9cw$PfPz|C}HQ|S)!Ng`V1dUBgyjSEdIym$lz z4BLqxhd=ft-abWoMu5*;In}2`mEPPWQaJa+6z*!YN5z^h#;x6bR!JzVd=*fhwz0<) zGU5rtg!UQv`rdfD38UWJDs}W>u9Fn6NS@iW1%b=@y98*E^`g>k_`obV!H8T5p`a$D zAD$8*uIH1a$&s^99Nfgt+*_Q- zfdK?6G;mFkw1gCmdx5s)euVHD?J(Yv7l7N`j?cB1UEwdp6h%4THlD9k>H`5 z0bY)psI|6vzs>vyJ7<%5I<**(GxjA1C+N=_hD+7G%PRBFly>KSXzfR}?5MwQ9P2)L zxoK2rR5`Pm2i^%;1%Y?Mq1)}7%NoihCfEkYv!SxjowF;y(^I|QIw-!=bw2)sjxjlr zDnoxj>GDZQ7EKT3s5}OE{@0R4vbKGjgmSXoqcue7QP3JHPt`)@7X9YZR%P(WRr-NRK{X z&4RVxtGXFpmtX^&Rel;GB%GnVMG;!VAWB{Zfpl+Oi#u1c#o?*EXLyNHhxFp5$xow- z^dx3mTvC*qzMZ+f(uyp5LP5obZbml}#l_DG$ZKT!x3J#v_fQF+h3=hK=_WQZxg-b$ zJ*X8KNikuiJC)C2A;`Y6{7yCL-Xs>*OA7*; z<&j^qoQtgW*+mKI%5|e&ghCPP_qH}5P-+VT6wKX1t%9Nx6{lX$!xS~+ zR;wVhv1^j{@AtiTA1w-vUd{BIOr?HqOl(cFGn>??v3|jXzZFu>CwE4Sx4?K9E7$yf zoui(_!g5#picB$WUkg8SLB`hi@Ki2pP;l%FW$%u$=_S>{icdi2iD@;sk&$Wad4Dt_ zf8eI@%ij6+PsaU>-^m-yo_=r`{#zV(5DN&jZ<&>sBh_L>W2Fz%UA=BdVkqI*cH4I5 zt&@s6Cphs%asF{E$+Q{sXzI&PE+B^JuY!P-i#<6Xva`au+g5WHx{O?9pCdbIkUxWf zylskWP;G8*qpT@(P#;iHJkG6*Y8YFK7BxI?PU$BWBq`T7x~;d!*i#3bEv7k|U$xr!8k>R}?jo`{2B&bo}2IDF5`Qf7GG;Uph(U z@9hu*f!|h#Qj{-1hFP#E_r6K6P~IVD=QM1OZh9)zi+FcDvxU+(Yv%nWHs#t>kJY zIXpt~#b##GLEWV?u4Y>egPd#}2;dGiiR}Zyfu9NR7n(-#g#3DES*fw^jXJJ$yvy7O z{EmB<;e7OUZ5Qj5ok8{EUWpu8_s4gdpGjJFv*Qv`8LuvW;|No#P8>*4zTd*Y$p4k) zUBwWM+}58Bue!$qqHP7q?qbnSHj16U9tiU>OAdOT{qWk(GJTj#e)d=+%}bI0wSBgK zt-5B1x(x){mf(DecAvP+c|l>dyod&b-g_xMNg6V8POq3wy#KlEZMx@Eo0pa_?^En$Qj;jD(klKrAvZU-8y67*m{^a@3BTS_I|Kj5%R$y3 z=>h?+><-gsgSV3Tg%dnZd1*a&;1jcfZ06JiY&&nMU%@Nmxt;LQv7{ow9`mY4<(cP- zlID4cF~@Fw%cl-<4jZfEYW+e?A!gv_lI6Ce;!j(^Ow{_;65ZUK7L~C_-ha?uvzYl`#plM^Hm+8boa(S5>_?jCeYg#rkb7ei zG{Jp36P<)tqfc?Vcr{epmnLhh;iTzedpq2ZUi^1u>98huDOEF8T}-FXSGq!uZEDmSSz^a-n}7VAi|F}v!_ z@JvqP5Kg{zQllUM){!r8J1ncypKEDwu*+Wj@gV}{yRWFRM}Hd5cPNrQ1QjCY<2797 zra0?!U4oYf8_wK}Y%nTvvhZu?WxkU+lE-Q7#Q~)rbv$@Bldpj*nRMJfUaae>wJ6NU88r)6u+9q|N%0iQ&-U=7 z&f3ivDtoSWC@wOSEj}h$on<_V*qsHls(wGmn_tR6={Lgkl?Zm{2 z><(f*-kLLtIAr`;sG%#}T)}G3sSx2~Vc~N+G%IYg;2>faYVgn)1h{Ejqhe4COf@LH zN6tifLd{pfi4&qnwUF}tH8n?`f7|-{elzGwEmW=YbpA+sb3l?143A!;>>$u|MZ>v- zP<<8#HS0MhevNPZrR1|>T@!@$&b+uw>2$!S4#6wopTY%Jg+`_$A656}d}yxWOR^V# z|EbX7^4!;RHMY;EFz_%&>hPVd)Uv8r-^97d8)1)&KFmME-BAz9JFeRQ%(JV(#a&Rs zR$bZ!Pd5i?Zw~0%zT43iBkh?l3YuuG$E#;sAMGv}$y(4? zDta!!mAQtPr=|Js-U-V9(>;wj7o2IuN@!J9Ddq`BB-W@iVe_c&acOC>- z@xC3CCQ3InM^Q_@F-dn&4a%W)>6x&i!k$2+rP?YT2!u_ACqAtpox_5Fi0Gikbi$iM znOJ(}=a-$1v`6U6Py~Vi|81^Fd?1eQF-|ev5T0*g!5gy6ZvQ$*OUgJqgTui2c{wFJ zWK_S{x>Z+ABLm*4?Ba%7#uAt?N;(zZFMOrnYmMe67b#vaxdjgo(&zHSpm$c+;q#gn zVG}FrA%bWH)LUtuMbxYMYl+9-k`RIA*B=BFL-CCsY;DMNJ;LiJ&$sCY@@6d{4=PTI z$89A8=|R)pu{F641GpgXE~oq$w7db%IeoZu19O)weh1 zIiqrFrgQP$+YoI=q13%>I7dPXpHTDMR-FG$z92^*S`cukL0XSZXXVIm%j4vq;<_SV zi|^0Xs_vj8Z>Q`qj0!Lpw4xfX9bC-0tJzk5p}CUVAQLi=n%nJ4C|N=BFYgz=BC8j^ zEN6WGy;P?+MEW98RlbUNEdd@Ipk_=9jf96!T36^o+F4#zcx!&z^xla`Pq!BIHGXi7 zu^Cg>YU3_aY>*?{1_I$#A2zTOII6 zi}ze5wvyO1Bop@1>bg9)^R&R^gfvqT4>^?a0du^0FtO6jokvX`1Oz~U<4q7n+hCms zPBLQ@6`3Bjj4KI=#(L@14_UttQ5Xi>*uSd1U)jU2=1l&@X1y4^KVH{*4sp}Pu;bH&IL^gu(j`&&{ueg7)cYxrfVzD6S+!6X z7>?;_F>a2-O@2$^xu2QF@%uDYGs zc;!5DbZjS7#p53K((z&Cf#efjdZ?lri%ow9GPBxu&Hoh%00Mul>~y!QH6Qbusg=>Q za2_c*f^nH&vlHo^UGB&hH@W@jh2(SfLtTcbRfLV2ks~q`1fp2r(b}FcmqHEYuva-k z&Wx0fP-9w$qjwGa0%TfHd;w`wVRhR5#N-rDqs13BGE9dGjF0CPOIRhp2L*&|aXaa5 zX<#(77g1f^vh&vSweWeLeRA`bnl-*7uyv|~MX$uv(3<6)#WfDk^Ihy&tCWE!yCJ)D zG|pY~k+~VKJnegVcfK^>#D*pAqxzTsZI(1kJEaXG7c`@?Q* zi%9f>g(~+QiQ&p!7r20%LH@ffjb1&unB9Clnp$Ag{G(@f8f;A7XjRlEQugCL*0uH+ z5YQNO+-g<_fleJIVWj;$;@0TV*ei+t)*MCoBPMp=Hpu1l$soYJhq9(|hDHeK%1aMf zmfm76=zm!e^nJF!LciIOY`7UR&S;Qd{RSi1(nz+;TFUu)PBPLsnxa>gk)qt7Edx!m zf|Ul;ofz2F#yFBal%9QRcd}=b=Ls4}=(-N|Qmog9nbof1h=^<#fi@>6A%3$-qtF)GEgxlT`$p3H)UmOFW;N&nZ$4)w@%z9` z%t+|5l3-Q^shed1QrX`{tIG);w$H1{w)X1%f=JA3rX3ga@h9C+lU94~vFO)G_4R{* z)(NgX>o&9!Cmyk_r*Ks1so7qv_ZUBwWZc8PqT`S)Ro?S(iy&K#cz7rCNIe{%d9Jz5 z-_&am>nsf^Xs4YUpWJSPe@x}n?t zxb{qKm+JPR-PcEFA0}G7RiH6?!gXggw|-t6HB(5e$bxi02puo(l8-5Y!1X*^bvOu! zQqIG!O(1S9RSm_!WQt3Ak_ZV|W=m zh!+O=&L9w94FciSav)GfgIEcpkrM=gwk|HbYTF)*1rc3a?PuQBt7$fBceNsvgKfW8 zUdX_oG3&Xl$<^$k(Bpa^KtKdL6_JmRNR^wf6sp!$eqk-gE156IKS-w`{ z37Bslmk$WU+dV@i#5QCkT`+%pgk0II_ZkF5hCm<;b{_sn-s|`H77} zJ3-v&Ox^n*5F^11FK%?Zab5eUwn%=M0|MK@k~TrDH>r}1uTj;T?Vy&h^EK2K9MAGz!s(8pV#AHAH8B1A%#%r!u^MmzPw3 z8@gP^wRci{cHa6P+17<|<38%OB4O}Yab5K*mhq0wWSfX&_^9Vo?ZCUZ9kpgX3j9X) zaWm)l)<$k)jI=pwc8L*;;4rf+XCARsckaLmrRIb-CpcY#UdF~gla zt}t^{M4c=#zo-P(;f9gYb=*5v$>hIK=QP zFr$_QBeSM9(`gJ)+tG}vqy=p1?*G@`l|Ln&_wjGXvu>6-x*p|bR9>y-nMdY9m#Lwl z6(XWgWLhd3rWr=C)uR=znxwXoM}?*$M&5a{x#0!m6{&e(il})lpe0D~%+5TsGtW#v z>~H(*PXEAr=KXrjd_FVp_v`g~r*{7kc~+xJFGJb+>I}kNt8YAGcwWhz8)v|kxCz*s zs&t;lH@|~lmWRGI_gfVJrbxsM+urM{J1^>=*bFoimAl@%lM1WIj*<_j` zO9ePC@gt5`+mXJ> zW?F|MEr=68B^|OMZ^2IJM3h@yQO7V5Dj+ABPe`Gor}Iupf1!4e4!s+G7g5vk!PVNx zi{fc-ggz zrH5`xV9gAY~1+4&kFAANeXpp4{(cFBqLA;UF(R*o?XX29>&0HUb(u!LD zUF)NUT|Yj;eNVS$Z`F-IscD5ILX;4c*#i*b9*@c|UydrXoTq-PcYu^&%-nhLn9Wor zf4?01TMlfUY^SW}Y^1F2(v-kGBqhEvnRLP<%@Y=`Zj^e$Bx8lX+hb^s`D&naiUC{7 zZLO0bWi+9+)df^&|I_aHkhNPaN5LhKxJo14kxhrl(0`31nn5X6}k@60?=2>p6=R3fyOcVCmFlXF|0o zM7<}jWW262@5&_k8&gyCk*&M34nNNbAzH6cO0w_Jl?Wsr5~O(18}FGmby8278>ZAJ zk0P)I@U(v=@3il3(c!EPuEER^4K4=2QbT5g44VrlNv5)hu~Ec@+F3XDSU{>(^n%H4 zmx5^B&-T-Eiyk(PhK2-hYyg@8;NJJ->5)r@qs?ZcvWCi~lnj?!?A&-eSto$`H{JYKCUbj_1 za~(Acc5dUAqhWq?`jlc#4vUL6Bch41g2+}8l4%*@@CGx3Id}R#NWU0!PTL>(-YDIi za1c7k_HXvTDIrPPUK>Dvj_Y#pExCqT@fw?vzRE!AT*Onh3Nvlfuk^`Smz%P#^ovl; zaFOQz*~FS0Wm%S}5RcoGY0>E%mT+|ZB?51;?&zAvqvlJRX81*p94@S-x)vr}`ZefH zbeVC@&Az+Rz{#XxIr*u>c(DN6|8#(^0yqLL%ko2>KZyh8q7n8UnZq-mK7QDa{2>*x zHj{C;VXxjsu_8v%*<)TBF4XMQw0cd=s}uE=2AVDEaiA3s%yKk7JK>KNvMjF)hnxHL zPBfOEVs(IiMj@*eV--?DcKP}G^>9=XP2GiIyMDL3&ZfDxQZc&9SI5fyr3$cHz6!R% z_apgLQ_E3I2Mf;a(8nl$&fa<_J#|h;pn;9XxGnq<-ldC(?q!)Y_DotdJ7}6se5!ay2+7^KtEhg=Llr&TNv^4aOCz7sc#eGa(_nfOXC`8B60(U z0)7s)em>L}4PNKfNh9qh%*s4v5Jm^){wF6DP+%EWQ~%b0KS92X{TvCVE9+lJd7ScS?E8V3;=P9=U?aTXd6=c-s$3 zj;9n1%lqXXWp5J7<+0WUy@{@BW-w3YQxz~$xg@AD?_6jU%i?9rg$TCn`c$eurL!6VotE`~T+Tcd;xLL&8O?GCniMwYi>O-L>{vt>*gfOy;Mk+{5s3 zkOl!d$UX_>kzRvkfsU8m(LGfwOQby)a#G7Ov0Q1yTZHiry-Vnou#v$!4Ab)eK7Rj8 zx~)Ih|J&RS_!IlRuekw#qste6g3qtH0skyMzmOa7k9>!|;J^Jx_Srv{FWF3*$Ekqh zE2S*qHWl!0LYXUuliHnCKy}+^m+@yR;O-?A5ScDdV27xH9aGAF(9$BgL3yz2^E2>_ qKsP~gGk-Oh)YojjC{qJ}e4zr02r$9ds$UWKiojO{{+n96cH6MA~y#kAqfy?91Y4%!bonTAQ$OYj4kPOf91Q+x4*B>e(RiFXP-azS2g`l zS9Nu*uIE{+f0yU?TZ?=_YJuIR^&8g%$^;7705$+X_JXy5@?X3@5At6ef9MfCQzu<2^LgKOA8AC zC?_ZrsKCPBa_Y>*t0y{a-9!8G2gfC;XRb{0TvH`;+V%{Ywe-6m)2t>tyG;ASb@m*u zx%0mA^;_n@e8tMO|5&#^Xv4-$q2FxZ5w>$zc=Xk6NcU z{PpT}|G=9;^xgZh55|w!r}59YD1iF!l>Hm9{~IoQFo80`!h&i+`;3b+A^GzQ_7;{i z7f+nJdMjf&!oYxn%}VIq6<)=lr;_Cgw1!dO< zou&I4Y8q-uuvStnsg{u7m+Vg;94S%%#tQweG>+c0MWB*ekzg-3mjp;LEZ;){8#Z!e zR4;3Tbq=m{d?sTbIs@s)J>gykayo&5oKGUb=?m??&|`}f{_#Ld;7DoXaf0i+C0lh5 zU57>%sfS$q&Xz`na7n=6?CtdNH9=!6_$y$VPfU(5EyAcqUvnL?Oz?y=#SeBG>a)NO zXl&rSNid^tV7xx}t@0$x4x=i=?|1p|{dJ=@vB#x#c+gEaW-cPLDt$%y-rtU%84F5m zAM2zU2DHDKO~Jm5Pz}G3>@jeyu&BgMeeENhy+mKv0$;f9gpjzz>iIC#0t9kFoAhor z?ht1D7JFt;r81nP2SvghMjUXxO}G zv+aiOe*Y%%G2j)pNHH&!q99aDKMBSAynu}t(~Z|L4pL~EiyuLDR3neWun@FbYrfuK zStiO&;!cVmKUGZvtC)-xtvB^t+xU3(ydC>?aOk}B=9PfhN0?F8OMQmrg3X@ zz^#zOZR_+t`5vnf5~Lj-S^sI**vnZ7_3&Ov*TOT@fSm(7AarR*=Qq{UEiLpZETdUW zxRXG(fUxPs!?D>2H_BWk;g|w(M#n*%5reXKF(#8hw~@aFeVeHd2?#=8iEvNRx7Fz8 zOs$EI-OSGN3t74iPa?r5dK>N4I^YPlP(IJ?fBPH7D8d~obhIpD74fI$o=VQ0rbs-h z^KsN;zD=r2hi55CPih#vg$kE9`YH`CJi3CgP{&jdPwuz^aX> z&9x+m73Vb0mHc{f8fz|AEhDVj4=#M4po6km)Gj}|4YpQsn2&J8>l*U0;13M2S><~@!NgA5RjMUp$-0hsyaog9va%5WX`9CSaE%4p?R1(CH z0Gn4ooQPz(f7fdW8-8Hg#1A(YvOM`-Xvl{KSUJ9+t`%^G+V#_%AG;j)up+f zF+pGxyOIR?A8ev!B$&W*!{;Kz!)pwuK^7IMe0||MuT&W|uVbT!KLZgCtX)xJYi(2` z@UZSS-@=>?X|GBruq=4x z*ZuPHEj8#f$Rbmd^TB<_F8%^#{yDh00TWL3!DnfDvrYTHsb1`TnqCC&Q}q~(tGZzA z&#wI=t4zUh^~(<73rLWbqKR{TTB;p0`Lu{mMp;&yMf?@XI&sgaeB~>{iS)p`XmT^h zA+B)_>YvM(VrO}tYfzV*VE+9X(-|^$CIm>JEoIbP|J5*!u;U#!GR#8hemJF}zL|Tf zj$_MQtEW#JR5le`b|txu)(WTcn*NMRAc2E~>me@ZeLo2IWUXan_i|jP6o1+Dtz{80 z*~#RvGl7Go4v3IVa8IAfcqB`AIE~L1V{c(Kdk6Ap>t3~-A6J7?m!;}Q)@2)SM6%>T zZ6EDsY3(SlHFb>P3kV6cUM)U7LW9?^N$;J|qPZs;*~cxzH)HNMd6%M_2`Az=)IWPz zl7u{HQFt3ij_X=$lgoC-A3OhX@5@)`7gPo^0%6&A5*i7t*Amu=D6G5IATm0_b`sd+ z&10DM>q1)Y{7eF?LK&1wOebFSb_x_mg_2Y5NC`9E$7G1m=xV;onkD#MY71*c(rQ+f z7RqSQ;4|OzDvTG9pi_h=KLQgQBcQ52e$WFn8(%=Dk>J}m#6l9B7G;t^H?iG!l|%7; zeG0Tt8VgV3PeC=!5Vny7F{2r-nx;`&JZpN}LO)@)tFl1M`tr>&_DR7bSofueUFU~< z>yQK3+G(!)FX$uL5nZ_!1xJGb)!)b`!A~C%f8sGi0hzy+K!J>_A|%{rB2V!R3DPbL zy27&xb?m8w%a-!0dk?k!Jd}3m5v_s*vc-+=m_{4a zq{8NUjYOj5>$)UXCTI|@Dr|v!4C{+pUBisq#VwqCjx(1D#poDR9yh4-UDC5XN8_r$ z=@`2USLNSYW-nROL~WAp6Q)S3`{g9)Io=G{OGnbRFAwR(>5wj(1o9H|B{=4#XR}M= zlxnOObqIc@%4G)W+3vi;AV%*I&J>B){>AmdhFx8UuB@Ov-UR|U7DNwR6{b`F|FdBO)4d9P0Ya=E6WCIYS2?PNnB@4x(+)VeFcOyj~^_( zejxJIAMBKKlrgViifJLf(tJ*;y?Zfvm;|OkUT-VP55-oa`GIv9!#`Cr@7iFL9d_RD zrQ252<7@@?_Wh1-64dZLuM8DW>csu@Aq_Fc_KJdXTTnvJg%YI`1g-TPd*+@!rbYbK z=2BuN{{-qaVxzZVL?LV;@dXAcJZzrcyv=J>?ed^^G5z%;oZTHh%2Tu~-zRfPuzz38 z*MBWs9LNafb334YY-|oKXQuhGuTM|8&VK|p?ZCKekq^od8p<}F_LzkVWhx7vD(d+H zzkF4u$eQKM<2JMGs-%Scu4Ee8Rep0}ouBmKrIeECN!=;Z{UU5GG)w|iqYrD+q!qiH z&r1_TJ!hN3q|^CF5tXjBQtu{CgWUv^Vw1a^8&{&q>A0WXZ6y4oPMj|RK8K&IKKx|q zww0_pC+kA4UBCeFxQvLjLBqj16*kAENu)Lye?pR;ma)=JYw&LoqEg484%Q!|H*?j{ zj=I`=B*<{ln)^@IJ80S2#tDy`1zu?Xsj)}h;ca6f4koH%n3#c1%&1D?`N*J5jU~*L zs)O~(Er}7jBl#wV;E|}hUp6Gl)41WQ5P@lX*PR+M4RdZE=Ja?>e~9|4TRt{xa>id8 zcE*|3{`RWW@zkyfrCZGsYgEQzO5cM^Q7N&O68 zmn`c$djnG@!AxmY z#JX9y8niytA@tugCt+*mF2r9iZ5E~%2jq3Nw?fv;1U)00@XYEpf7NXYRk*fZxfa>C zD@urwpna53l3=Qos0BxB|2u}u$D!f(sHmAyEmp!A40n97y`)>mHnsyPGzaT-{&%|%XvK|@=jvL3!zxWme>BYl` zOd*5ehpScK8>e%UH?M9V7CTx!Kd_X*EBSFoA z1xLA4E`OciD$hF8v-OK})Ug=jSIGWCRAk&vg0zdU%%8Bq+JmrMG$s^HPGc<*s4li% zxNN=2Tyj{P8nsAu(pxe+`t~A|jq#!Ggv%zBkvXP4^_y9G|6G3Hg(jLon9j1`$6~4I zwsvh{I^l$wBC&_bmGHNWY-hrwbA-u`xtTAm>Vprwak(h)rQe1B2>qr*g>N9iYp4YX zJ_*{QW+R#`srDKJSugIf4niju=tu1ZE#c+E`;Z8|CdW5ImQ?27IulKoyLc=_-kwQn zT(<#Vc(d%0!(_!Sc-SiXRN};c07iiZ*&_S|!M(}E(~rgrB;J!3V#>HZCAR zb)&hI1Y@f5HriSeSkjU5+*)am17Srybaf!SuR5_p@VIXVQg?RY<+7-Fk-Bj%2{KQ) z5%v}ADiSC^=4^NvYW`U{g)RtOwD)8S2`ud2m6=F@U<->$fV7I*AA-XWvf;$qud#xw zff|`ovO+L%5VmHXNI*|{$MU}AFY$2fT8JM>YA15dXZGnHdqX4L z+Ec5at32PA&|iqLxh^kA5W`MmAi=^H)-A42g-|QIN5MvwEnH#U4*z9`)ObL*0Kzx4 z6P~fegw8vaK3$K7#+~z%Z`ED@i~k8BL5^ch_}KoG6=KXgNWsX3?WNi(kq483kU%E* z3iUe4Prga0?(!TqJv;oM`UaM#@7J;wbeo>W(=WDIC+r9>zBFFEsNm|7w5EwOJlHWL zu-t6E-{`WM1e4jui)}0h@od~B)vC>poguB0%G??Hg%5S_TG& zA}rJt!e56#DNIj2WF^yStYhn!1(&@!(hb}4Ju5YC?AkY)F?;Ee8RtJ;KD9CWv~8%d z56d=;V)InP^N|O}XU~~G=-GDsVDmZc^F}AZ3)s^8!>aEL^6@o;QZ5NH9E=wbVe0y8 zhrMl;$_2JXhRU$7pO-!rSA9S3qUf3Rt!=k45gS3FW)TuJ!1p%!VF^0;6yYOimAWz` z_1rwzhIs->*Qr_`3f^m>7W#ra+$|GjV5z#%DR@F(^L#nNXs+Gb<)==LUs8_RzQ4mf`OEO2xcJ$FX zlV1ucyqGOWW;yPu(gyP99lvhQ4kAJB{t8{m`g==$Xq`)aKeQYD6P_$RXcMi^sDss8 z@nz;)AGkRVadjkk_mKpXxUF<-Bddi3ToObN*Z@Hn31r_$6F6#5oy!Q#r$wCANH#Nkd__KsP=EAtLchjEAu76biU2Q+6Ihnpy!0shF_Uh@aJ^l zi3#Yk?rqQgxD)vPor%nuI+X)9lKFEL2{OvRMi$wW?n!#LbA4Ih3h_zlyG-asHSyGB z6q2BwB?|N?B7wzvtjzmVwdq^psfSww5+y=m<3+P*;jn-L%av`C06m9-i46=z#btK0 z$8_w_?bt@2yAP1_H<)4O`kUuNI3c|SQy!H(nI0d=5_FS5dxcZS$dtt0z*nLS8M~)+ zHI`mF;Q2a>x`c_&xmkl}bXzag`iL>Jqot57u3rc*8bbyz17^_YxyyAFsZbs|`En zJH5Oa_p5rtKx@h>x`70^<62|4`KB)$`v<`kJR^ZUo~&D9@g7?{azx;QB)#esk0)M! zU8R%K-t@V(eIUWzy#^CIWHgX5hsS9qW+B`hU)UM*kLtqb>xDLhJ1(}S>e=+c`ir&? zuMM7;qWwophn(T)#=9M>p02t<9XsC4Kz1>(dG&crdw+#F)L4zytaR$T=zFx*o1y5l zK$NHMRHib8c>*^?AVeMg$B*yJ&Ry%j{^_$oMzO#e?LWz4@ZQU%j!bv)?g4^{u=Dw= zP^!GqlLTuYG(6|;)18QBqjQ9};p->vwc;;^&ckXBx|9fV1jWlyX)ZCFr)eR9JwLJH z&xFQhSh`+ihiO{IhmGft6s{EKG1<4{U6nZ>@*m8Hs$QhRccS1p+m(V8_oyngTA%e0 z5z0tF`M{pGyN^E`VdV4I8ibQEui=YO&tZ`x@2YC}Vr!LAbr(Jemy_THTXQ{@Iv`AE zAln$dg~p>;tiYDt#o8M#VqYJ$@OzxhqLyRr$eK zGX4w4CjQto*Y-N8@WMTcHauG?%~z}B!K&1i<)=Ql2kTg6Xx@;)Sf)F%=IPUcKK^$N zNI(9iiy%PK1y_@xUeL!}u=y8C2YPli&?BUL(B)#}tKyqweY@W@TrWD5a3ikayeP>S zQ4w6h8G9V?IN&k#DF+s<4P;zj1|z#*Y+g%t8l>a2m?C+-rit$UCJ*;b28G6Uq2!2n z>Qh)3*T;hh=Y?>a3J-yGb5zTpf)e_Z%0s)mm_fJWqdZaPs+$RFqx5FvkZbG1+mU_o z4c9Ag#TSYWNV@zAzI$(8NrElX#uECy#+f9LZG;bU@)?uIglPY~ z@kq4z0qUSHFW?8ERHfj{`wl~m^H4$M(K|!+fhXD)z8$xLK-|tI>hqKpPw2ZlnLc+0 z2+uYyRGoC0wymbi_r#_@8Dk+~!4lKH%l+dqW=IejORd4AD6EH+svKe-_7FYZ;_u;y z&)PT{+der5Qy`Q=!td}Zb9%$w@;GspKH9D)9tSsqU<2;0=TguXeJ zIt1l1kWg{2NH5N025Uu*d|pS*s4XV9zR%~lr0^Y(Y8~sQAtIry=V+XM)E-}eWM}wE zovc3?zVVpVQCn5{D)-fkyR=6nm`u#&z1P+^((+i%}PsY-b~R;4juHqEl1jKLXu|TPaq;c>+%?jlatBPu8@ya_4Yb zx@120@D;9`oJB>tM5R22Jj=Y*kzvD&3HXN6a5~87FEe<8GhRf|$=$19j~9!3!j?nOWHv`KBSpxU9&K7%gL1 z`;F!=ySPhcnk{O57~SL|a=aH%g|;3~UIDOhc8-T{1FFOqJRpHn!ZBqt1Ka4$jP^gt zTwM{BF#bW4=go!cAl<80~h z#V^H|hpgJze-WUfG)9d}tF))0^?Q6hW{>)}h^FBCZ0_GJ+KIGQ7`Y>fi#NY|&fHiE zKcYvrIi>6=!-~EpTBcB@=YfyHd=emAxxMoZh3S4i*^r&U?@xtxRdSLtm+7RXTj0yF z6*{3aE#McPVgt5XOM(fzu-YGK9&?C40RZw!zz_L9qAL2|GC=x2qoDjZb^kdEEOY)k zwcu#ok#@LS*$Wv}TX3wzs__|@1c8q^rq}ODaNZZ3xT+yi&r3f(=_kR0SYTQwHB-Ie z(IOSGvyEcRhsP&|lR)Dy!mCQCBhDlkn^H@HMlSRzI*_LJCc(fL2_)e6!S7mA=rs`} zXj{@ve3FphRRLhc){~%QpV<8VCm)YMx*WV`PZ$tXu%6-iINxzr` z3y)|%t>|ti)=W=+(*nZ&?$Z9dL;Y_G{-)q>3jWg+*eZ0RDg1qCa4X@0B_i(?4Z?g$ zk|89%TfuTc-kyzLnB*P0yW{PXvdYSvOi=pMMnEZ^OErCMJ_l&}bobMUSD)z>yX`DJYR z&rBsS>a-B%KXK+OH|dK7pCYrH-Ch3@it%rPijT)s0v~(^36O(yoDj%F*!R9%A~qI~ zAcH~J$Vebky;w>D+ld7vcwz$>NID5*_o4TnOcP;U(=+L(DC zSB12eRsONS*TlBvA0R_iOS=5@a;e-q3C@V;fzl2xa#&@J?M5qyj?OZe;ATgP*$YZ}jO8}>0Xw0|OgQU6`|D zl`Y$kZ><}#^`79Bz7`ORZv0CxM>TnnAUzS<)A1(G1Zm9y z`SlCB6aIpH)J5-oc0+MQom5buJ>e6Yw{=1I=1fEMmpS}RJ5vNq63F&SwPk%?=3iOR zP@fGFl=F6``4`sIp|B_hw(m+@cNp9Q+kJ>!h^V9RJzdMU!sf<}tZ7;s7g^8@8~)H3 z<&9tl3DV{bxl9USh3Wz&mcR?3Zh>f2fRBSh9FfeM0_WNgZP9I1&rjQ^lNbox}8P=X_v^C$yeM}p9MNwF_ z81vKx<-zyFc#w9!G_!F&3Y{ADwTA3*e?%aR(~$t%L;~Fm#rA;HRPw zQu>k zqP@Llgi?ljWq!#Ix*FTS&hdrLuIJdqJ_7<*638Oq?=s9;BsidP=TQ}|iBCjwu17ct zO?H{>3`UjNH2%>`t$_r3rEV)ei;X_?0b5H^$f?|C(6US#a-Ay)Fh;_FjdcX!SV*1 zosYXux%Ac5>LK+T505Q7Qv(?{Av@wLST-Bp6Uo_v`6D7@Gy~b9%58LFydYTStAeHc zwGR=MyjSd~HjJF-*hs8(PMtMuJKjpgZi6W_7W%-#J`!ukD9`zGJ0R`PQe<1jfHdX} z9CL^S7H`crn4J3c*gQ0#$-}>k8I2?>Jr@6J*n|jAGW~DOIb+UJoBQ$Lnsbpe;DgJX z(04;mbY^NKzyq)EW!35@dJR3|iH#CJ_EJrP19APnl<`^;SoR?P>8$CnY-6Jj#?gJuVESu0 z);+u+onMP6n?F-G!jO+URX*uf!1TVzq7cuZ_S?6EIepry4^M$3rGo^rAe^Fwrob{L ztUcx7h191>X6sb;yiuM1h$U=*r}ALM__9JV@7DX^PJ&hxES@^#9G>*E@uAW3VMoNu z(!~L)mtX<~yYl}gxKnC%$Di0Lnv30}==!2Vw|PIRBAy@g8}aBH8tx9SOHbfIwZp@s z&>Nz8tc3oy@SoO+E0B=@+0K1ol99j#+H=B77bEAm?uz&u@R{ zBAvwY<8c)`COzwu_m166T6QXtD-$w3W+G$i*J+xV?i45o$|J#K)=b<6%hroBG|qhQ z8`yk3Ev?q=p=YyTdglo1$)SWpiEZgBW7g#xd*hGosJPA;4&nYo>E%o5KlfkLoKHlW zoCJ?JQ%P_TQd`Rz)g(|@9Uch??QZO>z=SQXcb^t%MYPy|(Cx7YVJ0t^*UgvWj_r{T zt<>Nfc4q!oLLX7;Ma?95VIU^aO|G$oCE{_GtA}!Cl)sU1W`~Mjz-k3ZHa= zi=mn0h{HMv#D-pq3=fYNEJo*ubdLib%Xy4%O))FpXet4Gkb^{s)hs&ZB^{rxTxjwG~5~avu;k?VDWTpwidE^qlQj#4=f4e=J>tp;`{5$JJid5Ofnyj+y&L0 zSq+GIsa7bh4I9ok%@MQ-e9-z4E}|kF#I^~2lm~6hnR+(1x<=?h0(oQi`l>xglaDZ0 zRNU<~KfF59PS5jgQ}^XPD5S1NZ6&``%!YVQP2up%a-wB1(UCm9oZBPdWHdm{(+)4y zRs{bfa38Fz^C{a!0=ZTC-qpb`vW=UU&7Db+rv@^b>T#!fW3l->6t7VWRC=G`3&;~SF-0u*b%=~y$g^7nzfyj!>C zQs2EzfsT_vdx}%f9kwye;xP=uY$!pM9@Ij3qgiET@q{xf#^i)UaRMyAc4a^b!bpGBYdkk#C0Hi+PBu4NhJ8rCx-<0G|l2H4)P866bbHKFRCD# zM4va6s*7~98!L2lC*I>GjTLKdRQxiCR$H0Sbgc18{wTKEkM4ponje=22O=o@Wr2L;@=kj8;REWO zQM}_Dnog`Zyc>(&+F9$j_Re|-#UJHsEH6<%E+wpgMXKeDIxg;zpreh*5c$LhMY`6@ zT5;aW^(8G(&0CfYexL?13v+6U?q=p`2F73Zr+zrGVd>jvE^E4T1NDIb%3k?D4fN+o zM+0MX>dHwlnNC>clE9K_J9<+d7+}U95Qy@ME{g`=& zzoHUL-i4OSHEwTMp4c9Po76h8FK)c0@AQHX1uRuWTbA_7`?5i4Pxh*HKv49A1eW>O zS>&nSon~Baz69+X?TOJvT_y^y@eT!HY@I5nFQBvL!L|(~$P}V%<*^fQYYh+i2R%bO zp=#gtGv@C9ZfT&0(zGsCVZ*>$32{=J%A}BpZ;&N@ zK5D6MCMLXn_BJL~e(d_{8g@4H`N%E^&p;&du0=zf$;q{@M%hG!mr636#Z?%(qzc@HJ>q z>yty<5b1D>X$gNh>Y{|z){)Qs3w|7x5iV8!bpkpv^wow?4$6IT^t)^DcLNuZHX1(5 zVghBf@k;YHdnbQ!`L6}Tlo$LBNO_Y6o5vZ>M5~QAu(e2Z6I7i&l5Cozj*FUS zzQUT0d(}kJbY88hjPW;8Q%sA`B;HzHHBx?(KmT~b&B5Z?)*g=Q`XQB=cRbNVs#)Rb&T>|pI+akcYCnw&VjcF-U^<@By)-Uq`0I668M}K{7Hi1 zCI*)TvK4UjsvzUA`4;mFWR+iVB~|vldaw_|D)o=|Bp9XE{H4fm?Pr@^mSw$SJbu{W zH~*!N!j)h4_4h+7hl1yLu4$r<&DV2q=g-btl>32^Aw@#OJ%z?&*gk|VbMX(Kc)_4@ z!KPDb7Mukwczl}@?KwGAPGRyHxddg(zKqxxShhaPjF>tRE8sOh=uo-eVu=L zyxaJmmlTxar@=Nj@hvEsB(V4qV<7p4!r@dBSboz+EFBv6NoBf~^0>yxZhRxU#-Qj5 zfBoQdk3BIB^=hS0;|-eR-p5WI9)Tl}`YdU+ucB;(1i3wLJQLSYUb(`!^Fnsd``!6+ z_$~>C3r$OL1~yyw_)OyU9)2Lk7kKh_VHe86`=UogE{&djymZq+5^U{meDvetr-!2` z=)?&rlrC5n$()H??BcxeCnnPos;)b$(fI|@4NZY{-(sb@Qw62FeA356dD1BharfI; z9$EueMZ_ND_O{Z?;(vtqt@mp$xyZ|**G91IHi?upk$DMO@N1CP!R3b}BV##2XD;gu`o@CUL zpqT`d>rb*4@T0qHSIr@ToV5rQ${$qS*u}_dw5w`-(2=dMQAPsz+o3CPy{I`Ng;mhb z^g*bEm5XTsJ_&0<=WDqsB#4E3KN`!B3z!Ho$u%xx=eh+hf~QjJ(W$LN3c;6M%o$5( zkLHgC#}(Y4RI3^3?Dlm;ZPPu{f^t$;FtVh`PVQtuo4~6U+fD+@+2#vyj3|!-nB2pB zr~*^UpedD1YcxRnvhIfSQ&n@Z9cp{#rnTYv02I$qmu{MWC;A7EnLDDd*wORhMB$6y z-y0pw_iq!{y$Mp}9OkgKn`w`_>FD`)EGwUM=MmE|Me}{+)yr3}?!DNh(d^{Jj*GHt z-6KM_xBb=S>vu-5V@C4&T8o8S};Ai-W}8Y~MYK>{PYOY?>A{YFnUe}?&-G-l+xx9@sonyJLxaJ44E zRe6%->3v;PzXhRXI=63cy|}UM!}+$_m$c@&+JX6jb_x<$-Zx)+`vDpjf5CS$3;B`A zrij$UWK#f#cq*{0#iD%YUovcXPN`zet^V>+|JNFQ2+!Y50Txk|uxvH7Uz!FZHwX&R zM}m7h(xEgG#E8`KL(MD~)I~mjWQQrV0kcQj6$~{4DdgGqhCO5)c!*s8)#x3%6?w5n zCcV33%a;gV%*b0r?~tlb8I1ohpA%4FnI9BCnkTj7JE1E5DKQBwaPuXJ4-#WM(Xrt6 zn20ji7*L0t$j;>_qZ-4*%f*-LThws2GMB%&jK@*97Q;IKZa=Zz#4p-xr80+r*5mSL_dA~ zTM7O0zf1!D`4C!90&S57*~ZA%Ae%{$|BNS=|MVwMtYhT8^-dHlzc5621AzJ z3;~`(7j_CyL=^go!b3Wh8=r+Ta+nOgd9qgtVd=83d=Si!SO8O-HCJ*zBgibu`mNnhx%hs*qQ%UfL)F7pkpk)ySUn%I4-V1BxzNj`Vdw{SF`!mgF?!3SKm1oZv{o z-)*6($3>sp?jLqR`w|0;3p$8}n#ZP9Z(6(Lkd+NX;Tg8l_CiIF-rG}=+_=Ow8J~SD zJA1hHMrr7E_boqp7O?TqffA4;sutl>6~>R|TZe-oXZ}p{C1%7??a+fghhhwzX;HBx zu$3&nrLLOE<*%r~-fuxP`0R!sW@xb(6ZeV=XsLrDEL%ZL7Lwo}Y&nD-6*$B1_XINR z1kXwEd8zk8#x*(dj2e0q!;R;q$oheX&*@_Hcq~S|)CZO0F1`F@ZOGc@V(0b`)+89W z9K2X)d@*ozfYQeg{JcwrP{WSUzDS1A7cFcFNDS7VFSyPNRov?lSz$kRx44QkCGN+| z`!GlmF3levBSAeUZrsJlI=>mx^WeLM#8hfi6Rp1%z(+L5x)a+pMmY)6mh;z}iJ^2z>Hla~Hj9TxR-IbZU^fF#*+N4KXZ^Tt*0W&R z*#*$R`?Ws|LgO7k{qH#y^`k#AX~;mI#E(KaBe^87=)}_XA^!4b0=3lEn=O-0jsLiJ zAe^n_X3xJFPuNvUw%k^kCGfouA^GWd7!yeFZCc-q?zGc%CFj2)$&9gw+tDK9hpr^m z1mXz^?iDKO>hz#SbYXS!b!@4QBd4F_*yC;`mxH%SRz9stPPoQ9)auI0zVcQ7_D&}I zmPe5=$B($40wqI<^qw#|T*t+yGX)fk1X~`o<1{^Fi$f^w45jX#bW`Qs>DP57HgId{z&;qg3QL{ zn8KJ!g0#;E;H<|J42%rv#70J>5@j0?J=39VIX%7674yH&54>N4wIgfZecXaN6{e4k zc*(~}ki%qstZ*@2FT8&1M$zjPb0^WBitZ)jB``7hCJFYPHAax2Q;MXeK$8Zj9}f}M zA4xF#y>T%KYPf_-H2w>pQ$i(do{-?&&)6a2(P)d%y!1^6Wy}Y+U)s9t{O5c+40F@@ zQ1~k_5gMa+k=LS9Ih@XMlB|f+i?iXWZyV|HByjv`wCSQUeckJGN#=lNSD{d{PQ`~ut2xTOvvOT+OKrtLp#~D7&8cXOeHQ0>0)LZy+)Mw;p zQ#9}Pp92hPBaQe?>cIEWi>I>ddcW?Jgy<7gbY9UWB=hI?MgAXOD`X^4)4mRANm3%8 zTKz^QrmTRmIX-wPo3K7ag1v`~Ka!wbtaJtVtP*-3qgO`)16zaym3Bi&`wEJf5lu zk@yDnV<};sa3k)R%Lr_m#<$9js6$;&N@IL_%8fr@dr+@!_4iF{BY3~Jheq1 z4$rUjX?`p!+FzGWod!GtNI;{J;PGWbO)l0bs(G3f(T@#hn3;NL%&M{_jBAShO2 zUWwb5(8U5f!Lw~xFfnNz645H9LorZKzOlT~e7=!|kw6Z+NoJaY@!9N?;gI6xd_Dan z|ES@Km)=>Z`_L^}KJG9PRi)wq<}y$El7I^td%ET<27(_*pm<4wp=l7Z0mj#ilEBrG zl5N^2cqyvMZqf9V>qs#C0i_w2nJ-EAL20Z7=>9XNAl#o}0mrD^@u|-xiHDi1Zt;={ z2RhA$(=sm2Od7ITyB1}=3~llFqJ7DBJD7|AI>X}=2`q&q_=!dWi$kBS6YfTW4oGJP z0{j1m5;$d?N&<^P5~Ll+!$0o2-dk?*6O+kYtp^k{O!RQ-!iHreun08&!klkfNjz> zbcG7f9~a&!=xke-EOll1M)ed$nAiEanRZt*e0HICs$F@<6~A2_Sh?UQ9*>GG#!?MZ zXa06nbCNZi_de`blu^()lP7Fu`JjRa%d1U0D((z*AIqw$c$pfLZ)f?Tzbj?=|MI{8 zG0OZ;w5PBxnSYWda87EfVp+pb~Q?vt17YM z#JncD{>Z<=Kv$Ch^KWmx=#wGUUKd#+93Uau3?}?zt1mTW{J~TN|3j zf82uf#yv|}kz{@5auc-^(*DKHV9iIuMhK0=XicvW`ycGRc~Dd7x9`0XG$=xtQ4pe{ zpfa_}&>|#Gh>D1cqJR(;ks)H*1|&jA5M&l;wS^X1A|j$Pi6kIX0)(N}MrNWQWKxhx z_Erg7va|Ose&?=A+oON7!UY2IC^kOftLrgp&J_HX31g_US`NjjkMW)QxZq2ta!&mRSV>1j3)o3 zBzE!4lmr8kgqjUeVoHo()X|&{gY0S+z|iwIO;GBYMh;owG9%gbOKtD_wi%xN_9?;x zPcs?z`#Sc!^0>$Fc2py%rq?c=hhy-WE7?q~cM}5j5K5WL zqoX~M%@>q@L{?~r9<)&$D89XmxC8@I?qY!GA@ln(#h)Z_h{nQz{G|ZnKHAO$f5o*> zZ!W_pl52|jOm({bomMaDfqFPkBzF#IBjD_I#vWE=TtXs6egUYqb5x6C7;K&Klo?8s z?h6d7gTSvJe_F~K&Oudipt!P|LRJ`#|Ip=4p#oL3Z9VfM6M|AIbFF1j!QfE1bt*H zbeDzj>BmB3zJ5LelaD2S3teVmz%h@NlhI?TKaS#LJ1}6`Tbjoi(0n=wl1fA_*2>d;Fe1$Dc+XrJ z;a_cx0j~88y>ss7Cwgaz?}HY*(9rwmo}4B#Z>0f>dwo1n`KTUTE9%6zu)w1g?~28w znVM4A^#IBT=i7#}^ruKFs9p7q{lgR+ExHSsdA)RWY905-SEiVtPQ3UFy6&1v+?wJ{ zlBmRonb4ptu}Km>_n5v9cF5Fw8z@DOGo<7c6D>%;3?fNoWe-jD8@jECcC=*op2$Z0 z-u@%KZWGDgH`_BbYIUgAN}vAK>Qyf>Zzm1Q2=FF+3sZw|ovdk_&RXgr?p)g7n1(uAuZMvlC(c`1b&~Sr3^*rXEB3U26S?I%PbXOKaz|6UiU7tVS{1s& zLB0a*b}Z#-@hBwN%-{x{47JRJ6+`4qR27MWW}8?m5%&QunLP^gn?{XZG{~3AYNH8q za%;yi0cX&%bhZ6&BElAifB+sPt!DI&s)E#}S!HB9Xg>X3ZjCq%SkqlZ!uRvyGX|Xn zOlp_$bU+)r1Jau?@VAG8eeWMoa3Rz5ze6r=9(T8RiEGkTig6pTb5}dj7kS_4ct1Oq z;@V$kmq9q)^JUhy(evPdZGBg@_o(-%HwF}+4%IghemoyX3YzALDj0e&U(~49vWV`g zcvmPU&2Y+LvPVsK!%irgtRE^=Vc6Z*CNzdgNX9f*{?Ndemr-MTY+2KqU#tESH|+Ux zdP#mI1}u%KfzOGAn(%fRp!kiUf%3P*)qJ^48%YNtl~4$J=uW>0!48YUU<}Z8@_P_G zU+s9|LW1F|$2+?31>D&at8sep5P)HNVAGD=#k=%!T8VEr!<0sC&Ca*!LBfhB z1=(D4Hsn$!942uvpnAJ(b_QQ_^#T5UV-&igMsA7r;#?rt894^148vj2y!3L`IZ6N% zsu1V2QCHJ}0s61Gfp;^C?h7&-c8KKb6g5v{Z}%Kpt+P_>EGRwKC?$w16xYW-CvDvG z=IF@*f}ww6z3)i@vKs@IFKb8xaDSkGv#M*5?ab*O`DL_=1eRie*aicV+Q2M6N$p># z;^oh~UHM}0%eRjCBoO`ub~sJ6LPv-;Dgh_DudVs00TA^b;2Ri3#t;U8^}K+tcT=)s z7?2o<0jf2~ww%R?Ebq!_Z^QsK9I9_$si^Eo!T_;GPu30I^H{{A9Qtt-*F&gEMs&Z4 zh4G{d_f2IsiV|i3Zv{iZTZ$M+!%j(XEuSwFE#NHCSiPvs)4v|ls3`GaQs8htx}lN# z!f-s*>5#(&^WBAVPI(CiwCvH_6BmHKWr4?MRT!P*n#kFi3{WaN0Fo0BL%Q-c5CdEl zEV>e;b_(PsKJxK{uk!i4AtCrj=qMfv;R%|0Fo5lJ#5HN}RP9A!sq0SfINwnE)`hPud$~ zJ4UthQh9m^8It>h=R>cWz5XI?HgwIhT+Oz?fJ)6T0g#iA>0LDm9#4U6Z~csulG2H5 zY0{4Tp9S2Fa7UYuFmgVrA8LDoKx+Z(mdH(CSVp;MqZ)NNz<+*v; zV+@EdrQ;NpblkP4i(c4xI;?hDQ9>o^u#$gb^hLY2W5BA2ZRqg#mmsWTWDD9!2<$+Ct*IO$1Gk z4-~^LlCr&0dVSyU=Cv8k#;J&{0>Br(V@1dP*w}oh^FJ&&`-5QmP>ZJy-=T* z=_OSv?mnim(7lI?ejn$Lu7&W)f8hqn;0GaixL*Az;?m6&-9ilsdJg4<)B=i-&1;Q~ z61nGB>+K%MYH9B#AL)zM`*KRax;wz`76vme(K~FaTs#Bt(!kK99GJ^`Tk>4Z;fJ-QT0m zi4znxan1W1_I!+^Tl@zGF5JAklmKrgAv$^J@>sbV&9qtgT#!awjRZm2jRmU_H4#sZ zBFjbVpTYc-y`^L?xIn(II#W1|n)LVFuqmZ6TZQi&huOFmiruY<$&=7cZ(XU{~LFxtf+DrzpfH$j~hL z$5C9~|4d2$FD77LB?6Ez9o44^TL{_>O64DDQSGBDkl7-rP>oW(=EH=~m&7PV0}u0taiZ)jF$vz}aUIzz!hlsFR)JR}HmdNHXf~C*4cR`> z;1TLxNV_BEj3+ypN*k%W)v{MOxfKUTzr7I{rWHBDe2osj1d5>mR1E_#Kt-mwixS>| za+x}8o9~pX6@KMm2p11WVZaJyQD#n51nJtd$%h!gA96^uu~~h0Ir=xa4*j51SzdUq z3HP;99>5Ti*%&a>Bi$-tW-&F(IT;r2wGFjk1wTV6Z!a7vO2B~Q<2S4hQfGjlaA|gX z%i(tbAOM#F^q@s~l@^rcT8jq^P+ay*(mMV6R%c#zDZe1hBrqc2EL-4o4laL zDA_^9b;RN+Exg6w8tef{X~eZ3;3Hk)@gyf_aPqT}F}a1T=Cm=?a!yUTJfw8!Na52- z$BT)I8GCu{3EkyeJqL?aCNtA?P6^}~SACzMA2EjOS9DgHeN+yCNp!G8_J_5b?k z{=2_U*h6=~fLoVI3k&ra(EUWY;okyDS-S9l&&f)>0aGzx{RigUToeWr9K~JxH@$Ej z-~a!0-~De|r2o?5#x4hisLM+Xn3|l$fISa1zW!S%;DsX`K z=b4L;M=NzTjoidAOk4PLsk8{frO(w9@Sl4|{T*NU_;3rK_*%8SDY4WtxcmE!^>L(- zIV$WBg|1L~FzMj4zrKR;I@h}Fyu@O}#!FGuu)H|b{?~0AN{k2Yij&4hh8zwqans)F z>Z(jxvTHj}Lhu+aL6dFX<1s)xODw}g4k;WwZqh!gIzzO}76Yc=Atwnb4fUP=7~sL_ zv!qHK6W{)+^kd}TTXS5`zebu|=*q+Zc1;r35v~^r6Uq?J2aHbEipbdv)~bpi$RQCS zjvByJah|%X=V0VJE4oW*NK`aZUF~!7d&whOw6W*ump`S`c@P1mj`&Zlbc){ zp63&uC-Zs3le2C4nlIsS$W;2a5>!42238JwWR%ifAHvL5?)ut6j+XU3lN+`Nts1t6 zs}L>@l-vA0uX!!|R{MrX0OtM&`#*kw^gakxeI<`(43h9x#BGZmWyy?HbglliN#kyC z8#LRV>(G*=JY`?AeS?0^0zua2E(r^FZMfTdm9e&$z9U8~uiaf!GjO4HSPh8405%!X z9A6xL=Sa8jN4I~VlR$ENMZ$tcUSugPT|%0MAp9=4_+hYN;Gf4n_=P%V-n}?Py=ioq zQx*P%JSiitZtS&fByOfg`pS)ddGQnOqt$;F)3_l6LZx|D8SiX50p4T;SGC~8?qMtlx5fYlI#+FN^%Wy5P>~Shtxn!#pLWkl&Og|DCN>`Ljn7 z27I;ZzyR_o=7Js&_5YX#=*-1;MQIK{y&D6}i{$H=@4FEt3>c^oI|6bts@8)6n}1QT zNz+$B5A+!!`FEus_+2ImV4>Kfm7KZgWChd3<~KN0W8?swP(DPXHlsQ{rm1trL8ltc zU&lMV%pQH)JG$z&Z{yzM{nlZ&oi-jdb^V;3Z`{;;^ZtkwdDR=lAK!l`HWNX=OU5WZ$_kr(z zJI>x3T4<4b^@ZIK#1S+ZBNzZ4=4CLSH|AU?uA5|Rg0De+vP*E&H$noLEogRT*ytkG z(BQjr>bc(H`t%4c0opr}U1QL3;N|Ukcdnb&85)%g=|*dCoKtXW7@#ttNVD^RH@VJu zi?ZHRUEzdtAQuDL>l`vTDGdQn;j7X%`{-zRdrNdpT2Z{aq2N^a*h>ohz4}F_OaFQO z*=>Kn+ES1aM=b2a0MVVR3{}M+a~?wuvge8lt}5e=VMQuq4SYx9Fg*(@x9z5TLgUi% zJAn^{lcTErrl2)TVr4epY+?ZC+5KrxTn#yo%f1fh$t}u!-PrM8I%eVsS+>AY+!y9e zrYM;~1o5rTW;VuXFJT4I5ba!GHsj-YtGSyQ{TQG-ZH?%Ns7pqWOUZt<;Cu^D0}hu5 zoE8wxkRvf+%O<5BAO<7{u??O#Y!AHyN2`@Ar^eZ%YcZhNfV&#z%g)2K^1~R=OyW^l z$*daptZDfpW{WGt62Hv>^IBOr#yVO!Uw<%XD6?2%Y{BQ6Lex~djQxWGx4uYs|F^~- zhq}cATZLMy794YI&@N-UeElzYB76-4REl78(TH-30~0*Tf;W*{NbkrUJk5wOQY+B_ zHn!ns=^-?@qafH&mZwoDZX_?7nCM2OpY2(=Ja2YAd!RHTOK&pZc+R0)r;hp=9d*#J z-bL89XjLYO?h~|0qWeN^L`Phq1q+*n2B-o3Ea+F$%Dm1qLJ5a_TSz)|y>MB8Y|8g) z9nX(+oSi0jYpAbc57;$YyKndHv2(WZ8?fYT`m_trVg{1l@0GGz?;U496%ao_)5% zP58miQ|NLV3{X*kr&7k?y^sZ}Mv*(xsIu!-yyX1@^z9E2JS0d*H9q^VHSjz=8eG@W zA*ZgM;Ntso+adaW|M^o@y##)h&xhfu=*ar*uY#3+RLZGnGl`9#UJBV9f@2|`TlXxx zVpTA|jjYDlLc^ajF^9dO@a9=rEO#SlkUBWpIU6Q1xXPsV+3hs8@#_m{?4#P){`I{x zz=hWzXO98rJ>F4TN!8Uk^3(n>wY`$&g#j{uMK)t2qtARl2HfzHw>e;dmVx+FgLZLT z1g+H0ofzie1+5fl4ZWN6-(R}!-rfB<5pSRFBJ4tY2%wv@jqH%(k2z{8i+yS)2He|B z;@pfT$8$Q3WGi~^Ih})^sqbtX-2jf!{ezj2B+pL%eQ<{FK zLmUh*7(OJkd4T|2B0HqG#n^!klUCc3uVVnvV98wv`4>^cODKlrMZZQ=;9#Scx~S~P zEJOHPYt~BH=o+v*^LDFs#aJdKy`*;f`~CHAJO}5Dce>XDiuHNu@(v788SI`bh6AK{ z*y>b^5k5nIz9+;1qMeeRf!n0ixaw#z@x;(2CR;tb_MA9o#CpeHLC{Udh-h_o@bS+s zriU*z5pjwt3^*suBs}kEb=GMn89V^FwGZHN{&U)}*u0IGgs$g6tQPXke5Hm9a{Nuy z7_RPI@8{*5n;h;$3I@27) z23d^lXXw8UH0%XQ;@MU?N&n159XET(KTE2{(sBtDADH2=G-9jbi6I^8%}Q0M01 zbtj0-Q+T2m!YX@~`~+qG7A?jN4gxVi%uM61N4CC%`oB5fuSl@uI{U#L&HlOrbCj7A zX6cl$pdz!9D^FkP<+BPWqXhcZo^cEZM!&G?RO{?Jx$HVzAh$=(_sv`)u0^&$THSM3 z`ySsOKQK^QK3!(V(tz{!*5(>f(lc;v{zm=Zv$TV6kN6DvSLZzQNuRQ?Xm)VSc|S{RKZJm!&CwUz`&B-lEOWJRSo=2siRA;oXu7 z?O@Y3L;YmQRE#fW#DhQc#DBu{WVM@b37g{iWI`}_{oX*sRLHUqzyaJlQl&Yf-6x^W zP{8qa0-KtJZlXIV?qEOw1|&yez;ho6ZZ{_Mpaa)C1RzcZFFEu6iG2 zS3Lrj6&1ca_{7iU;ZW$j|9V=4cN~#Zi2?Cj=_-ncmUbhAf4%HWZDA|6< ziKs$kK3qxKkNTb5b+yZ00f;F? zN^)`)RcKRC4JawGgci`2uQwP;(tz{$(Q}D!@0NWwl%-#@zhClsh><89a0zu zyw4KNPnSVPe18DmEkA?&q<9`S>$D-a;wBOV<{Zj>)8elQ-H2{4ek`PId*c-rLuNx~ zj{10ePgaj^=o@FV8*BOtGcKLGy<825Wr}&QsY5%#h=!B-!7MQ=ouK}ml}t7!0&tEj z6Rw1IN)lK}7@$VFNJ{3eft)K6xjm3_dz4Qm$BcKaJoME1KK=qD@u6!;XpOKo;jq2^ zQ2EoxK&+aW1+RB#5)SPZV?b-_B4UgT9`8zIRU34$ZlF5-$T7 z*FAptQH+D2TFz+By+4plW_0LNpxM83;= zgpkN&JMhcw*kPu}2HEhVmknT7O2kqD-E-OXQckHul)mO(NtoZ|%)1h`)k7U#pscdk z2cT2s)@UcuT2aE-GK^S&SvR>lh|_InoG(O8X^4U@mohxFo6PCLGGiZtr}Z}Jea`+o>E$X(tc?e|cSHSI&yG{0CTy^Gxc$Q4=}y)F ziG%@{y50$;LDL(d;nqc-PDkwemX5aQlS%g_>N>vN6-P?Mq&4vNGjdlME`x4d@<-U) zVzJ`%kpHmd?crhn)1kSHr-h-}+0o_qVnYDj_k$RqvIRDk@9<-Ekip{~TBGPYhG8Gw z7oy6Rz$0RhOzsk90tRSbzKj8ZvnqBut+86@#;Kw2$JEUwvA;9cWZJAEsMA)yD&sUr zUEPP`wRe&3lZUEA!X`pI`V%;oD0gNInwTic>03)^!J$Kf4Ej#6M1pJarK(eeLpicA z@wM-ylvITi{-N^WnlA^Rv$a$Lc%lh26NF7@&dyi+?SK-$-3kQH=?*<|U$Gmzb5n z(q`CnRZN-~zl5Ald9gIuaGt zaIA>D9Cm1199NMwTr9><BA!KWnLbef3fNBIPd=1Db#0V8FZWM_?;xXEO#E(Y55q z7=QEF`!k+QGF7=G#JP`G$u0|>-|y=k>8|F}t>X`!aWr|HT{Ad;bqPUxvO83(t;FX? z^+J9^S%_>cA^UgWC~gWr9f<)d522139gym&c!utzhrxkzJ+!0F>v@DKcPB#eeP8Yr zUfN;#+%JTuiYyJgQbb1f)m6QWm%QDp!6_UPhF+~1I+7Y$5*mG^Cgd>?y9xt97Ys-w z5E?8boxbSuqQ!}q@Lu^Z@O%?$-0$R3j;!cMjc8S}Xt=E;#An|zqxW=WG0TYJ^MPv} zmF;rc{WUG>h)!2nvGvm{F}6!Y%3y+LpPiM#@qXLb01s|&WUSf3?BRikvLn4Q>TZYo zOU-W&%02omFBhgwzFl}bxjC$S#`=6_%r)ul)rAMOeg_!M!Mw$X$}-sj$I92yUEpwO zm&zn@m7)k;K@&;^tpr2(hX-P+iH zZpQk2pRM!0-Pf%C!1a<>@?+*1DT%SN z5BQi@PV;Sz4jasn5Y#D#+1D#V40?W?s`KI$j&>G@=7xRrCi)Fz%&}!PS|6vg&CmRK zbeS{2;A23uF6jaxQOF_8cuG80quqlur0FjCM#K!F&Nx7IL%}|N4*uOJA@AUK-tth! z$$`=_{)xKV<30mc0pFGtKcEHq^gjBUEq{Acd5j8g!Xdgk(i}wBNP4jmvXESEd=|o0 zelcJ(!_`0xss=Vtl@Jqf+hH)+#1NF-qG+%R-;@l0o(Kw)*yx+x33^7$UszUG=Nq%> zyJEWsFopr=FkrYuiUHGVP)!R4tR~`MzHi@yK2GD7@eZ;E22{@(k(BADz_$B;g}F7O zKleO{s_ehSF*2y*RQ7**!8!qsOhc6Dm9prv`5+&RrPG%pp$!)_z&^LK5Ain82%(@P!-2J!)!K3^^piT5HgV95S8Kh7C|fYgSxzS2J}Dql;v+4!oS_q#5dO3df3sdQ(J;8aOAgSgqbIujkQZ zbol1l^!+c;ZpdXYryw+rkglsFPnFof>v65TmGB*L;Cu=*n2<Z$D!_;<4BcZVi1mR_41=uT|vzfebqv64pzm zl^;Pth}IqPsaDqeDamXH6E@F6bd|;PGd)Z>DVQo@-6X8AB5J@jqO4YTo0jToK~&TN z1|&w1^l62yhOE@}NnIZOvt?mlYFr)zrcjGUFd2Ay_Q=jy$~<!$yFT;TNTg+yAdJG1r%s@Q8o9}E2R}=mO21$$K zJtYQB!b}vX$rrQ;HR(S;d{q%3-;k4A#>uP<2z&O~ry+a6pC@rPlkSGhlQ}!Be*IKY zZgpuF(MxfUcafYy;>@>GRS^|fS@fpM2yun(ww44G^DVuiujV}Vc9muLwlYiyt#fy( ztMPL;KA@C&oaEkJpFuD2jjZjzJY8D8i*%IZ0h=zG~Mp#*h=ab58JNLXD>+%)Yslis$)?NaysF$=dNngZf`;dN~nai4)JI z&-ATGAhDS(>Sy2tadB3d%k%zqmDy72eetX|H@gM-JWq`bh}CtxnQtg?at(PD8kPNk zV2O6Js(6{qP-;4t0Na7zPJ$ZOCF)nZ{07D$T8hccKoL{C&jLo0rsL?B*4tX7uz@#2da!$^$}?KIu6Q(Q!2PCnV=@Sfp?v4ps2u z`SeF;&cGDe0k})TjH`A8g=*f+mN{0dkH$Tw_{Wzaz4Q*Rd?OR1YL08e%io3%^?Aq9 z9ps^CtI&vfcJ}6N#0VAy75JSYfA)#GNnb7%E}i_9f&m)bO|Y8JxBVGXCIBb7xvjSI z(^zne$qO>@vUg0p`-v?RR3E*i^IFMMW}`?$ozYR@nh1|LW|bgmW{#&HY9Hk|T2ne@ z5LN`cHjV1^ja4U{gpzM^isC2OooXK0UwhxFQQT%cJ^QJa5wQmD{hS#2&ect%qx6#) zpz?LdkY?l-1K8kFfNI1p1E;MS`OiDo4!xrd@x6dc* zeEqy9y&SIkWKEBkhUQw=7f>88&HMP*i)WYz8mb1^?m>s^UcTtJmA|~0xvNdO3qN-L zKd5p1e;P3sbi_O){R##M283whF5^%CR%jp){?%t3yH~Esd^N%Ni!6&E0n9lHd?b$a zkP2HwA-Y07Q+ct^lEofxDcg%KZ^Qr<0o)fQTAWts^O~GSFk}YB?rjt5I{C_Y$tLOp z0rgN+iU_K{r(Y5qq_+^_Rik!}TI2rw#r0dc>!+3A_wqx`W>>m{+=Xr`;Od270O;WX zo99epKvWqy_*5nRsDedQ4mDW<7d*s(^OLgN((GJP$~cr+smIB#(kq$p>8w9}P}XQa zDOpN;pAd&{V2Z9+4bv^a4nz+xr&2qb`v$)kB&)SZ)7|BdiQ?ptStdGqFJ;LF;V*#{rr`grxcl0uK!Y&}=z zDy>1ZDX5y3d>h>@+b>E?ZDuCq8!Mg=b?+b9Uz;u#wvq77Qa?rnDDT`t{A1L%5j453 zGyJZLiu=;w!hH+FcTOgKR({PB4bA>=OK!@NYcqB*CkvoRfZ>4-5>}z>5T@c0*PiYN z7fXz~bZEovOl>FcC!sm>o*oG*zHMtlmE?W$C_g`12dcUe15|>b;*^VM540>n${MO_@(DveZ>X&X+jAh- zc7Kz;h`-7=*w}hi*OB6!wqCI6xnW~+FXZc{>gz|9-O%MTr6cHD3;_3$;VrBgH?YN} zkMT3y)xlhj0f90ow(3x>FrJ}Lt2z#z%t;OEsaQt{=`Dhsi(6TmA+KTruM~Ib*F2_0 zoif-q0yB@q#W8oVl@vxHhSi1geHhSO&D5&kZVq*D9IcY;Fos5TyBSL<3oj`%9!EfG zrY%n?B)6EK;czm4b-AQ_8s9n+?qf(E>K#<`+s@BER(dtpJ}X31nIsw!noxvlPJ1z6 z>2~E4#bprD`k$2M5;TE6vyv69-OdW zRALCA(G8vwmNqPHt;2wu4S^L?CR-qC8Yg3KtI0;lCdE#z%=e6d)9EwmJL7R`U~cEc z#RgtKb=E9*?8}$25VQOclY_?hQXk+amC@xvV0cS(@*?DHg|f87Ba5ew0f9_IIz>_F zv{CK|Pe}!>Ndm#)ZiXf;oX=B3j$wf6uV-MY$6#d4D(<>bj5o~he=y(eL=og128@}+5nm`u2r_>#3en>2SL8&JhwsQ@6{V;n zT}4r}77|X6n72Ho2QLT{89K=BYIYxY9YXSe4}JGrf1*d{Ox++oC|t$exzKT9>xNB3 zC!eM$|EODxjRF?DgNl0a#RiIdu1$Ew&&civcn??$N|)f8XJLB}S?V3}SglPmm9Y^O zM(4CpwI{E}l|Q0uNxBj-V1+gPSkZ(a^tH@NqGr4%*znKKtH-?=>c+k~wbjzP7mZc5iMM@YN__t)%paxQyO4Ie zci-99s(|9hB7$mT!Z8ep&ze9t=vVrZ;d)sBtR`^}lrHDadN%ahAL3NhNppn zfftR}rP9+6oD6U|`at=yBAu}omJ#5!EJSZmW@7|%ErcuRdlhN6LbZ_&iC>^~gG2E_ zs9yYqWyX4N#_Ds9>x&pAnK`E~e`pyS1NI01P1*=BiH!A7RJzl-aOyRQPzO$KGr0QP zh~itJMe)h52@kt;A;i70Vc~w~-_M%@qkd~Mvb?xIXt*|YEup&uF(~oo!gk;kx;#U^ z5+U7+s8|Hp7f+MGKIz@edykCj-ObxDK##jA6t(Sf@|K4A_q238p=@_ZoSmC;E2-Ev zDna@=k_uIr?@V!ViK`j`NHe{a~B(Bh6 z^fD{wn}nG>ZCfL^i)=YQ%Pvo71Y6I2y3vvsnBxN4C+hLfxLFt4&2UCKVZ76?ZQksT23ywCR=~W(Z0Vd zEZmblIA^@W`#iTl!dSz5e&cT$O{BaP0D2n(L{C@-4c8uEK(jGPlul4#hy6O`4#z@9 zVsfi+4Lt73&OV^iy3oas^=&bXiZ>lNe1t{mV-w&bboW?l@rUJMzMc*2exG$wkGPQGb(5&47nFr3QW3dfwONpd|9>1QYvd9*g}F0~0bt}hv}v)X>R zUy|wm${4*L7=gP-T@4U4n9X~Mn`r{6`AnPq1U%I-)VlDt{tEO)Vv}6vzkAKq1&_oA zJ&E7mX6_2GJ%_r&RXsmdOj7;qW0P#_`}1#VvD*(u~CF;xGc*5S4*w~=pL)mUI=@^jWZ^^xFYf(3KGI#$5`XlA9B{FM8 z3S$d8oc}XKO>R&th0VnnaGj_RI~<4aLRHeBHuq4nI^7a>2EVzcg;dbpr0SQ|cFG^j zlY;Vx_xDD~ElNfXjqMow{q*M{MpbFZS;B!y!V3YS{o?f)8Q+EhOHV>GG7fdD5H9bK zErC;Q_?y2x%slqd*WVpV5_HTIJHLL|QHlXAOTN9j)N<}YJbLCV;Tp3!#%XIou&|1U zXq98YA!sZWx_nZRhL3*$*FJbRb=8pBN?HM%yb+f&bOd2%A+MZAv^q84yjbc{ZswcT zYWwK2KNk{vN8b$zUqx>Kq$E)?>+5AE=vyIo8Sfw{b~Dy?DOFuw~Rtmgwg_NEB=?{~6f<8nn!64lRjfDGwp%`q8y6 z5|YlutY*lJb%cC&8SG1DH)Oq5MfG2LU-;^zctCg?@vSS;N#L;E?MnC+%R3*=c$juN zefxXt;Kf{TwS$%~{`&jtf$6tj+WyGi(2e^ZBG;q%WX)({fC>Qv;`0$*_^EAO#SP{K zydGT}o{$r#eEKs;$T|~i=xw896XGH6QX4t*+N-_mSUNxVPy8d_8;MlLrm6WW`{wID z+}yPz3$~9rnX?B2;%~wUzDcXBFZL{+E13(WUh`Wz!>(AfsN(dO;+H1^FUEV_aNSa3 zvFd%?*zP|gEkC^G}XiL-99 znYy%J#}B{E9+iBFal3B(C7E=0jWDDaaVzSK6^~GlWUJ-*o!UQO^Zm`RZ;4y&%qKu` z1p^W?xd!lFF$>Z2lx`Fx%&hJ0lSJJh8q&QW>vXCy`&fwoc8HWHdI4>B^f5>ootj@T zrPX`=;eJI{7SMWX{(RKIZUFxP14P9bV8mSqQ&80|3{VMxaRrn+6D$qlX2b^0kn#u< zURjnlk}zL!Ql;3)W~oo;HrMrP8KwvG+84e&8@lkyiqrl)*Z%S68Xv2hDM~-?V1NpJ zaLxvg0nJBw=VBCQlfFBjVn8r2d11o~{)Wn(6WopcJn@>rGPk`OE}!T2%=u1jmRg?A zRZCr$zvJBP1Ai*#U_kt{iL22hM7Kf)zNpN4T|*t>N$+Do_L8`&Nes~BjQD&z>*8|4 zA*$++ew){cC$iU80Yn%NTLZUx(q25@^7{2J zuV4Ri^7nYvwVM0Y0me?s1BvN!AGAYgNZdg`PTVv=wQ2|h<+At&IH;f^ z(VX4ecd(}j{NNM#G3?1Ze}0J@@!^Xs&fci7)w>2i{-!a7su{?)A}bYlc$6tp6052v zX->Etu^r^%kTvk#fC5@p>rhrY$IaMHf=kM*ebQ!M^R(*Bhb>OG_CH&)C&_;6{??BM+YFIqQ;Mg^4*42n2mI+=WCeXW=+5KY=pvWld5GGQy==Sr&F`!v z6Qh2_fg&cWgg&+7A*Ng_C@amj-pa?Q#CgA(XVIjO-RLu=g~jze2;0f^XgkprA@ZFx zo-BBgaRn!Ij9Mmg%_edP%ZO%-H(Y0UtAvo^s9y*&JE|Aj^B%$_2cWDr8$ei{-6Cj9 zI06xi#i{05d+vUhnpG4}w1dh&s$mQ$niwK61ObBeuNpAVf5 z8Die#OuTQrGPZMldG1*ksf%!KO0GSnP%`}N$oytq$mdw`#$Db zQan!&1D=QR_nH(*GpKxfRMU|A{P?ciJD=!;8y@--<=yBXz5&CKRX z#^(MAJiOVYqG3%4A`VCaP53;}Y>r;DHS%}XsU`Lvyl2@I*V}1Uzeq`tQ(|Rid zz6DsG%MLCAkach^MDE}j6V2gyDWQ#^=}#+`7_{>AD8y~h)kgYsuW-ue)5n^c{hQuw z^EvIiTEEM!FHGh=5gpd}I4@wO{?+Gu;s~`Ez!|H!B3a~7@zLdhrBm&GZf8L9jF#M$ zro4a9rrfNao507lF3zz!*Lyzu_+c;o>Y=L%k9~YTNjcBEZHHsRbu}MtQko@!F0+Y4 zN{g2p3~2UZScdS{(6!|D^!*TpZl+*;Arfga_mBu`B5NhxwJaC|!0ZioXg=*2&{}sK zaY=5=VXRI#+BfrOMvMpeNp!o%Ha-1G6LIOkf64y~Zo^OWz!Fro4dTn(ApDG6?#LJr zY9Y!{pSYsE>%9%1td`e)oHD9YE1;h&pzW0ilBR`iqei`>!aX@HjP+3R&7}LqAFQ79 zSbp4lhx^w5j5Edn6&%!&##l`wp(~`2dDB9pAQ_>6a&&nf#OpA@3rf$l#XO`Hw?zA) zjberW+mq`G>-r)oYHq_($5*(m_-Sn#fL<-mk9j&)Tbt{fo|k$dUn03?5;C42w9U=7 z_b;D=f!X_mZo6KLx@y^4X%mV!92p`3x_Jka{_{gWvVOYB%gHKZLB} z4(P`u!%WD?vk@voE6+XjuOi9L(<)HCe*J96$P(YCZ?xq0uLspTkPSYCn)ttL-o24o z!S!+~a%6x(p#PM|CmQuQ8HlaO64y3fnoyI&gk6cN5EJ;ExOq*!DKwkqw6FU^Z1Tar zwZBe;g;B$w`2T*lY=--W!i>78^j%gax5R*E%ZLym{{;p#dm@pgaGEf}fw2kXO&dvP z+{9;jS+5R0s2qqSr!U|#BaN-hZl6d$liZYcxqy>9Ieg&uj!T1|m1jw?RYg*R-2=2q z2<|HoccmHPJA8NI6NK!p_y}@F^s+mW`}%?oh6=c!2NK^jg_z_>GqxXquHK@E6=rDc zHY=QO-^^I|EQx*Toc3^O_-iFs8DWq^dOwb;>R`aqwTeeX-LA+7NFZD$ccJf8{9#wI zCU{zgt^;dYQoak5eDVwRG9TAyc@+7;*@QHcpTLp7hl1UnTH9Gzq^h|WhvfJK*xBvr|bt1;e9itojk>f&jrl?RxUg<=LDn0Wimid@wum`r0j*xeO5clOZ z>&uq5I7t1=y@z{kZ{~U>EW20muGH{iPC%F{?py4?=c)eB8Yun~S3NO9k!9Cuz$b7z zrmG|#+7v@_a>GvX?2v;fskUNjVXPqJ(dRmo^hd~HunjFKr5KhWgEGg9Igd{dcf~vj zHK=M12?|jWIBa)ad3jQ4ZXD6Ckl^FETmE&JQm82eHH0e0r8dsQ?)}?hu){MHulY`-CH){K5+oXU1qZd z22hO%?~G*GcREZQ!J@8KavWK&K}$l27qY2*3T?)^7^1c?SC=k-M!X;Jq?7u1bjs2A z6X$VpNMKBOpnlca+?u2d1GXh$jPav2fSlaU1NSqpGYvRzvQkOUg@~?DrURKzPe?3E z8p#K16px78{18pJ8RWTShmVh4ll43qSfdHPc ziN^p<;!lVxNNCAYn()_zUxht|hb5<6bd^gjFv_tB# zv}hy!sK|H1OTtcxJ2L1F(u|#au3e8)5R^IP4JOsciZeV;RQEa^d*mCM8@Omd+2b4Q z)1tn=ol2s`bN1^2SQqB(K zpg7NpdZeE{v-d##Ap6ZGI|~cBMagEf_{rrPfUit=W6%sAj1sLOunnejuZVrig781Vm(b_dEL^noOuee7ymT#qRT%0q4HXC-% zXEB4iZkTK%>2d8DJ&u_y`}ATVuXZCcf-3z2EUU#xAh?Ge0#AQRJDbj?PEJZ;;KtZ|?73o4mM52TQ z=^YgTMI|C#N<=yY0wll^1f&H4g(Rp*lNo_9CG8B~y~o%e-#yMgXPhtRFL=hB<~q z?)(1D>-tp7>Hk<~d!i?QKUmdFVQY4xlLhi^sTVAb^+P(4ofUcEFIg7BH(;Pn^o6B4tu0 zsQb3gS5+h27+S4Ct1?(Zcg6MBp5|S5)2pVZ79-bNF?-NJV}{5tzm<8W5cp)nq!)lh z#^y4b1m&_gHQ;nt#1x@d2uy`tYNFpE?&O6+S!G`4w?}vZ-4*}IO(@`9A=x=7l zABUa+o0Pzdc=ZX&w4$*47u(@vIzp#>u_daZvE<;F!a$YF6JmrLjm|4!+pqig0~)GO zE0_<1j1yU+omK)(9wKp0XO$-x(%-8<5Ie{wCCow3BN#=HCnNn786C{f9P3Rf1zTpP zJY5@;_Kgs&6mupNdX{Y^l3u~%4Mez6LSP3UssU@~^j6v!s|vWi|JipIDL$CsLwSJI zXlCnCG0NDmUL?G6Vm%$@Y3pH5bOU>e-vkT?sdx;?1e)H=)r!0^($jd1=6M=G-Jqnx z#Sz9rVEcI?5L1IY%vPjP61QO8dP%d=lpEr!i4@6jk}@{ThAjj#mdPjB6&+KgWIcp3 zV`;@2CXIbPLEZ8!o++;S?4K9D?(P&{)%}e-Jxx83A_B$!10UXefIlR7PXV1VpC}B) zoc;8 z7K|pgy1yD*h5fZ;x}!AZ5F3?T7bUSxm1)eA`IG&AjB_i(-4+5dPw=yZcd%pu3_2=+ zOD_;bP(GOCFkS>y!Cnm3bqg^Vk~;Lr@70e8Q^gqG>3bL-sp2Yet?9^@`rqfQ>4x@y zsdlp^qeZ{X^5oE*aW-m22yi`k_WYvol@kK#HbrzxEjUj_@6giHd>~N3I&3S(YEnbI z^RV#CDz}YlS@)K|+9KDwTYB1}N<3TxCX5;sUco~IbfN-M0h=Y*_2@s9$R*}%G6A-+ znu3hmPptaT3=4=yv zeMza_L%brgU$m()@1)W;_ReS&hQcTo0)LiR6NoJdf$eC}+{kT(*jS$#j&(9M4{RbHwi&ut3sd>HKVmR};%p~ODVT3Y+zw?wiBZBtj zP?xPAZDxP_=p9cTy>Jh%y8iGg>8i)eGn|n=nN8zkJq);*VC;T-77I4z$4Qx}Q+KqZ zuj^puNZkYIbM(5@>0leH@%5KBy@I`MqxH6Wm)_+Bnej~pgZ?4Qq~Jq2Q;Sosr7>>% z9;rp+-$EGHY8Mv8n1Lt3cW6RH@E1I-kpf<7)l+lh9mwrzSIuMv&&FgiBVr6V?5M_Q zqNB!9V%HKOApH8w-c;+T1703iJXC88^!G)33xUr40)${l3w+L5=089Mz>-@cI^Yuc zFS9VD#t(rw|CQk^EXJ&e20PoXe!HU8#j z<2C(Vyp$nLhJCUS07@Yp7E#$>g|Z^XlvJc_*;^6caHr*cO4S%iR0H7M3=+<@=hNvMTqthVnjjj6M-@qKPf=h?FkjT*Fy zo3&YAeoVIorc=3Mh-Y3lsUAsww_sKH!#G#St&GqKpnNH@&Ttt4e1?bqNMXFf8?p17 z!IIG)FSTYUs}PG^WlqqhRnZE8?K=}42yy{4D$Q+_n%c&RkoBfJ&DEq}ow=5PkZYCz zCrD3u=#AK!1^ z%o~bBetC0r>U8LiuUm&2tE(Rwwzu&gMTCfKF+RE?;I6$v5@VhvM zJHeRt=*RB)t8t~2Yme_IyrV1|VuZlV%*@A!uMe7$yI~$t04UmKbwSouptCw?DvRD3W4o^{rR*o zCRWb*v4QxFcQ5hT7F#~U!*oZ=%vDGw>bz>uoix)`^>b>Yqqe5nNWFVav|x7wk5UoJ$>wdxV{! z-p1M1fsQ;~c6)xiUNa~Y=+}J_>q+{#a?^z-vtU*9y#IORwY$D~23KKSd4GDZo)mWO z@}Hc?YknTekF<;D!GA4K5&TO89f*@z%(;X9qhw>2q!xPgc_%{|1yC3-g+NUsPjPNc_(W9<0GBwI# zLLg1tb0*V=1yk@>aR_`kC<66zLj-iBF~12Fh)zS*ZDulT&0L|EEOf&{K0M}bb1j$~ zXAr4s4}-M2oU`7Y)s>~T%a5$T)Mxz;UdgB;?D$@DitOSZ$BIUs6$1b7o%!8F@B&H^ zvhRR{7lptlO3#cL+cFU+&lnQN4^za$hh(AF?iTuUCPe}pc5ak+=~^hEGH8lZ6XsVO zpyHXfYi%Y_CH_lWaoy1oTm5}GfGAIHwR=XEEd+RSD9%TA;{${}b5#X8(T%E$=sp!j z)zAfV>Pw(Zs>c4|aJby;=YXxASd#yyah@}&c-EuE-mffRGeRNvSWCaeV46}i?#Msz zfAIb2I!d?RC+^%l6+Lx=L9fiS&lD&Jy{}k!z2KW`MX%$g-dkTGbP4v>#{}KO;LKR* zyVov$3~xREb8ns}QVGd>hc-f^g? z#X9<)Q8srE;g1evi2`{L8VD;jpdM$E4NK6;ATiLNgaGFV``mnH9VtcQNR0FIv!i$| zoPWm1#03x@9bp+{oT7bTWL*gCnO(>|p{^2jZsqzg`HaYS6zDaZHY?G7O7NutB`uJJ z`k9n;oKCr5kSL;4LWUe!1QoYH6wVk(#p#Z|8I3<>1{^au^*mRzpxyk$^4d4&9= zz9mLkF&K!7WG{982}Lm8QEE4r{n+A++!Z}83a831qxcAc$%;;5Ev$zyIm*d|vVFiv zZiF=y5<+2WK(SyZnm+fOD%f8;LE7*<6Etm76w5X0cN|{l`#IK(8D!VC0|cI|IWu!P zSO{$Iy@`fxrr&>29Y;$W+tM8t2Y-H_ zvXZesbkBSDvd9)e2<)KzsRUT>g+R+S&;@ibF@?fZ8{5!>EXkLOe?Jle{t&^1t5N0iU2`gU-{)qaR|v#LA+>SZke(3O zvAdQ{>d{Lkzyz|8A$|uga74A6BJ-zY`wQz69_&JG00ZuO1kD^CtE)O3X!@k@+S_-= z=m7E)r4`nrPPzYFt{Z3T6uUFy^CozEvN+oz^Fp2tM5w^IftVE=_7V-L2cb)_{nT6` zAdS#^6{JF>ois=fqvh|eA1h|-CKd(O%uFI*mIvPVsmlK4IaOablA4qneGl{JR?UPi zag73nfCkFXeyY)W0%y)uz)uPRSQaz0_dLRQdt>{4P^047ANlw$%WjgyG{w5PsU_{qPU-q9U8tC23fh)&5Z@gA86d^Y5m#)!qjH(w|Sp zsd7bl>VG7Xs}E-18K;F4r^H!9G0TQFt5as2iu!i?Ix(KI2VwK3Pji&43Kn*375KhG!7ZO1XI<*c41fW4Dq6U`K>5irm#UV|B7?n-v zo;d)8SKI4Ur_QZxqu!k`9jswgU0>Y(I5JqT+cZ48C%(*H;k~oZBZ^7>y*or ziDg)>pvovT^rtYvZe{M@3qnA2V^Rpz9fZQUS8;Z2kRB%Oo491_gz zf#nGS#uG}zW=CeMmj=I(a(#8$o$574xjre}*pF!wTudbf%|!tI4JnM=h@pnZ4M zp)Ql3y1G|~Lj>;$<;5>^N~17uu#sJ+W2VkEJL4k?7CSU*StMwmF?9vyoZHi`AOvDa zLZH*ckT4mYLy2W^>e+dx_V<4L@%m(uQ6qZidK1q4fWSZxqw}&cc70aOb7p3yhn^5= z#^*=_QR-YvoFzYohZX|c&7e%~aeNSrU)=-U zpXky!01YsR@nLQ4H9jRoIiAaejsXUCCa=AKNr*#kE;HE z&b$#_LGffzbETa^AQrtF#i+=$?6yzJR|F50vSS5eZR}ZQ1XUa^y?Ff76=;s7m_##o}ixA71H zoe~HX8$WSzL%|E%EtoV%CW(fUw+iyp`O-sVM5>25Pv{u7 zM*n@s=8N+@wMG8zZxWPIVX4Wd9YR{V($sJOCTXQG=ed>^~Xz zqQQ$nC|O7b9ybF(d_S&PV7p8+nf({0FyG8J zY$(yKB4yucNZy;r*v9%_zNu~N=7QasT&V>VXtz4G)=j8YNM*}jf{MMFq}^CmTF{)N zBeh{hzLlKSqq1G)b55y6-T218S8cYLG+0>_p187I|J}LP{);;W-ITZAbGfcKS$->C zXAv%q;mM^4Ko_)BOe;7gW|X7H%`-QS=*L;&?E@=$-lgZx9`$3AHXtH>{0 z?0Ey-L|jWr3*FGBIktIMIBkf%2;X z7kho5Icq7#ky85dVeqtaN4;`KQHRT=X{E6=6Kg4~zg6GyU)GT0M#ul;y3u*^U<3_m z3PrI|EabDYAM_UEu8Lr(CC^$)&Tm7r^@(|MW1Z(Avq;rcHx1IeTyZxC!jm!Zck0-z-18^LZ6m>&kmI<)0Q}L?alD>xVIzW_!_j- z<0tpjzKrlP)5$lOGuzp)u2sp}3$3Qzen>4=*k|2yX&nw7L)snod#Q{XrDosp<4Qc_ z(HDVKRoiQV(zu>xYgs4xgMG7)UAlA;(RC{V` z2RQcAZ8EVYrr2z+q8gN|&6G`EI^35({-GYVi-A!-j<`1GlGZMJ`QO7=j|t>2GNzhv zKb7MzoV&TewzF3od|mY*M<(rB<$TC?_?pQ=k7J@hT6s!qpkSyexp*20z^5d-(#l`I7>Kk z(BV7kqe)?$J~=V2Nj&M+6?1dL-q5>>rle=z406<+{?*L6e(dtC^@8`FOI!MNXXY1o)ZEa{nNhL zw}&=dV%O{rmo9@f-BEW-Jm23``(5#ov!`OH%Ae~Z9$;t5Kq9cCDIiAhcj9;xJ|Rj7 zNQ=`x#71jH;(AKZ{9H>@&gaROdVX=;{J;|UWMq>Ych^{ZJ=42WYi--++!S6LcO2ZL zevxHblovqs(e7N-9)w5{MDeI;@Q^3$4$O-$&ZY_A&0LLw$o=*K2R}TlY0cCNIr%gy-0WmNQAEA=bLnDiDkpXt8VLQ|xU<3|^*sa*pXm)(4VqkN2%HlUT`( z50q_o2FLG!bxY^2E_&bMR5l-X%+xMsjsIqHT`!9Kqp`%Cjcu4(?a)g?tDwE|r{+5~ zv_K({zyh}x*zb3~%KO}M6BBXhb;yX#-A2W)m0Es>v-*@DMer!a-w+};`XD8RXP)Ed zkRGBs_^a}@vO`zT9d_skzqq)HA%&%$%P;jRzc{+yPq~seh?v4l)A0J&Z|lK%2+%=! zhlHJKhKYR=HixvQ|5&+QyC>ptj*o+q^}X9&cKL@)5~Ho1iql>%a9sj#f88V>r5KSO^3UO|Nn8^7F~gS(Iq9B`e*WMv)$wiKu@(-+_YRP!-rE z+LY;+v-n|uf#y3<2=Mkj^qeLXxnEg&c%^6fY1(k~eNmqLJZGMbSt;jwVt)r4y1eD* z3&gOgo{%lq5N9y*Sm#9Nj5rj`SSkX$^Q($}7}?#_sn1kBSKxt-btiw=lbngJ6z61AvY(hI}~FOpzWYlws+eCVfqAT5bEbf;5=&~Ci^qi2%WSC3+u#- zw2kr9nd*97-d=T}*As&uhC)Cl>VfTGD=YoFb5q;cMzHnwu)l1A3w}IY&`=nz(-F4; zwuAuZPt|h6pQtVn$1ZV(`Bm-4Zumab+X?C^PqJ|t?n2XW5nD5}{V0}>(u#P1l!8oA zvqA1Di1&UGRZ&F840WsgUaOB}^F!IJ9PpFq=*%{L7K#y1sn1N-!S50bQ0j+P(z&N_ zn2E60I0V~o7O{1%SD;m*rlf(P~(M8hoiV)ZyPUO7i$Kk~UV?-F4fQsXp zvnZJ;ImCYUXg5X1@RX_rBnE0SEW3n&_>zjCl^xWrLcZ^?boaLVkWcAC&Gf*V&*$DO z-hWy0GAKBJlh|GhY!G5l?@+uwW~>QXrZ~Po2j1YfQeVLfV9zv`K>vX+9fpFzwGK+H zSMwbIdRXBP1$w?XTO+mtcX71NHqx`HzPCRH}_vX|iB z%hOG@&lF{1Iv+)pK*m;4SV(`Kd9}uK$Ez{JRET#mqER&+VvgXHKvJv_xIvuS#v-j46SzqHzZ4lEaGexQsmtu0O{d7z zt(egib7mFs$NeYrzQO?k0HLUPA;e1TY`1&D%hK7v92HC!Y0*m!{PJ?9wc@4M-4O#% z|849FPBl2c+*pXaO-G=(a@bbZER7f=?!#OnNMbWtob-|a{3$y5^r<*8QZGNN;K!7j zR;kguk#hyKDckmfg9XVUm*)GAi7uTbf)`dlp*d=xarDM2q~*7w$j+q_)Y=a~L00UB zbgqiveY*x&O=3rOYRHY}g|R)nb&EL2aF4I?qJnv7NQgZnm>@o=o>H? zHj{zsg(t2uC{r+|=M3>`Ud*Ck?-=e_t`LwQdoZKUoUE#PMaP}2aE}|ScCmZcNY|ix zJwFRT8h`py+ZKoqh_&A+v~*b-MFzPS`wpHU1Vj;XU9)I*dUp-El``&m)xQo7`;?it zcIjHU|G~q#GTONfM)Vw)&4{4C@V!h@{GBF>?x0C)N?0FmKT`-uQGD`3cev|Gqh&K5 z7cp~uus+rM6~^zY{XAY_G9;Z)Xbwvuc^S;{dgmHP6lIwW_ozr!Y*d#M&x)O!{+g{U zx|7M)5{>KdIhKtbAA({v_@5O#72~^Gtiz}y*$4%cY-+C$bm2h7P%|cxQZtcJf|1}E zL&a?4PNdEgD@?&6QPJRw2oFXI+`Cd&+dOth+{0{0%ChYI8A9MyMdez$B;eJ!F}V?M)1uEO+P+B}c^eeWTth(J{M7rFVb3b8F*Q6077lzAfWoL1KKd zsqCBVqZD!Y9>Ft&m<7U?Wgm}MVpDdF++iz!cVbHU5vdusC7P>m`Wj2-%tK^fSkj`; z`e->n>&alXp7JGYxtb?GtXRi*qP?@xBoK8Da^#nUrxN5L>Ob^Vo?B61@D0#^tNPKK z-qNV&7a~m@2WlTF4XINiZkNmU8~JyvFd3^=RH$gD<0X|JLB*3|4GqkG7R zavx}Ur>Tj(cWjQvi+kW&D(7Lv(WWGNT!BNnrQN05{B1vkz}zw-Y>?+F=yyZzkAuvT z^bw+Be#%!u-;!Q@JK65&czlZUHN;!`Ui9zW-i@7egt7yr1x|{D#2 zji>kU%8*YU_R+JsfJ;40{R@c)yM%y$C|t%@_mc!sM8kLfz`V6#jp5&Rm1Q5Z1NYo2 zbS@5DKjN5uZWUUaqn~DkoXch%Kk4k<{o-1;>qgcs)V3SR{l=`DEU&@i#bOpY`>sDD4ST2(8*#OmJjFFl*S2xYhrqe)cq_>@8Q)c??41WHW9zX&iaRN~3T#FO0;QYT~+25!HY5LfF@ zG)dLle7C%*Ro=J2db?uxrr7=XOH|c0PxtD$H;yk&o6>Y{8Xcni#EW8QsqH4W22U9F zA2a!>!9r^E4(*@A?;e!Ri0DF`HqSTw#k-z;REBo#ja@pS%vT(i=-M<~W!Io8n%On? zR>@wGGz6Qwe$%a{qn3)s?!H%!nfQLosQjoN&)om-`-Un?wV+A%gkrJ zXFDO)2If2EZfjdASc+*ry2uLrw2U-&Q6G>x|2_L%UwG&`Sgpnz=^D-U3h~go!Z+oY z1`~XLBjmX!GnE2`fYQoJAp~cBh43>PBRn`_0;#TIm&?yJPIVUiGHe*1IUb04J%U?0 z>uvJj)Ak{bOIjUbU#=8nUCSfDM+#w*zn+4%eQ(_)t+U@{Kj@6IF1cUhG^b+n+wv3n z!ZGAXoJYm-*O7D~(7*axptqoDpWgmxHTGTR&Kjk>{F9+_ywjO`zQ6E3lcAV26Pzam z0xvNYa~X>^vRPe)-P)2@ra!Ufl|F_u73MMhQHmDhh;x+z_je|GBTFln+~f1Jiv#Fy zG+5k=lzcM}GuO)xC9;OJL#w|#?RfX$jTpT9*CgP(Xj?SzTsgPvOL4^Akyg|gZ^^W;DNJ*~Bo@(ov0wjYmR^rjShnVBd| z7hLpaos|wkWAiS1NIt)&3Y#Fdg84~5soXs&)Nr@GxTjw~j z5*67-0o~QvN1tVwcPQZ+?&yoT6z+aV{jQu4WL>4^gzX6oF*ul5nH5(Yf9IfG6@hh= z*sE96n_kC8oMVV4kVUBi)n4hOg2$nWX-_}@%GXP~7E2o|a8b^>K{oSB&=QGzX&sVM zo?4ntwd$$-`>Ca(T{~R#J?{+vB~CLOfzM-952R4zqZe}#@zD_<3HYTyvT)HO1&pQmg z``inY(31s6p9dO-shv7JTAJLY7d|9^CSJ)x*J;6`T_HnL+I$ITwq?N%QKVgR8 zw_hcjvPBUE4wPMf%^F74sA%khgVm7asRTjUk=p6Vxs19;F?2LPR<4n-$CiCLmO=T{nPkfs>p4r39 z4-=}^Pu}#TYpbgv!c_KDsNB92z^ZW#{DlM4Dx9+=5baCpWWTNJ*h^VMv}zRC*mZ$Q zebHVb(({Wg5vpB`GoLst&x?aWc|*Ssi$bvt;W zu$(lHSk>&kB?!&C;r7zd^7#8T2`{(wQpJH?tXod=iB-$`npX&_WezTTYTaMTn6jz*1jSO_jD)cg_uuw{o3Av+X zQLH?5>+z{v7O_iRwu2ys6v3Sytv}_k<_OgnLnA`K{aqVZ^OM0O!m!N$ZccJ>k`Aj$ z3~|4xDvZ-ytwauenikY-|3fXP!!1Gr)Qtb^6xZV&sx)ZY8LFUpoXR?tIR5tbd$wEf zZt2cQ(~A}T&L)#BGc(051G{dUXq7@k@%UqYxJcIO$TsSSUah{jZhmq1NIS0TUkMRk zBA`DkuyxV-*V$nM>bP@P%wFz(=5(0ZUTzMP-<>V*{os|cf4sazkl14ZzgVbFHN6*xV)n5T%l$aeieF$8dNGOj(?@mcGgEkBCD4AFmt4j@ z_|32&Q$j*}XT{_{gNwzCrpQRFNX{bbZ@I@d>n6C`9~&>7Gu&c_$QPIwJblZUwSxyc z!SBJ3dWwqu$37fuMvaF;fgui7eJ|Y{ifzN_6;f7q1o`x#_PiHb3FSmz9GqdC)O=S# zpElQI|KJ4DggK*Ke&)r=H<#YmN*!|L6{@-)iz`+M2iMsqDJu?L%*B?vg^}Muu5VMV z$2UB6C9Qj1V{OMUm4A<~H@sXQaMm(=7CbjrH{TpH^=%pR_;|SggaUo7o?P?nYRZ{m z603=)eaw{?vO8Z-@~LCjb+(B+mM8bdMl?M^qi(@mF)lmsPLPdca+-XgOoc_ZrS+|_ zQZX;Bt-?dS;{&(TDhx0c(>Bt@F$P*(0zVQW!TTk&u`vjufs?{~8v*Vta2uu?^^=BwRhM+ye?WQ4#^S;%IA zDg;a>gg}6L2a(%=(?btfZU(Ho^xDVf!Mlbec~bPcC`ae95abb@_DAx)itcjN6H>&o z#Riq|&-DA4$>6HbZWf!5wb6l*$(%PK*%?-RKN=z1P$Zs`>hCRNC!>sX8c`-hKnVrGEVWbD*RmhK)FY%FwD(p2(Z%7UeCe0SzA1toE@_Cv}=j0)C8t593HB?W({gcj7!=_?+l*VqJJ{%v^3f+Hs~tCBxG>CnzQDgoKxmbN!La z#pZgQN1^8NQs)-|j)f-&4Q0OKMbn8^2;-RiBTyI>an44E3Zi7eSrxw*<}bzyGidWq zarQ8VrsJXh+Xy37>D?x2UZHt5VmTw!ajHvs5-FwF;z`-bNY@Px3P!n3kyyM0IrhR8 z@rR&BFMXYyV%AWiJ2KS=+&tf||2tx*YWns5%XGu%TE=D;NFM5!>$p0&WHn}+Tuy)3hbw>D+ix~5~lJ|t?F6q`1^uyyNud2-^V zX*jYXp7Ss};7r(yAIvh=aXG?WHl;_P20A7l`?P#lRhFjaK~u_p0_y$s?Wj|&KyPTt zTJ9~Rt)THl%egeR)V&_IB0>G+l%OCV;81KMn@MB5b*;8%IgzNXFvUQ3Lf4WIkY3V| zt|7d0Tgulox-=W)(BCWwNrHf32Zd6(q z=%r=!L0{XTEdj1Sh$l(dc{@B0tk%zg!xE@bE@IB;pJPGgEYAaPChn9vG0XUvgr^kg zFsVKLCtz~F1ZwXg3LI87r;k+HTDh>(%HmyGna|U-5My|T;Nyq4pb#L?m_9b!)Xo+s zbZMVck?y_Tbo6)ZYRvzgXx4v~{QVcz8T=gq{D+V(kb|U!z>drOXB)Gs=*a-23cGtV z4JrLOaPt@WSisZ}ZD{8bUIo0SfB1MQCpSYEXZYI6@V$*kP?SSZ`M2b~`iDh32o3hj zLSPOy>BlLBHo$GY?olfVZD2nOlX6FCX6sP$1`%ddY*fI6%eyNi%npw5&`g^FRod3M ze;cE(EacS}3C`{`-woh~|4~)xO{^CJFr&OYL1LwUaOICJLeiahx?Tu<8Siohz0c z*NOH+Gp9>yOR_6?er$#3;QVDM*^uWyw0)}K0ShjNeQ2?wNyMO142Qp+=9KS$1)H~W zdz3x=OkGLe^l@cn>Cryw4!85$_nh8-BkUjeunSM|J8P}mOI8TPT*Ns;F=+&UR5BX0 zn~irT^`!PQ9zm%tDh|ABNbAtl+_RoS$M=U6atDq|=`V3c`w?5q!d_$uNOV^(5m z=a)5A&jp2yj^9@=imnYXUY^;sViV)SZH>NroU*iKBV)^4z5bcjtZ%Cw57yNQxrSlp zh|OiVPS=*5D%-ZHCy?^2sjm|PF?Bfarp9FN+{;h|XtA{s4Ge_CskY)5tX!kTuKAR@ zo9AfXr4^c;i540Cla0>4Ap`>Kxz-x7Lf}m*LlPh$#zgosLZI^&&X1K$@wJEc`B5hg zE7llo#saZNplr|Ge04<`-JJHrbO9XFIy+`quHzKvh;Gkj^7VUEle53pH)dd0rVh5Y z$O8B%As6Rj(H-gVDyn27x z@0tB{UJ!Fg*>&<>Rd6{D(F#SdDrObCE4re4jb4^~3g~AkwU3l&d3soktj-;Y@C)7t z;KaFs*r3jK34V-RyU1t{WPAoHWmV~Qv0b}WEY+Mt zf8;bA30ARGIq1rY3}XKMLp`;XEQ{8SAm2sAplwo z#h~N`syJ^D#go(H&_>DEz{Xyr0(&!oq$31w3?Qe@*Jthya=t&FQuh&B!^Q+u(#4-p z570;YC6W)^Ha#ZVJqtQvGKhbn0*KR_oD}Fc*XYn&;x56_r5OdbS0=xe$pHt;jgzVc zaI7^f$z{UyLe`MB{TtkwMz%%S=m+n|3#;yoLhV$84tVh_7z$58oC_lnIt>u=$ojH= zrVd;nRu5`*tDqCTzMB_)f>LR@`3FYAR|02-kPd;S)z6srQm!*sR@M$S3|C(N*Y%&h z@S!2{-rjwsF$>7v0{o8pqnex?ywnnVzlh{kF9-3rLmGJFVwpPEAbQ=QM5ReSamw#;oN2 zX$DLXd}m{jlKd*XnBXH^oNyEMNeJ}fkLGr4`SlFN=S)!&H_*Ew@@btf#6;v_p2>v! zk`t&=RqkP~H@R|PeB+*W2ulUuZV*&uLw#Qj;9dU*ul5VO-K}ou(*)aCYnW~HM9c5a@sW7Zq|n=(>;OK-xX^ac?()L$<*}>fW#-U{j>XGisFH}0UgM!= zAKIkuHtKR#;x#v8N6D_Iq=_`tHsB zzI@0-Kp|w%`(ZI0WgGU1m7P`wE)2=CXUl}QB z8WsYK{F!}3YWHKb4DW8^2s!vvGv?TW^ORxwx0l7EKl?oR4WnoF8BC>Nj`iV(b@`y- zQ3f*QS^bsrrXdryeuik$8wbowhW|I{riDiQJui0gMv8LK#q>hWq+0u_q34-Kg^7bG ze}dFS)^^Rt&$DG~oaR&e^he^c47EPT-+Whl;nCeX}|n zb*OKQx%Yv~7AEPSu; zNZ0;tiLX~wE{_OyGd^8!M1 zKP_~vKUA)C$AMB4-%p<%$V(GX1TfNfbMDyTZ9g-oVS=-IliLIXqn)!`z8{yiTzXf3 zA3|&w0<|_&A+Sa2w`b}V^zw3NFQB;Rf9eZ?ar%8fLMKZ5&h*ff2lY0(==SFT0i5k4 z$doHMALV3luWG_~uFgt5etOWAff{OgwXwYN_*m2M}qyv4@5eB8ck>BX(A zdVA-N6*b?hb4*ZaI9lZ6_b+qsai~LPG55^z$sE{^0b1Q#*$NxjQ#MS@=l6iSoz-Yx z>5E~S4e?Q!snc=j<_?vIc1Mc>BTpJDH`#o(mtCA1Y-8CHJlJYkwk%1s+t`Lqh{wYv zv&D(V+AD!OZ#>MkLXICODD-}^-w&K%{2nwr_F)Y-sy{IAP!g2+;rP=Jec?~C-Mnj* zQnEwsihS-_c+G^7y=w5Q=3CtOUoUd^GTY(*LLu3^5vV6OnteSUjZjT&U=pP}VhR)c z$CXE|WlJ}#@4N^+=l&YE#6pe=ff(HTgA?7W3eat+E+58*caan)p{Xg$?nfVo>%JOC zSWl*3(Eluc{^#!86rD5Q5AHKdHYc2ok}o#pMdp7~%9(%Y%abNvgEG>JZ=UGC4n7KB zD*f3zIY@e&?);)a!qfFop>u!`ki&m$xdZ0Iz)YE|mjl?Dk`Sp&X>eD!V+{6NzTL?* zx~$m2z{gJI*YfpC)UD1`U1^ncwi=SO>SgX0_@LVUibnq6zZ3#r$0;{S-0e6cAuw9f zh8}5`6$0}ePFx%p9Gsn*)VePId_apfRitv~SGE37fI?MS5n|=9pJz@77ZZwkr+ZlC ze08!^$C@$T!l*mp}kq#q21J^`}>bv~DwtEZ-)y4gmaw*6JlgEM+ua_L*a zQQEaBP1c4d5Uq#7e!Y%4AJvI2#+sK>-_m!J`}%E#5}sE|bzcUbeBR|~Rkn5nHxBL# zxC(s%@46nq7NJv+z!ba2S%mCVyk8QJ7i17?kDqy?GOQ7 zoF^W(XtR#)it5Lyp^qoK>qc!0x4e7v3~Dq)vG1+hOq_~Q;)s8~$Dc1h*94XXA8tj} zEBBm;%c*(ceYpNW-YVs$(g6(EY>sqd z8sdJTyxdySKyhgsLP{nqx3ctz)n;%l1DWWg>GGqW!Fyxv_?VeIYG=1{CMWorLopoe zdhz$J>PIP_Fe`o`>gy!sI)$r<)FLd*cgb%Ew1vR?7h7gR;8SS^YQy^>F^{i?`lg9| z4(B*v?S;S_uVaWgMrkih0@~lDVG6mhHUBU6-aD$vZR;D2x|I!x5drDMMlYdvlD$Pi zKtSm|8<8#@BuF4CCG>3R(jrnKHPS&5BnhBY>C#Cef)q)lMM(L^KJUHb9pjF1$2sR4 z@B7~KjeGuj{&~uJ)?9P0Ip>=5_v^`nsM39D=P0J{re2QitChpEj3)Pzt<21=jXMx? z3nrqy0a~+4X(}HzisW{g1!k|Le}d0--ul=cc8To9NoIlSh+^Ws5y9F;;i?Re_g+6^ zwN7Y{Bx;>-vM;r}lcTF)kl<}`q3U`;4$MP$vO4w|CGtt9WxtsF`x1G$e_y`aS(+B1 z783Aez;8|G-Z0%?cVIWg8k;(>o2IUqLYS!H`dk2Y##islj`i7R%fxt726G2?{MSQS_!((}z#<^G;5mmt7al zE}h2@nSv+X_0_4E^i2W>X)QUw7N_6)(RvW>PZYy$XsG0;WCfSSCn9r~mEb9j;ot6- z8uKLMoWk5jc-jQ0!srY(;8r&$HA2l&q?2QCm&G?&DmS|(PFEqq<|b8#1i0>2r40E6 zKYTpS|GYcFQ~Qro4jS`4805Q~l}|V{aN5V1tip5YZ7eF_aE|kfXrUp}Ji^P{b;p zne)hEG`B*>wAeJ%u2`;lRW8DJK;yEkkxBPv;01CgDg*9)jm#44C#aEFmj~CqqU?0f zSDD!3$yebWV|82+uk5gra<Vc5M7Wzl5wale)it>E2q@k6;5@ zTbS~DA@jXE$LgJCY(Tpu35*3YC@^MuN{vk)8Cy*FGsvxh@3 z|F{k3WCOhNP;9_HEEj`^8KQrJyYi6-&lWt{fSTI9!j+7=SL>Jt)V4=V#iF@q_z{i} zpn-idrvvG&qsLi{wPwamGEMmNb_aw7MaSf|I1av9!yHPUOjN_`184v zH?vs(f_HmZR}^~oWtQr|Y^LE?Gx^oej32iaU6Wb4M>n+eIi5~occyDd;B&e;o;xL+n8n%^7w-?F!hH*pm)(% z)lB^AtQYL;Tj301sPPic)qQZP!kI;v)|C>f)`npy4mCi&(e#b ziJd{mid}`r%8MJhP#{YPo=ZizP;-WxAF||W2IUnNC>ofk){|OnW{TMYMj2$uIr|=G z#S}M72&L$Ww+~cW5@WdrIaa0+fuafRTH5vPyI1Or_?w2l#?M803wgEp&b6wYvfpSV z+7L8Ew4M74fu_0UzmhsSl}m{Wz&&iD=Uyq^6aE*i${kXXC>53Z`g1{h1|JFGDk)h) z_a?MIIwW{LuLI%;9EPI8mVEi4qq7th?F^Y3Yw@2r*azt&mw&Wt>Yr@#`aA7%C!_rf z3*`%=2lbM-!HUu;e_^RPUg~J=czW}1P-^#cg-JOVZ&jq{-uhx2{>S_CCzxE$toh~F zAO?RwY3(uNFE|yeEVA)?%p8FJ;Wq=d`{-9o%$eY14)VBQU)Vt){NUK=8{}#e5DO z6Z00ywG0(9kmK>AzgVzlvsk}IA1l&xXDHr%IJ!*W+v9LLk|2UQ*olLB!Q!AzZE0Pg z4J5D9-mKH1={V~e9M$JEe1OK%V`-GOwwZ9zVl%wzVp*quoy(lY2u6nEE11DAf3Qq{ z!Umk?WWMSQI5vhK-fp4xcGdV-!0kzFz~k`w4qP)D1?A~f;csOLQ4@wl;_KVFNf=OHOTl zNM3{v8xRlc3uXhn5$YZEFk1BQaYPI?Zvp-geA0Di3URm8i4E}hOfOl3!P=sBDim8< zzD%!x{uB`((tI?HjtphFzN@doE{saeAeDraNV)d2B2BH6b^)(yx6|Y@e|rI(?xrhw zZyQsk4|>^vr}6Y-3VMq|!O$JLxg&5V7~rw+QGO&|jRN|WiM68c#MkZ(d(9v7^~Zv! z{Yj_%!R;q2z*#5>M;w;MFEd&xKNi$JvFrq{V!okRCpvmPmG^ZxwGF1r1^sOTGUy&`z%NAV zVGml24ZwTW#*TuhmYAooQ!M3KHsG&G03z|1X~uX6XnYG{NJ2NmYY0c;xFl%P_qxi| zV}JbaW~{{9*{*)Oj`U}rPyN93K-6f)1dK4;j4b$Mzh;z&KJz|S`V+#N1myMosxhe! z@kE9HNEHjt9l_&cpZy(dg>=}Ve-qwg9nN`ft@$2 zeA+ZGR*GLShxQGZfm3jg<>{gaf1y`DWCMCG>GRU$9hiv_HF(~^DzmHW%3rV-kt8-? z&WH^lrLzG9&=WSGsTEaU{HCvF1;YvN-4{3Pg=i8V^35$pb;(m%)d!km3mZogX-n6r z$dvccBGJOa!ui6~!NKJ3-@mWre%;vk>L}gO(NSWQ8=acG>YeNRHD}Jm^I3t(HLu8f z#LN>+FdNWg%esc_QGl+L&WPZ)H%XZJuwE!P8{iWYw4#|);l}De!fvqvG*RMFZUZf> zr%N=Ghl7BlSxnDZQu7kjqYAflCBL>)H;>L#9E4Om`HMXGvGjTFF{0ux#Be4S=?RYK zIre9bLR$sV8n}2E7aI@&nys;=%L99dr3p?msrRT_Nz%G4IqAc!bka81aq8qCM{?jk zH;+m4e7e+x)mYu78Hqu&ckPo8-v5nsH7Fk1IMahpasyGjw@Qy4Opal2)gaFP7&0cw zoa)~P`-L>dxF7M(i<6<{PFfaTSYF(C6E1RAS77VWc1dZNe?)X7^5n1MONuL?YRFaQ ztH1FB(&dmn$ao21=G!hsc-(;@vkh{J4l<@Ym$Ihq*no5UxRhls7L(ux~7ADj-&nHSBhhev^X!g>e#gaidjr)|Vwo@27G1H_QY1;9=-K_^TmHIzbv5Zw^Kqk^Dwv<4=~!LCsPV+<{mC{%%kc+Gj!QG< zjk~eK9uFplJ~{RCn=2%k{R#XGqATFG9jU;BIvRG%x(0EQw#JZtgTz~Y)>^^zpp)!D z)KvN?ewm79m{Bw8D0-Ol^q>J67KPA*)G#q;>ag7heaR9PFI<^r0U0%+G>eAEv5pAP zbgT$Hl8hz1i>64&X`qw3Irosl@JK6q`ij9Rq7~iDiH3}Ouy5weFeGhj5nE|yVP&p< zZ~R=GjHCSmzL)LZYVDf9`s{2!hB`&;eBNYnD$=s<1_`r9m#Nl$OiZUrjf=+OXiv~w z|B5s*6$fHK+n!ZsxsyQrfww7E=gmONH+iz(dUqL9-XOE?kJ-51jf>Lvx zD(X;M{ZuVN0T$nVfj~~uHz+ftmGvI&uc8w54XT_>E@ctbHXlxF@jCd*OMI-4zw`4c z`RknQW2oXQzzZM_!o~2R$4Cr*Nr@FT=<{%I;@k05`xxNxY&%dWUM)079l$om6*wiK1ej}-FdTDb#_vCO5WJ$z+ zT;eM7pF{P>M3TQ^xS1~p-$i8PNC) zk79}e#=xbq7;!@tQ(GO}Pu_5!tg!#o9Z(m^x&Y%~4LZ@sA2k2EkB%Sr)113lfR@0N zeRdTWF^8JJHZjTD(zJ6kZz=3hlMaAui8IZo+FL!qr|jI3;%kpiYzyB(c~I@XX_`e`!}ipDwQS7upA50 zzf1KeyIeeANsn(y+Dz^#TFu=`&r50kZPgIw7^U3#N#V7Ln&Y=aS@}Wi&43W9ga93# zL+ulUu6$P;Y!IG7Ex23cD6E}MD9BJ#>>DeR5Y-#(s4bBOZhaf5&>qRI)`whd_Le1G zHo|RTZoy8q$Dtb-;^fGL*=g>CPH*Z!mozW_XC)*Xo9o@-CRJ>kLAp)rG3h^*e$Y~C z)cMUGYa}#8;L*KPkv~Nw9Z%9VjxQO=CF*b-#o6a=FX|h^nas}4j;cJvH`x6v^GBbO9v%mp8Rw}HPi)NyHE$6dy<^) z)0Z88ryv_CiP<=rv3M6}x-5Nk4`20!^}cM+`u!aW_};6*WPf76}%|eqsZ}nlULC;MP4$0P0=|kbaXojdzuQza&vq zI_b4L5cAe`dQPYQ&PGA%jr1$rHLXT!mIkYftE-Ddj5N7BSzAJ_#Du^A=a^kufdKKN zrwER=_JXNZ+flJi&%dgsn~uR3oZ~%Zj{UwXPFC6T!g$@@ImV{%J*0xQsI8cbA$dt+ zhL&jv7!9mkQ5Z7A>pn@zyK}&Wy!#>amQ7h=QD|qYhPOx<+(pb=z$oFY1RqBn-u)Y6 z3Wml^ocIm&QkM-#VgtNJ(I74sH#nmUys^yH=}1Mte-re0KZb*KKHa-lvEK39#fJ~= z4j-kjbc1X<4j&5+S@P`ffFN0&_ZQ^F(4s{iA^8hNe43^ClT|5ImSEP{(K}NWyn9#k z>!sxrXrgI_ivci09V`sRcc=UbA0=hfL_`FU!2C;Ya7*i{fYU7_RWEObg#FseiTEw)`}cb(w?<}QYmBBO$sYXxvn05dxZ690R9#%s2U`9dSNelMSFR~v zs|@$VR8tUa@awwAtLt~0{im@OcMtD(H|~Bvi%MDIpIPbVS1nQ!B}kf$N_~WjoK0HI zB!UgFe*Y#jg>{D{Hu%kZFJ{1pjzm-6^6Vw9Fj5NNQzJ!!*91K~HHiG7xAkomYUIdg zv04N&O=I(qb)yVn+tTa7_&ew(*2HkmuNIDP)_N`DV5eB3@V6w~)^W8zM2ChUiUPNw zVvKuJ&3T^`J*ZnL9$lXhSIc0sUCk-`BIKngY-;%R)tyUI5u!=q9pUx*gXx_R>T&&5LP&& zRL>PcAj{k>wa={~7;?bm27~v*oE&k49L5|n{4^jY=NOE*L3gd7>ruS%;FPY*-Bho1 zT9`4F`3{v9pgvgV#&h+~C#fmV483_#86_o0CCN#}igcoHpw%>)JGBN1k5v+ISK&UFhH{Eg zoo>sk=v%gE8hSjBfa7m+Q==O8vH@J$kth0|kH+hao+qm?L{o>T9gwTqgY>5vwx$)g zFY1ZIfC*{Ty~Ztb*`CRg%a#Ht912e{NO#e&yh!gL1;s=7+s70j0u1v>mdvfO4IZ+& z8wGD)a$&r#!oHa`h%#xN^vXS2Ezx=>IC>e*`=Tv6s@!q$3S&3phsCK68>{VZoD>Cb z5px3nE+WPymG{{nuZB%gliyZ+$Qw4q>Cm(WZa!HZ>$Ixz9Jwr8Nuk&olAr**r#Bz5 z3nJqZg}oD+%dC~qJoo8=Nq1q2#yfi1xtZ%(Al}V?gK0Tu1o&gGR&@xJ|5NM zZM$-_bj=^soYyNkqmhdJVt;Aos(pt%BmZ9EMPV zu(juKtx_z;-*q?zk-O5x#EB&!x&W#F4DF#S^BM8^ITL5jLeFlO_a3aOq+D+_(Fil6 zI%KDH!fnsr3Ih=paN;h^87xpu*^X6b7*oAdW6#76Nt~mynwX_zDC!ZIC~7J6ZFzRC z4trqG*HJ|erI?|&BU?46MNo64uiwTTxlU~ut_HOG6x_;Tp@fldDxq{imYsMD~jc8iWfT)K_$s zf*VgwYez}3MoHbgVcozGgy?gm&#HF!b{fPuH$)1gUbU}(PLB^g$f|J$#iOMB6W)(> zw|ph^HTzCw>tGV5kxgw$2sI=Lm!jL2#sa~|&8?h=1<6KvzH9)eWkTu1+}x7TUV1eC zVa>&w)tkX>g4fq>`zm3he#<N-#7Giy%e*d4OWc=@ZTBP4$V=GKS=8NqRZ?wB16OL7sg zl&gpvVQ378U^Z|9c0(S?M7yfOFZ#|YIW9GGwuC`o0{p?aI<@(-$r}d++ebfo@9YP0 zFd)prE)ja+4cc-_x6fOUm@i9sN@0Id4-Yv-HBLVBjx4$;N7kE{m;JsU(K^w5OX90g z!Rn4Dx4yh&v%TgI(>C6iuHW%pyupbfc_EsS2 zDbpY2&}e1xgH@(2+PdRJiz(l#u>?Qsf*RmQdOs0bj!j0W6jMQ5F=7o2p8ODqZQ6$> z2{2_zn}q!{_&bLtVY0^~q*?j-jRu{JNH-zBDfh%guGAc^acoLWBGIZs!2nhSQDWS9 zOK+gb_d$8V3KJH2y}F%wW8c=vcRjrMm1ljY1C%o^>*r2iZ2dGGvTD3GfL6Jw^cy1! zt=-ryMnjzs@wy5WyS7`4Xi&!Ynfmjf5_I7RNshbMxoX!*K4Vxb+_jimid=^5K>uD| zyo9*Bz9e-t4x!sakaUacb34=`%{Jwhfmhhn=;PY7v9BRP8^q zP7u(Mkz$a$ZZIz$O&t7AFJ1woO4Mofc{C-~?oBG1h(Yt`436U%=lNAJo?$xZ$0tKnL{sf_- z37}E^m8fvqc&Utiu^fMhhO5p5)+wb(dH-F`qii|br==nj=pWDtZo)YTjqho@ygGFd z+_UBaBjJ)5(EiWoKz-z3x~}7*LS>0k@ohj0GQN0%Teww71tB8P` zD%>wZzmU8f4-uq8ttK9H2{G(~Ql^^-QBrlUfE*i3ys4(eQfZEJHwwxp*Z|+3t>1Sf zSIbLoWvc48AIi-TLY54BqRyyspjMW&5JA@~bbs{U>wc{=%dc$fVI>c|&f7Oxvp@34 zDm3>>JhLEMWHn(N>P$^d)3>6CHL3N{F(h4TnZWhdb0yY!5S0P#u6qCL;d1(3s=S+r_#mZsS;m@<*6$Nt%2Q1VYW*B2~i8oLJLcRKcDg9=KWWpGa@N zY0#|OrHQ>^xuqS;-3UEy?V!%8x=PCy-$pk_lcsQcrP{P*fAXPF@EZSpH{O*W3jLd( zON6L9(jS@zkT(79U1bHNV7QzuwUa)iBvB$gJ6UE0S>{kM5^-ru@V(jFJ$ouy0?`Kbikza3#& zKR&QqbP+5LuDeUH>2YT!N~D_>wRf6x+OB?iS#912#u6=g=o1D<)-e*D#siH(b-~`J z?w4G1*T(9w#s++lo@6za;BezsCFbCvw79WGA2Ucexzre=^qx#I#LV6EG|KkYW;DT4 zFjLY~%gt*<+%F8n@mRn-9O}fH!Sp~+cY;Y^KJ3B6IxHLD1&_06P1GBPKCE)TpVwtp z25j-&j`WmL6BvBT$t3hyD3eCy-@{#vFAc?Z+oSaLK87lMh1&GH$6^aeG82hcxeWCN#H0%vYK3h+S@%Q?9Rzip8bEqff6yN(9Hs zD<8NR7l%M@=C5`{PN_^BjQ~&EgL9?YroWM}Ps+BYxNx&%6`ShOyu;wE?4XH0h$yYn zf3KMuM_f2#zD>WHK<7wpynU$08XNG9F;*Lv@xJq()ZOIoQT3IM2~uzqkA5I=iWgO} z4R)&2;B5an^L{x^q`wCy;XtqM~F?ri)f<&RH!@JUNg zg%mr{&wu#ZIfv=-O)ah%QE9p+-_heRdS{-*#cuP!fvN9b#-$c{-tA`}rPuYQI^}j1d<#@TC*`}HCD4pCaR9GTHB!-| z4CpDNN}x&)In+BjwAdw2K&&5VWV`mb>QQ)u_M`ka0;RQK4&f#?Fe0W9L%2^zc z0y@`!nX*tk`EmDw?b*?*LsT(KF|GuCDF2Fdrboyfy!D98k7?pcNVDpeov65&RmRB- z0TS-Z6t#cz_kZ@x^dADa{JZFt{}fQy$*o5vWfw7F0ES;c2LljmiAoD+$FuY<;i2-+1jV&05Yd`mJ>k|-JZj?94LqqYlL-< zx>R^deGZz$koB(fs|$*b6uYwoO?r`Km+IEt#0D6(6bNl=a6b!bTve>Smr42>v;jFw z)9ZQg0NJR0h)2Z9^h{(|d;aV)Mh%5DRwUtmwI-TrV)YSfx9vcOHh$I#XI(wba%+7^ zrE-n0*nrVde#FTmYfo#035jDIoYtPFh7-Co0uM@6d9GwDX2H#ARrf$l`{6tN%GTfW zD9E`G8-JVL)z98ZYXlo2Wn+SHJuM~_CW7pNsNbr`?KCg{3ZIiqXMHS%LrKV9OQ1hk zY6?D7fJ*IjQ@^LybrFsDz3~1L!p}+N(3%W<+3L#mxyXX=GFe+@@U!Q0jx!-$w)v)Z zR;eXm$mq1&)X%E+-Rs|{49cy8Vb82qaC5@NQ}`8S9gI-$O-CEl^zM=h%?w|1`D3YN z!JSuCs|%NVevDYRNqSmmHl;C-R2KN#68HDK}{c9wJ zKt6fAq1=aW9<+{`miPBRKgyAe?|J1(AG&x>smKrFZOmhiP@noXQCW68gMt|@DN=W2 z``jC0<)~y~I}f68y2Tapkdb9haQEvGZH%ZJ>^^@E!3w`z>5g)0Wks87V z%uFq_5`Gh3{SWkd5a>T)+5hKf{=c>q^u(St0r~SHg$=;fbThdg>ka%zV>1N$uPT&( zex00Jw@hRMekk^{0Wf>ykpLhv8}K*1LLmQ-m*0Q<2tVNOmGb`UDcAqbkp2z|^}ndC z{7)hMLj(M;%^m!U3jXhaBmAFkR{ujS|Gi26vupof^MQYFlK-R$`_~lX|HLL~u)Gqv z#iUqfJbFjel|dO(`~Li}bd{D^S^LH!i}$2`qLTIY(et*UvClWJxnG^v*zV0~s$JV# z=0V7l!54P9vKyz)p0RwAjcjS!x_|$*gG_VfH|sX=G_5{o!;sq|WEHJ=`=*P5tWg<5 zupd?q{)Nt)b%*GkSyM>U4B)I6Bb{vxj;i;+t7V~`GF(;rRxUmK)zpx@^{Z9uk_>KO zIuUOp7)i05(>gdwKOG5r+zbV5EH?)>{V^_`+!+)UU8}zcQs(@X2!{#p{k79AiCGiJB#60xdMc z&Rz@N-xaZ46`IIiE24O$SJ~N$D>NzM-`H5lvqX0f6xo0>=wvrFq#Q{*+GPXCGISm` zz{s5qAX$LefZURPhS}lxF)K5R4Ny?&W{f=gidnIo-930s)oh^PW;J8X2rNBn?;BS- zZUvY0)n{LOJ2_WH>bZFDQu*1oblyz-p~ZBB0oQhUoJG4U(8gEMx=fWiPgv#;JsZRe zSEo68pI;5nLCib}6B&w7LPkD^A~P_(PZ9RZI~BJpIq){4&?opt{hH)hK%SmDT;CQ-fM4-FM%X zaf7C&T=gea=^Sh;`>O2S{*cqRKK5swqX^qOnC9GDw{|cM>!Vaw_j4=g`^I>(0mAUj zy>zlmQ|jw3PC78_4w(%QRMU1==^f#x=~$lrRQ2odRA1F3Ha^$mdORf!r_k4;kCUxX z(725knw>d%`UQ*(WCK2Xn0FKqZZNYLzgK^=%lPE5p_^NVb#`0o;p5LB!|Nl`omQP} zPp|>wLEohbK%KZRz_Kc`{n#$Ijyu)u{5=&1C&h`u;hj!|paD@`Ac&7|vhEB8vm1fRbDV{?=7Yg9%%PUD*m*YKbx?APXuzpnXp?c0K5yy9&VlI8Mc>0aep(VBGxTEptAOyr zbq)Kc!vmwibAE2i3Nl~k%_qxyvky@;?sZy$ZHDV}x?}Q3Wrso1rq^euuIW~{Y9-s0 zH0AvKdmTO>tFz$n>Dn^EkBP+Yg;9l|r_1JnAi}8LhuA;!mE?v)2R)QKb@JVpK-@(G zacj9S-RBux^{~;Dr#T{b`v$oab4>c@D6du60KbZHhAXo`G2D{V8R1TsCD#O{ET3-i zDL7bm9$!s4w)qrrBhy%Rs;gI|C&JTPAs`_7mGSBHkwSRh#YZDqmG2q~kl8fR9-aF- zHt?AzVGcCp3G%(oeqmGyF5lCpqe8edlz>-n5OPvQH`S$KErHfNjy7c(J?=4iEj35d zPobvO2zR1271ui=fk`X@uXu|o{OEk(=dK!fnHXwabTwPw(~+zUXV^$@zwU5-^m$Hu zORX$?(m&5Oc;n!*>y z_2yrZ+uy-^PE#7&R2Of(NbBc5o6)ip+-e9*(MDe-EvUaMez2z2v$}x;>z1B1_qkqw z<*vDoG0p!Mm5DtqA51fzn4 z+kui+cGTV7k}H`E0Ui&LS)5%)kW`5Qt)2b z(P!^1nogIyTbhc-YkJxZksK!r4R>diNUL6tYTGi$XfbtnFuD6BDj^?zK13T+!I5eb zA}B&jbWbBv0|h|>&L;?tN|Ld?uWJ`BE0$kU-0-G}?y;g;DP!h9z>&#jO9y`!8H}HCgf_Jck z{?Ro~KYuJcUD!3Q`&O`Naa<(B#C+qx&$=`S3#N#vfav}0Yyi+wFzIe(RXdm0@+Vj$+ zRpHvR8_Y!OlSGbou(elVgTvl`AUYOXW;mEx??H})p`$JSfn4?ib^R+g!EL30++G^7BM zE89Ns7`IKPcl7ivA|xicN@Qvirco``D2;nollgn!%gR_}?}-z#Jx> z*0vFF$`Rr&F_=`FahE_vo{`R46;jYrP|j)4R;T6{A^4T5txXGhRwRezf_pyM`n=M2 zjkNyJ{ZcS4f`01B25siz^-4A3GQS8pP;yvhBtlI=^OTyu%KQ8Ko>t>!ZdN#jQ7!Z} zd7ELC(9)C~ht<#8V~ig-JaF^<3t$7(12;F*3u^+Rw<|KqYYud4vj5v?P!fwPKc;cu z(Byf-yS|o+&qJHPKrT-xmS>vz^7j=K{d#2kGun4*h3SDu@~eT*g?-Q&sZ>kYmHV@l zsH1Un`;|T3hPim#O(K2{EA~*Ls6qz%P&;2b0rx1(0yKiT)eTSui_)#CD=cyy$!Bg} zuUC88{xYqrCKd0cZr@g#=MfVAa??_#&p!UD9k>K8GNO~nWAske2)B%B!QktFBs6g~ z4}bE+3R-NvHCC0{Y*#TiH!^eA_v+i%ZIPP+0+Zm#d#OJNmCKIKUz%@QmQmVHc{2F= zFjSOCFzNf1_jgAdAK4TYD<~@5##-{mSFW-FO1@;-fmRWDQ}}HoiJbX3@8rE3G=CkM zJ-(OKYSCh$zEZR-fEP1QBEB-_MdO}eOE~+wQlhzn=(SgX zI#QM5i14N!_3@xQwK|yDcH$r{KX=c3R?fUD*QvRFW;bt~!v7j+3>NS=DaZav3T{KZ zr8L#zP6_O2*9FuE*hTFHSy&26qA67B)dtGiI!~ zh21+eepy&ap%bD6jbi2mXx5S5e!JJCn8o#OG${hBr@{tY7R~u~^%T=Au1Y^>%vvKu z_BbLZBu6ePviY#9ij(qVAk!v@>gJfCdC;0)P~)q{I2w9oJ-`O|Ac2-(^c3hk9hQVE zjs`B)4pb;$49YAVDn#WvUw>4s34<-YC#}BIZuzl|R0OTd{9`G=(}0+<<4dj!K1%>* z4Z^I_-tf-PvWL!d+JS^>ygPR-8X4&zO901(`wO@<&slRPrxQIMn4BR zbLj7$ljbVW?}I%`fC56j(}cl|pIuk>Rss>VN{rjc*O=lSViHb`82^X z?Bzae(#KsSzlWLH;F?aYrY6XZR3u(={X%M>whKZ0I-j`(Kg~8@a!jP}&l}@v`e17z?0g=HX(g{ILuRZNoCqFUjm!rk`FS1IHjM#u? zPq*`4W)2?hQW%BSZYfb&qJhBpgs@3K79X(UG180p|59)H1dY2e(mBIx4SDZBccROt$*I0rRavtdm4251|1AGi%$4JUd-(s+G zNG-#K{;XPF>3ViIEu$&C@Koq|g%?*aZ(e}?7=sx!m>VTlrEh6du-C;f**w7SXRFf7 zmIJ%Y#`RkC664As8_od{-b|5&jbpN9f18Xfj+Q2z9Q1kDuZa_Hb7uZN_K$h6Mrxt^K|R=AHsC)$1L^_^d$E?8Xy`o<@8e-6hPpIQurgg}$Q&g|@K4;j z_d<4%?q~IOSL(#Irsoc9z+Lz#YndeY#POv$)A>qG&OlJCXU>=A2Xl6jQ8shk@5&ZC z)EKNICFmBq95cR&n!kI*1_-+E(yg6CEurKzdv%+_%w~9EW*)eG-btp~7XgC}VvkP# zw&-BPMQltE^Q9Uevx>dP>}ycw^=@x`LhqrB<;4=OYtB z_4Qy*qYSf;%Aev3(ej`>(G7PcTV+>mwsMr2ti4gUB8yR`Q z|0rRbp(~AQUNm%_3Y2`)p83`Nba9%XR@+IDvRn3ulpYUFY-=9xbZVH}w{ys5LK-Ki)r#kq zzR2GwxkihOS1%-qp54Ki#rU~e3|0Mf5}ntJ{u8;HEH<<0h#Z^m?Zl_a*9&KG6`N`I zD-Va(DhArMl?YQLlPdy>#{;4l2qoF9L!0isfE{zNP3mtmhP0eqq z4?#Jtf`c)`gS+-`jn_NKInH6@ACwPUn5`khgAtL)8d42IPY>o=-vTk_JN_*eovrgO z_i9>5>$?)sL>Haft&Z3ZG#(liJ^0+%GBwxjTMZjM% z*_NiodaCWr2ApdjWkrZVX?K=SK-YmpAj3FxnUw?_11De_*nmD53e%vK2087QTOvNC zA5+CJV*}zV@yj=7US^qfjF+t8gE}Gv`1+r+or1@codn^LloI`7|%C$p0}_ z+F(V%5Zo7X5uEJvHQ!I$1z&)l!uRuKPi8sP-Ve?u-8JNNbIIWc4`c>>y!tbXcdwX= z(>`*g=A~H*7kd`*LYqawxdL)Ei2nY z$OM;+@IHnjeCRP}+uRiBVPtbiAHcj18{jX|R6hUs)?!GFPne(61Fn!C&26{p7}sWg z7@wy*lR;b)#faVbCWMqo&Z3K_h{}+%dgi9Rc1$(8#AW@F+kWlY4DGhCMKRh-gQY8IhQn@aoP8+8Gc4<_`aQ~nmi#8-!co0QQ|Gm=!M1N4Ta;rBgc}t@7@gz0PJ^N9 z5YSf)GrB*L1mh+|)%j{&H@Da{qG`k%F`HB0nQdv}W9&Y4X2xA9eb$+2?aS(;TH*tB zNkv&igw}aa^~P$(T|$ujfbaB>vJgt&jNsKAlysDMRdD|i;`4x3gu!0NyTQIuM*op* z%+=0olo1809;m12W)fLU8pQ~0k4vg?Z+x(PS_J+pg&uif8h8vlofq@)EjIUFW;$rG zL(YG04l%f^0bO|pY6+8T=%QN+d;U^JC)g{*KQ>jdTM1vMqU7 zYLnXOY|`F2BN!2j&Xf1s^!A$Zn#S(k?)LG1>}O@h-M?$nTp=MoIC(#-F*~YhePA?V zSZH9>0bA;}$>J10c66>>cP1t5x})>_De}aS^mgGcDzhl+L2-L1#BRZUb+H)sax{g1 zilii3zklfKHI+3!7khldNO#%t(VX7A*|y<99Q}loOUu=MZQJmUP3n@!-RZ-J_^m~_Y`}vW{^#3_)1+k2 zCH13Y?&Rj2`EW%>X;X0Ic#Ao@V&hYl{h1imAK%Y^*zA^jA8Sd}mn1GoCpoxX`_QCc zP+MqIqQ`BOBXaO=NtDk!vG=AUR^Pzs^&9_!Z`+J7-vk-_#L27+t zEj|HZ2P_y->0gN|%NX3ykZCa!MG+>OU;YfZw!CFg7{Uf{f*E{j2jNq{FGrA&67;y= z-h!eB+R(1_Xa0bJ;EpzwvGy|?)~;xVKn0TxNbM$>t@n~fH2m#l$!TsUac-s--F)L2 zHU51i+$NH=pqF7Rb?P$fd>00ywQ9LYpb4UW1_mX5+g9Pl2Vaz`%$%BwXfk(~>W-w= ze6;?l)SZXk``;>*IQjpm!20hEE+s0cl$AE(a;jjm|4I<2-=pT!1D3TWf}fkY4X_tP z-vv?$Sfh2-WiQ7so!RmV7suP@Vg7iCL`a?(`Kn=Jqk@-io|d8uqICZO4(RP0jp*my zqW+m}yWC*wnN(nIRc2+D&1fQGL>S7{ywm#j;vo+mvuEyDmu5}W>~FCFqCyukYf1H85ii>`GuG1PKOp$R-vE!kZxKnZ2(%U4MM>U-z!K&C(}668awU6 zh&rAMZG431`u_Jq+8?Mdn&wCsj*|OD=+F21 zhqaAQt&Ap${hmi{JH7U~X!lgVn5DkbDY<^iw`zW$=~|k)clMZr@TXVPu*9LT&WDnA z%mc2J_;1~D40AT%wDLGh+*ge*f1pJdUco$F5_)hGoE%YnrQe43uwF6A%)n@)Z@90R zS$PSj6pi8YlhAI@xfXJezi8*g*ikvUL25j!@B_&S2TPOAw#=yxg}|M(izWoNm~##( z%|3&lW4xb*j#PRijrf_E;CzK8uO2L9t(#|16!3X`F;_dS$jA%3y^peg+-_6p{R55! z9}E`q#g(QIjW;n?5ikQeVJTq3`b72>W*SBIH@f9t{IuI3O2G9PGa^PTR%U4w68U=o z#URXN;tEe&sFTkdgVjW|r|6ayZT54IXk((Mf*LI4Ypf*vNs)cYRb>j~TAj`k6CEnw`$1yT1SIXH)0b(jFu~q%z@O znCp->s6rs`irG+xC56c$w%+^;_r^c%7A_|(pKrO+f0wqLwlnyBDF|`5Zc%V)9urb> zWIkW`^}$+LXsG|%X2_YCr0%wn-A9M-n5~{^Rnc$X?oQ`?-;Z3}7;Pd12mSg-haE5h z9`tKjpl#xZA8*7uYjX9w2D!OI`)>y1rW(q#F5vjsfKMNB$Q8;RHsDLjDr;h>d)+;q z4Zy!)0~oKrvwA+T0qf@3Yyjyk2OBV8k!nP5pji?!Z)%~sBpJVbs(jMcqm)ho^ZqaP z-ZQGH?Ozwp*3Cvhh=}x(t%&sA5y@5rHZ>3kp(7w5ASDzH7|7mAuUo2g5n>1-bOezi z2}Qb6r3fUUNRxybA&__c$2fPKGw!+fyywGv-%t0$`Z(8GbF4YXZ$8hnp5NmadXEKA z9^sqyx7G;UlOB!*>|D5KAmT&)i@7N955i>|iVhq-8DctyQaQLg!b2;=MlYx3Aw*d zo?brtz1^DJHd(}YUW0y~`et((`J8tc_ULU*XP1G?c+q=Xn~=UeHw-ezBEBA@CVFGUu40xdcK@JvGeedS4Dh3rTa^H^aE-A&S)TGi_~%snw(U>pJy(X z+fpwJSn!*RYaH>YoPR!e`3SDwSAFlc{Hn=5h>w=XOAGQ+z$b+k*~3!dA!*1yJH(X~ z(Rg!IZk6p3Fc`s`O$GZATyWN&DRJe$2= zbHZ>a(?Z5;Z`<4^%TBe`pI_?Q`lUgEEK0ySu;ssIQ9h41rNLb%6~l}9EW4&P%{T6A zMFr*iA<)rJWmims{Q|@qhgU8<=@%8dfcPt*_TpcCYse}cu@CIY{Zxdy9gShZ&)HgS z8I|z}T4t<{huVK=y74XRndIn5BMN_gi0;@KnZK-t!e2C0=qA57+=z#sn=O#O?#W*|NIh)9Pe#5HM3Jc*?0yG4gO8>eoE*J5Ah@qZtkiFnRc^8&KBYnsIL)m98S~;NB zd)k8pH)nb7#)am{y&7(&dTh(~ZBz+&23x7(Wvp^-vezQEJXBQ}OH^$pKOYs6RO3rq z|2Pz_ybLGZ{zWQ24#Pm3d|9RIxA`+)npgUVIW5fk@qH>EO`jkhwS`O^pOv1P*glHe z?o{TFmTavRT7-X`R6%i*bRM-ExW5<*aZs*3b28W#cN$HlF?2O|`_diFdFq&pV_QNA zpg`qH+VOWVdC{S~l+m0r%ygm-qo`@4VHU?4BN8@;Kc5{+#uKY86?}ZH6i;<2>f6Se zRNd&7Nt#XRlppgB1(bmnYj?hx$tb0QdbyEGy?F++fUOLySiwDj#^{9U&h8?3%L_R@EPkg=-i%}i6!L_Rq7 zTrh-r{c;AW_-Df%!;^{%A$ zKYnbxemg8S%AZYA817ri^|_h(ulwoN@~`C=6=pYzg$2Hw@1=+aZq5f`=7a4Q*C+cE z_JoX8(@nFDRn1gWLl;C+J#(@>bFO8YI!e89y3t#kt{>oe?wygUZ{vGi&U}vX!oDRG z{$!#}wCQop+FV%QTEDFmbTlj(Sdbo&ZMda#pin@M5lw59_AglY*xLF=_Qq#Dk*o9S%3yczw%(~{!JXn*PXkNTz7zImVJi1 zOTm#h$p~Ik)0T`OdPJ3(+hKSnIA3S!yE3`PH;n~w&{rKrCUl?6mxBXe^wXwq3nvYJ zr+|^G_PWuJgFq_XR#w)j_BO@dt^O(r?_-0YT}w;AbB&l@P?K_Z(m8;sPUo)O-oR~k zN=n=q*B7OlM-r-E)5Tie96dS+7$SJOb1%&K?`urIn={U<`TDI_W6j)>%{6mz{ctmK z_r;N@uBK5mHR<2|` z_qQVq{3n)|2sZ61X8}@$Afh_+zt>WI+;dl84Pr9}#9%HlV3}Sr-nMMJUbsbBOA@%h-V2_EP?d=}ZCz9PdMHCO{^5RMuN$9VM4FW1 zCk5Y*IFA&&acbI=pA(xR(H#XJ*ph!lTp!!d6GdL9054WCs)L~WE+xt9k&DLb86W#{ zYv(-uszUmf%h-bbYz5;m38@9C@{^XPEIdp615r*^DNKjnt&Qg)^6iIXG zkt$E6H00K5Mtk}=NzCv5Ux*Pj0*t+4?z0l#Mc0l1tA0RZ%}zFKDm4cQ-<27N6w z)tWQCH6Jt}^&$9;tK-282{;R)LVEUtBZJA)w9*8OgcmZS&)`YMqX)M8roIn858#)6 z{ISNNxNSh(F7xheG2Un2E)rZeNi6c&fMc@TGvsi)`t#tUSDZWrQA5DE@b!#dT_e-+ zVg=Wi9}DGbbZGjJNL#6o{+GzBFdC6=!wuUQ4_cFGb(n0 zKMI*j+M1+F%Q=YMFW+8rrho;`yO$b9O_JLoPfyL5R`tr4JNap^>pN&~OL2FHxQ^0S zQQ+Xqwx9-g=gorMq+l=aClcb0UYR$~G#_>X7`A@v?{m=CkZv?;O13(jOJmH6sr6dc~j9$C30nBlwXRD?yF_UVt0O_%Z)-Vqrh2K4BllO^p}Gj zJ~GMDi*jv($^v9ObFLNaQw$CqmRw~4lHJCL(|aa~nC2WqK}L<@$$doUvxM_O@@m}j z4ZL8k_jW+x8N=mXP)JKmT#i)milP0C};PiG@b>xm%*uHD12T=FYISD z_X#EG8-ul}PsN_VoyBb#i~>hCM^70~armxwsb}LRy?FCpyOcL*^z_3}$GuI;$@wPb z=xEO`C}>w{J#%eylj5spi9jIK^&3YNQpXe;KA1|@`*`*gFeM01&6|@1H;ma-)hJAE z3a@L2x38GbUWZo97p==`%bHmZTE3h2Jv;{i6NuL3asRqV9vk=4LEH%#P7N6wEI(&> zc4tc`dC*(+VX~ilJygT}C@NnI_&v$cv?%^^Js8d| z1yQW`PqwtcWR_L`miG1`3&18sUrJu1{i|i}oFI7x)D)CJ33Rrg9VH+HO5b98G$tct zsT1K}%dSe*teFNny7@fX!$wKyw)OnmfYQ5^5i*Eis?PUmR-<==DORaYQ z`{$z3U;REm3*y0It;R?(epxD_rmL|S<>UN3e8UP^bQPPwvX2q^jLn*OTjYIs+&A_M zx?BI88@Wa$g09A>FjxRG3y}11Vn?%)YcPrc)P2Y$C4nkJipw_RJw2s#PH%_oIB96uSTRp#K7dNg$4MvnFT1%X5d(W z*u0dkpS|z_bXAv;`-v_pkOhbp8aw|B_@#?-{rvONiK+oVnoLz-0X9B?=Fv2B_Y+-6 zaw)?U`GEx}f`K+`zrfGa-9^#l-_%)v*8mnEG2zq@{k?|)V*wIU8(9GC@92L;Gb*CL zuNugq$x@WvbA;Xh{J4wfH$XewEI>IQ8GbIIHg;b0_y6iWZO*IC_|e~2=`H71yuc>_ zAR`goq_B4sGFrU3q`cUc+(y2qfAE5t@7$kEhpF5r*i^b6|)_yXTwk44MbG= zm$E$$|EBkCEk_{W+r6Xl(P^~_mxXRl{gjCp%Uy34ZwtnCdoWF@!k((gWF3EALIOUn zTyAR9I7eryhk_J{2LUZdO|6=vCULeYVK^wSm3e|X9dh*CTQ>--(Z>)Zr>aCg;o?j0 zg>a>ke1u+k)Mfj+wbwDkfGMr*L26BY6Is|eq6b2#VBf4*gx}vxC3k(t^3>*$dtF|l zQVchfjd9(poH2b$YKy^1_hyK&06kNh++bMJ$F|QCJAD38%kMhkH|K0{{(4qv*np_$ z1ztwbdH+yma1C`-;}i2jpB)(pL<(~MHHr|9zHDTrFdCeSOD0h~S%Ap6qAI&SFE6Vm zIihuK67fOE*ExOtq;+33)7_GNqP&h{Y z7n>NW3dSlUqY@&(Xos$x+n$R14=2m^?{zzQ!5zY zrbZWEgB^ylvFK1f3(+jNdye%$i5pVi1AW+$?xp9KLv>NmVg(Rk5-|{AoRwWBjkY{O?_X)qg!<6nV!uv`uYl&+dbBi4uikE#q^6_=6YU$~gD)^Xn^VA-HH==E278P5&^OyILsfh|$lq*D zf%5GQNscQ^Cs;P*NI&z^hRtAO!K>k#qMAJyYN^VQOHdK+OPXmv-}BUh!0O+mxgvGV z%&eeY`%B4PM!UZ;T^&;4S7;q#jfwK490Y`0FH#FxCDTfLcPrcv@=L)e=a-aG72O0y zoxUp}HVMk#(eW%m0QxKb=+&(Ws_*k%uy01p)37PLaW2f z7^e?QZqYu!Yi|DO+$(p@l6@;9RiBFv8`SrG38U>M(IqHjdy!$@Q(LAOt9NpQ%i0Y^ zt2aB^_w^elzn^x^)i>ZEKkJcx2Q4T1a$&TV6xz8~2oL9!clUxNkHs!We5@!T{-brD zS7*Idj*b>ByW#Sg*}Gd4EC9SJ%q%A;p|7+aolelGr!2)594B;YAqCcSgA_C~e)AX5 z){FgYbUlrU=L(pgx3nquSk2fLhuD?CP0bzWcV^ucdqE}!@W9-RdMj;i4d z1vBm6(D$&yIv*aCyLBjdr5wYLf|P~rLv4eBX4Bxi%b>T%366bwVw#kA+hU|{pWV7u zys{FdT}e*&zP#OAtiZn0D~nr_im6kZrt9y691}3Y6E=OGy6-doiQv9%J+2%S{>`4a zZ!!6JRb|odB(C}h{;pAm?alk<_kUuaTVJ}R>tzo}O%I@5cH`s!tH-{ZTK6?oLK&!S z)hQ@w{1(J}@695ArG2X0L_u4-uh4+I*QvD9a42($Eq-{fD27X82+@@DSi&REv(hWX zp-rtV%|%O@TdzreJj+rpyUL7bbnISnSaI2Z8;1Qa9H;+B+-w?6(W3Tr9-P;kM^1r1 zYVn&-IRda7Z4pf^Ph0Y?Mt>#jkl~pozYE;9i!<`|S$1!6m7keQF*>W5A$GPz6dH&BC!8JyW=!p&k(jy^F zp&d#{VEL%D)@^ofkF5doSy+igjvj29GiEziQg@gUWND1B`{~WuU%15rw4k@MXkzAm zr;#LZ?xcsE6+KHo%F zct~aFpreg#O`&sR=l9>cYh9F0jcC>-Z;Zka2+MaR9`3?6+Dvm}S+pg? z`M{s{j3`9L(`q?A>V?-tv{(SAMi#)g2qCt4JIo%NMlcgXy$iKT&Q^PT%lU2v3lJ7* zIkf7}96npN=DJeF;rVa;fbPu_fcPWR7H@pi&6dZO6@`H}vjSTlW`1k=qEvlSNPfC) zb85|ea0NmJ#!AQ}m=@vOuOQ!EY8Nfjxco-|K7a+_8^WYPFYWKM0A41QBRSrGx=v-s z^KYfzGch2+fU%N~evwx}g2mOe8c@Ntai zjG%Ob&UXX%3JQe|s>wC$WNE^nf!4LLpU4?Vk;aw}XBd6)+d6|VNnu%V0|C8UxWv_Y zb$))cw7F}?W?4C*;)aV0Qn@=%>$p>@t@))*w%<(DifI)jq^!T74gFVhB_G?k->r3d9~39qKGHw%vV5%muFlW>>8c$3uUi|W~dl0Q4U zCT^#<|3PrRcz~jTk{KPkW@!>q6es?=St(9hs3le9r_1VJ7-N^(*>+z6?;P(4VJOx{ z=hr2nuI1b=4#Teu!DV22jLznhvBvYO?jkPVoFAQJn#4KU1Fvk-e%>;MXuM`bV^_=! z|Ni^ehm6MWQ^c9FOqy0iA2K;;X->Dptcmt2PW)Q7Dx)$~S7(3rp`8-eHz4#rmOM7m z*uyRc=SMaZ7X=>#m=vB0##eqOyjsS9BPSw4QJvUkYv_?bB!&JYd?Mv(gs*GY^6RCB z;l~~=EWq;+6mRCF$5p>I+J$dwy!+}I3@H5aP2t<<@r9y`YqF>ByTscyQdY1BG0U@1 zC)v?RkxJ@R^EuWIH9vn$*x6MoH2I!HZ5qeJHwq~z`K~Ct4O_~rH56hb$O7Y1c>rng&l*7it<6kQ%OST(MAK0X zs-~EJfM?`2%%Or0P@&hfx9(Saap$k#>9o-fvw4K>0f?ToVc-n|jKIN1rJr#f>m+c&;e|AQRS zW6G@c@m#a)xj)K`5l0D5kuae9_MnB9Oe>LDeR@-C&A8EB$$mZ;1I4CORryb!{R&{2 z&VEs_f|eYww~lj;9|eRYZJ6{P$0M&^;WfV=;buShu=-=~P^=j;myrWvSka*LNV$vk0FzJ>&TOwsqZN<(4(Z4Q zE0r{tATXcY*X@|={iXbAJ)WwXE>*CiQlOja;s4?k^Y4vMw%0JF^Xo^VmJih2&%dA> zP(X<{i6u{JslbceI=cB&h6^q(0R>u_GYH=G1vg|P(J9rMbYbgt=~lG~GZ^@rWJ+6Y z|Dw>{{wr_Z(;aIp>W;(wWbJUaqA!ST^^A46#vq+H_V;@1&&KC1U$i$&6xzm#NL}io z!x+1)`RwY#?OvepAg;I5N#oIKWbT8yL%t)ske}>V9&EyJ_KvnKRB`l;(hU`B_C*$; zv2>e*&P4^sqsjirtsW;(xAJp=&na6OiEf&i@=qt5dR~zYsM3Ar(C7}Mh7ngFE;*A8tR&Uyajr`{DT_{474>El@bZ<@t7=oF6H(hX`x zw>qj87Uz+OA9gz>+Rpe=_D5lJ376kJ)iSs`LwQ7Oii#uFwdMWr_W>EZah~-7Wyab~ zhAZD2J8WB;P3|4r+_u!Te{1_3XLf8?Wiv?sf-vptxPMmBB~_kzc1It^0t5^*@?!OY zpXhS@*Rz*p$oO^DH&Yu{N^ugBBeHOWA4P`J`a-s#5K+RDVil(crqMvN_Wfs~RxH4C z1WKT-F=gd>wAK2@v}ZSz2MM~R%Y8W6e=4D;yEQy}voA+o>sf%r4RQ|X8~HqgdEGu$ zBbKhIX5wVyByAAG+cT73QP>fce%xL-b%^e%K<+1>ovUx;QCu%uLZS!?{5*0Fk4(3u zOrdo7iN2bMDijw}XE#MF5pBY}!*xIiJMyLfA zpcnj>_)b@s=q}V5-L87Lu*hEsvLRSO2A5Q*;-PJ*n1nrF0iGDMvdP z$4WmlPIG%i@H3S%T?hYi{%S#jnz&qA(X1pN9?b&a=zW4h=MAr^rx^@5iH_0QvQ4qF z?IADte5=2

    h@h*Y|H*(pQ@Mx4)d)&oRv1+n;Ea0%PP2#h$9WUU}_T@bsvPVcv7& zrVsZK-q~GP;Fp}6ulN+4&^=PLr)jmeq%J<3H*%BE<|xS5r;3xyHQziiXliJWN_FmP z#zM3@3ZMnYFQ#Y%(QRGKKM5#kz6vuPck%!iVfV!ncdEU83Wn zm|9tg>@v$aeuF3mmIe5A_KaX4#5IIrpbV}*dKWi#)I~C1q2C@6dD%>%k<*9zcpR-L ze54v&{AK1tCg|#!M7s^SE5PQVxk2~%hm$3qX~&cz+b{jftL24S(*%=WZZ^-Dm)3?z zPndsa0s6u4G9@L{^?c83X!7l}kcLlGt57RCu4tcvd?Ke9idCQ}!PCkKd8CtfY54CV zaeY}e8&0_?RZhC;Tb5JRK~3N8&HeGGEW$VPn)a2}-=8-aS6`CkXH3g;B!8U2#r2Wv zh4d|@hv2~Ea$BHV(FZ$>y$X(fRpu?)+WTj&YoUh>b+0;xOZ_9|2G&qCk5cIslCyjW zEl(oZ;fyPs{BZX|oqqVt=*~qg5z*-^fM6%P{}uryPd`pXfkJ#ue{5GPF?WD=;a>sM zs5?#9E-f&CsHAf00x+f}h{auF?~MMEe#z@KW+wbT0BJzC59n zvns3oy!Z23;C|Sxi8CeIQ|2{lcPZ~<1*ZC`E0gCl)9-@uyB8GTUpthEc5`pO`(I3- zgcpAJ5Sh8=_v_VfBd?LAhAq~anw=R+UlkK}k?s&kxcKxIF7 z0hzK)m8-)*o8=BRt<3oF`du0yCtL_54kZU$_x}8Z&->}^n*9`=7vH~7&LfHZ-Zm89 z?sl6bTsnC>@Xtw@EP2yY)`Ko&b|7msjZMH7KNN2ES?7nVVMpvg9H((D&urJ9-qYHh z%{zKNUPhN1*QcR$=;V?i2Pu`AD^5;JP8)900@HG0LlJ=$j5mC7;2@PDvGwxv-0H_=6UWTVG{dxL>CS&7cq+e~ z7&4?&`W`w&8mGnFUiLLZ-p523zmuNz4C9f&C-x5X8Uk%K$?yC2-tpRD^`wVbfU5=q zjCHbB=b{*WIu233q^2<)b~R7r3C_Q^ai_qojN@6reDqh~YFBa4iebbxzW7A60UgbT zP`xu^6_pgD?1)4dcv zSX%bqm4E+p#r{9i3<>yNlLZiZv{a|OeT+f<**5+-0z79(y;D5W@>kQD({&94zR$y2 zPX)DSp7c)NPqAq1nAmN8BskdGH66jNe7BX?an5Z)`S8fx{Ne$cw$9%Bs-6EbBxwPW zP!wt=)GAw@rBEa@6%;XddjXV`ci|N3MVrH-B^x2eQ$(40*23ehz(*$H8|)Uv(u4HvhtQs**? z;YV)uFKRFfDbbL=7%*LlKpDH{zb{;SnC7$bqvoM#etFB^R$mpW6<-KdhtCTU4oS|wcs$o$`Rr{b>6#UK~fuPNEJu* zYxXZU40my{!}-&PRqa$9^ffg*%ox>{W_B{&5yhr`^6!r!#0U#eK%HG_cQ*M`(E_c7*C4#c_@5)&EQ{fo&yhl^Pmm>tyL|WN{ z&g4qW#XJ7<1uxX{8B9m-%M%ZSNZ_}E3^j1U0feRi9vcI3;A_jGfG` z65l#`y)`8o>rU{w+<{`P}O!& zrTM`W)%Iephj+Adpgal@78VwX(EPUAa}0;8wI2&=s}0=g+5fY5rN9s4lj-=-({bgA zug}f;n`>QCI4H(H3vVBWx34JLw8P0-Rjf-#T7_kWW>?GyK?7Uxz6TK^8X=Q@9<&3T zb(t|Q#yCzS1Y?||BPC>uvEo$0UNVyD<4sP5n%+#5LurmypV@2V>qgElp`zt~_H zrm8QpkEy(80f1DgxIT|1MW@iUTtV@;>^EBv5R=#5)C)N+;7ho1L_}N^A0`oFR&BuE zQ_HPm*jvIktaCec?~{+PkCsxneD6Ksc-xFrX)&#UY|mAWA+}d!m(}gfJ~ga;Q56{x zUN59zEXfT&gixi4pad3xW{r-AqnrA-moRhR(c(;SPzpVZ{42Ekth{#7B>2P5J6TX> zOVn`v{FqW4p3ub081K`re=pE^YXVajyiub_c1h`v5yMlY6TbR8C~1DQO{OgJr8PF4pYV`q@WLfgL}vl?N{stJh!>K2zXfeR+~_ zsUSiEPSW+3)sOK_O&1QkXQktWSSwNHcas}W6BCdqeryz7fg3MyJA8SzPZ0z?G!P8| zUqSqcPJBMFC)R*G!c9FdF=+ZJ>pdI86GSVK*6f=mJqUS5gw<=zqw)d{_|7?1>ESqXuK)4}2o}@V)dV}<9-~i?-1K~3GNo}140j4! z^3Qaob`aimuJE+AEOpKKj0dUMJfaKurrB4bke|ynuzwO9TNLd~>eLu&#LDW|UYT|- z`QkD*=j~9{bk^ZOR9>uoUL;F>q__@Es1LkXz01%ZH|$Ae}BZ(lSo z%Ci?)PVPDaUma}*U(wgAg~aK60H$SkH6fHaIBbT(ieP#z1QEujga20xBCNEj1d-fvSE4}J`u7wiQ$9VhJ^?C329vopnL z*`?kzcG8wDe{;Lm^p~^DC6^h(c49-ROTia=`G7~L5isc;_gPLwo?@lH9(Dj(PZ{;5 z7(%2vt>zv9V7b5hOzmAFOnHm@Cgjo-L2je}0qZp}>?<{}` zq&(MX`H6|Ma4G?k*lt3(^eje^vbh<+F0$FC=W{} zcTcR%j^+s2y-W5VT*^Sq{3XH7_@`fGPUAell zG)#J#+&3t3ddMrdH@Xt`?&}|te?B??c%nt0S~Tx*Y>A)6*cYkfPlOJVWw*4U z$W2D|jacs(7|-v-d-`*>E2f5pXNZ$9hVeM1go8XL#y|swtV9^7R`j-DF?G8c}+1TuVmcqxhp{fXTg`w^!25O>r1~b{_gE!OSX@;iW%aIqgdei z(uTg<2O4W&QitmHh99-a<0gmIEIQ+)1m$wPM4Nw}Qqc*ZD+VI|2}X>#<=SfuY1q$X z2S)k5$tKfvqwf7cxb?fgTt6DhOZC?0a`1i`H#UZ%xki!bJLCn(Ryq^8yesh=qn@Ih(M05wfG2vXfY8j)@|XY-x^OoG~I3n)+rU#q@1~ zK|DduAsO}vj`O9i9@Qd zDwS)jNm9@fpmOhY0m)2b<5WLG6Q4(II5Fpj^WV!DJC~=85|+oVZguj_5Jqb1$ve<} z)5+^AuUi|6$$r;81xH$nWJ=~9XhDK++FqC0gzPOwW_h(f(;42=AI+=pU)5PKX6J{v zxd$ZRn#b-xDq(3X+Y$US836{)ZwUFHKRvvlXr$HrXOk zftT#l^gdg;4e{L__}pt9ToQky*h$?id?gR;W^?dg*ZTiGUGRV6|L{9r%kD1%&wocf zU_2#@eu_PbAyA^hr_kTJ`8EW2=1OXRS*Y&noKUDK|Cy5=H1O*~_yW?8bkK^;XocM9 zxeFsw8;hi8{BAqdT;!5Y?Vp&^JRO#hXxFq1s0uLL3l?XL@sf{Ubl#xH@Zif{d5bB( zVgbB8CBwh_3NcLN2jy!Vjosf5(_76-w##pod*9q19Xo0`D+c>z%-=q$p<|iX-FQ1D zVnk4P&PN%M7KJw zU)L82nGp8G5+!7DAq(KO3JYQ0{^!j7`p~|`?2yu+>;%y$ItJ-zm4#1V8{YI1ThAlY zL+v)ku~1W6EI-p`8JJqaaVCnoNUl9BOsxC5s6}A`Y7p@e|Afq8i|JBPKeJc%k{#pp zBBm~5NY~4As_Ytzf?PT532q%Sy6{@vP%v#6TxYU931b2Lz!^`w1W{pL^*=g=nTl7_ zz+-CSCr{p-NPgS=$Kqw&Kc;wOZMPAX$Fe+s=krfAok#x)jgF-VicV9i*V2lu#K|?@ zhQ%!?gX_!1E*8>4b7l_JW70v|9nxc#;MXibBK4q-j?-Z%k_|*ji-Nsj#tEW`iMRBa zfxDqp6~r(#;o}rmcK(pt%N#MPAh}EV;WH=Gpnufk&duR+-j9VkX3e zjN7~zR&A1{sB>=0Eshh!r0Y_ubKYQ6`_|wtqwr9dj#>2QEN!ZV_vQ5sHmb59BOyJu z%Fa;>o>KdKpf0nh<~y10nAJO(&fg-d=ja1}8QOA*l&gYb0XR^$XO%3#Bjq#$6!@xv zJmW);NZ`iwn->6YNzsg!WFtf zKssqMH1uO%*Oc1&@S*$cR~a(RQmP`dQY$xUbN9^lV+k9>h>UH(b)znlW{tH{J%oHF zh-g3Gl$Va+o%V6$!jvvJ%3r6o588-mOKa!p6gzwPAB`4wf|v99mJ&gY$35KA6m3$m zW7CeWRq(B&!C*C4$sWD?4aUc9JRJ`+jg_15WRb|1yXnvTsL#)d&n)kaPj7;7%Rf}d zkb-xJbao)61SFV%%BdVHaBztcfTj@s?ze#^6XL7iye~(N7Ew75q|G|yU>-k@lNN<& z87W1QuR?-_y|;vOse(-;Prp4wl|l7O_YlOj_x5tug+wZ?CUm7#VFQlQYqfAyFb49v z#X-IU$tEeCT&TM=a36Z!_sE|SqTJ;dP#fP;pq*qO>M#}@7D?U}wOm_t+oXM06mO48 zJvpdz@^9Qc3FiW*X)FQ9ys-1m46F@Z6Ekyca@nT{RI;+*N)=2f0`IgN;z?5>`3XRq zV!fOY;hvvW)4hfls8%{jR9{Yqd`jhAh&E~2*EmiuGFMU+W6S)9`a^=Q9E&U`1(!>w zxjdwGa#~Ye47{@tZ{>3Qbx=$3vU?u1*=UPdt0r1_LsbMqh|@7ftr{0Ht*wno?wujL ze6VL>1YDbNn$mO)bC_x-MD6X`%xFeiu>f|{5nMkdoKJV))@`}FHtij`kVVs{5s?ZL z3j@-l`?njJJu^RdQhO-%t?l;e;`TL?qA5M_9?I5CR!-E{szYx$uYD6{*NkA+P_$|0 z^nRcPcm8FyRqQu-p7&25SUhQYul)mC+{e{ci<^=VuDFjLGPa~;+Sf;h3-J>162*FU z9>6CWRDSWR>heW9|1a*Hi^uavunFdMI_XIG`NUDz7bOjJtosF&w^t34kD`Q+Jj>PG zz5HnZ)3Jm^(<_C!k)5=r2{)vO_qbQ$))SH3d@>8bGr$6HNW@Oevj7OBx1k(WnT>4T z>mqI;%}KKlG!e~QXB2eVJ1n$t=$au#Y@6yMDkqAz9yU5S^ipL!RTyHwb~UM3g|h$y zr4schBQknCvqtj!ZvK~H)IGXwf~uoCf5?-I+=uHqzWHe~#_7R{*r>=LQGT~#eeG-G zk+EwH!}eU_h3i+&`$k}LONC4C1b6`ZXev-5>v|gu9QsB9L;~bn`vooGsyy!q8#Y%q7)vzboab3=l#p= z`BlQd8QxPZGliA`JxoMX%Z(>Xq`tUh%iPryej?#+Pue$gNHvx`z5RXb;K?9UXt3UK zG%T3~aBPQC;uPG4=rKwWst!q>su2Rpd^xMFMG!5i2a?G_HOhjpYPX2gjG6lOx_B=3 z=ZvZ@5cutX>=1GB^En9R%qXRmTc1xb0;nv20OQ8a+w{n>1kG=T7VkQc@mKuq1@;N) zxJw{;=S{5{YdvPIs51ZVLl@hgB31V-{W~Q-`I>NZhju916^u!_gNDo{2@SFmh=S6?>e+R@3vIup^-e^68p4*0H>K2RDpwI+5bjlb z?;87U#{A6?J?AW^2ZlG(u>G|F=IyiBOmS7%qyp2jY@HV}y=`U5G+oBQI~UPu@(*Is_O{$XqnH4QBL#o02%3!}Z>{EB^IW2b z=1&$cX~KqQnQ6VCKUe@@$({A{YY1NkM=tKkYs+^P zIlp5LDOo3O$@|0W78R?6y=c8-NraL`c)a-=&>Br0e1U1atRLgpTO>zo_xgKC75RAS zmshmyRp+bIJne{U(zc3FWb&7499CwvSzRQk2*UwuoY@WqVfvp-D6a}1Cm38eQK9u~ zjfHNbxz~lIMWOMc7fQV2O1K2g(j#R|*y3^VIgxTdn&D$=d5v#qb?HK8@jDMAveX90&vt_UMt- z;eY1l?_X}=GZJacfZzPom@YY7_tV%Y&$H2Dh+oM`$U;gRT9MhJY1(n!I8Eax9!}5; zmm%)sp;xTT*OB-XWWe8h`oUM}Pa^*Mq^8g&#%S+Xt*-p?;^|7cnXFljG{0kwg%*&@ z>YY44tjZxu)89-59pa4bhJ3xieVYR5+r5S++R_IOwg#BuG;H?_V(cmQE#5m4V;&K; z`cgocAl=?n>NYj&9kuk5fvoFtA*5!P>d-G@?(ojECP`&~r>GX_+1#n)+c&xAXc$H*5rvuXT|(nOK?! zYSP|0J-v7S`6>Jzyi?{q4fMBfChQ#z^jzsjc<~(qNTzOUu8Etcmf|O&Sn6kKw(O^< zm%n}RjC;|68JwXXN*%q8cS?Ia_|`OY6l%9;Q9!UzWH`G&6?Inod(YmKGzj)m z;1|qDyM^;q7ju2T)YHr$pXvNZ%Jtu1n8fPoo%7G`SHM0?iEX|;%7CQ?Q!bML3ikzy z<8Nt{5w^Fc${Kfk*cL>DpYJxc+i5$wQb_2B1NxFrXK5hu^-hU(2I^F@X7UZy9P~F% zHriIBTNelG_FS$h^2ynNna`2&GShD+skN(%%19%kfkw!a+p#*0moS{k5qqg~slV?l zfkt4uhQI>vW^Z4S?1lFTp-5Bfeve{{Tes9OHuDF!j|v#PG#22fh7l2Y`Y>it>*A@+ z{T8se!BwXoo-WK*8QV0zcFr%iET`FFYNcb^t1&K6-yHjb5_nth)zs^bv#lOCj!*57 zPjZZAavJa`XT&y5$0<8Fo#genih`J|o2)63lO24gq~VG4(EyW8faep3mGXt#d<}oerl?NM1^l8de)-hPE`mF<-zEUD&aaSG!V;=01F}W>`GjfK>Vg}DUM9- z^2PXMSTlFSou_sUJ|*A0Gt4Hq0^pxJN`DyeB4Lme=|sw?LUlt1@c&`$y`!4kzIEZa zEl3xUjzmRz?^Ut|0qGKYjezvtBuF4CC3Lp*5?~{Q0HH`PMi4@gE?p3T1OY*igl2${ zd}IH-CA1R7FU?CH`5Xq%(#nKC_M!4m_d>(*6TFT_>t;OSQ0d#lL5gMR)qmmmUW7H* z4l&IchSV=89@Mf3i|2T2Ln+}+%TkXCzSJd9+k>IKOI6#YEL48mp4UB|4G6+lQ=)!s z?OKL$iVbxnzE%?U5VL(U^2VW7`Kf~!ugK&z#8ZQ>7iHnlV*wdxtCo7dOA`z5?Lo}t zPajHvA|qaXs$K*thE6YCg9A}n&g*jv9`UO8C(~_a|Gk|#j~=~-@-!KGS?DjhbxliX z(EwFCyb)>E4=rpSvK*!Mn7cOG=|NKKH`J%AlRo%;Rs8LHSH}tnPl_zQ9jjj;v*=f!_(6`8!(db54(kXJKkD+-HPx7UVA4MDNVH zr4>KLB7&7pmhTc|xQSBX4hhX;&J3xQXa^Z2wK0ca|Dx+OIsm3vIk&!7cHLEwb5?wC zmxAfs&U> z7CC|^8oj_)x?Uhz^jZ>r5>d(}Q$`jeZRus60O@?5EH{%y`XiP`?H)cz|4YfJ)y{Kv zvuP#=CR4N8TgR7QS5Ex(p}OTPt(*oh?v`2$tnhHi4f@UH+A~}KVAMS+T{j(NJ}Er7 zFm&O}@$N{BfDxTPn%Y_rUy(gJ3N{w#kL$p4wk$7})3k{NoLVZ#E*TnNC zdbqT%Q~o4N)ZYdU7TV+mYP_4qK13Htw=nw%4Ie6=pCsQDdP1K&cp%}VeF;%GCkXwX zb=r_lQ6-eJG|TK#?|nR&u3DW9HI^v$Ymj^WezT8&GA*(&0C^`gm?ns4{;qkFDnvhe z-p~i+*VH04-?N*%>ajAzrp-p3$5VR2eWYs!*4ECGvLE&8o^2bnRJ*+kZ?ub!fSM1O z){4)dzvmDUKmYG~X#TsKXTA}85{?78p(&4uZSeuptr<6bp1&|HzT}_y+ot(G8xMqe zqc5H^T+z$cU;q6^M}wKrh}g$62|W~^AveltqVlr7+;sGA6tn>WVF;N0X_9{W~!~9 zy!Ia1nuE7Q?A^t)elf!}5P@s_>H&46-{#Z18{{mK^x4SDi5WxdMJ?C-{O5?pwgbVG=Rw9B%4iZs62+r`^FUjzcPgIJVax=SQ2CZ*%Jt zhx%g#7buW=pAun`X>&Ch(Xak(Iq$5ywbt3J%I8Je_l`qp>3wNugUY{N)-ZO`^Hz9q zuvxCG!l`qDEjikW1`g(NiV^TnzV}YN{BZpkZpHBOs zZ+E&M9cvvoqfrS{UcR>OzmhV^c^)0*Tb1NdT7 z8yiMQu41SrT`S5A823@# z@I9O|<&fz=n)`y49jow^2Ly_fx8=uRQwz0ORNhmeLV^%$-AEUD7YgSC-@qh>)qJ;$ z^YXMcgu-mT&%tGYtN8zkk^V!*`qIhPuJ8H1)tD)Pd)*|@H0iIss{ktSw6L@vetXqX zAGKr@i0*4&(BhvumUt&+W1c(7#asXO`w}$5z@rBn*lJesWe3y*HNZOsJQ$iES4eIU zTZ5$(vG?=L`Mkk_bJTBG)wq+5b**;iBEc7%A~#l>KDszGSe@J9y%wmhXOE-r26eMO zBRj?>y!)9*u_LS)vtA3T=S(GiNwglAh1#o4xV^^p1WMl4)c+O4t%^#V2;O#)ojSSI zNUjCCpZmpp;q@F?-OYFnzaoi3Y5T_!#R-f-nz2tk!-pqb{=WCl5yvAMvupTu!wQ#v116)cz-3 zzVx~Sqn8jhA28WlX@erk)eKMw@=X5XcH@cw4d4YWBE$%hfT@&cTdCvClK!@CJ3-%= zTtn(|pEg=&yBD~+DVeDb;!(%Y8MK-BD1XQfhpz{)M2ReR@$x@`vH!Xvx*Zx|H|_jI zh4phtGYzn3KT5j1wuzlTQ_dl*-h8~UwE9x$&5{I9>uvCJ-=C{2Uxvl6D_!e!^6U$` zXIAMnjJDIM#9heX8&W&`tZxbkkQ+?-b$dGz!mO+X9{vl1&n&WnakF*FMJLCy&`6Ug zNpLlPfCUF{zWqczw+o&kxZXYmzx{HohCFo?UT5=K(`@)bn`i2$gIn(kJUM6L+$?x> znDeHS`^?AXvbRTn^1!Oh#0lz|IZQE}s#p_acjv8>M6y&kQHQ`hgm~MTWkH;%^DEqn zJRS}e2+6qj=Gvnd0-CT3&Z+M{PMdqa2gUCsx`jTnP zy`7tOCV^#(k@1`k`|J+lTw=nL+pFc>=C6mVNuDW@8;S?@45M;kA>Ws8k$Bn!88+;> zBNV3__=OCiyp9v%R?ROAr5&3$sMpSXNz%Rp99Z=;6=F_=z+IAs)@Y;Jayf4%`Zaz` z;DHXK1s`unN-j%e8pC3@&_h#8B38xO;)#{mA@vsd=b-&+zZowSGgKnf>H8sSP~grS zRv%+Jwp;nz=0o9$7k*{Tt?lLbcYAG?(I~ICua#`qt$-7q^MR?8hpUxU#s0ftYU_tb;`r8Yxd!Uyn;kUMNMgIzm;!cUF0lAMQp<4AZJs6{GV`j|A)~oFy^ z_b)HtG*8`#Q@JX_Lm@7Q%Y_!LlF!);mg6|Byr9H+c5wEs;Cy4v^&`k$ z(YX{<55i;@vjAxp)UAj8LHeCj?RzF&z{U450)boJG>T*)1qMAN5m*C1S`eiz^v-JNoee> z4LRm_26A1c0T??i-SVAnmu$B!DMJlgg6Gix!e)L#7FkbBNP&A6>zmV(sH{K9(fHh! z9&*xpBnKxmyJ60^d7PPdPTem}-5OkASeHAt?CIGBj(qs;V=k?>w4 zw)`p5VVJGcvCJpE_-Ehem^2E5sx$igiggijS@BBr1c{iPEHE|ZOb1E>;Ha00$WSH| zRgYz-;#xiS*bdj5S(t)#Jof;B^adqloo@EB+CHwa_3t_R>1rdocpAW~U(fR5@MP+u z4kl6$4K=#R?eV~b5f^rU6HjMMu|3n3P#OU5wqx%%w(1o*hdtkC)~||ODqMCpQd|+A zcZ6mWh|t|Hg!C@ex(hu+OF&;xvJTQVvDtCU@d0 z;@Cg9%unpA=!}$fsy{*p(Tfus8dKQbIF$}A>XgKYjUB4cdDr$_N*?TZpqPmRSC1Uq zYXrP6@0;jACqRR>9d-I6Idyn3g;^8LupS93!RMWSlfEP~_>eNO0S#P>nb5qCS{g*p zEE<3w@fz!Z2erV5dMNk1`R5g7K-3Nzz{hUsw1>z%d&r-mF`@=)ZGz26oRrd?q(f4A zLur86pNih0uzEeC0i;BK_soSOApkgekwNNd3`M?II)NM??x+@0N>7f{4YAEX{w-w* ziqyPJfRKIQUsQDGrG3#bJU{M zhV{gJz8Y}52CKq2`Pfni=Fx~gyr@+_A(-P?nPGxJyqZ;=eeJhwv1v4qX-L3Ss>2Jx zRT^OJt+Qk+S&#@^+uud}yM z$0o?qujt3NtlsioZ+ldTba*I~DCm9hUi?g&T$GO5Yv#gHKv#;83dUc*TE&4ste%(x z<;#AKC#H4nxt;1K!oBETE}GuOhv*K%JgrT%bBtpVF&G3!d2ghYZ9PQNGfMSoO{hjl zW${E0^|m=i5gT#FBO*hH$%4`?D^7mDAaFW$aUVh!{yArQ92kH=?)tRT6y(CHwtVZ+Q~=v-i-lbrlD?1^1)@(jZssO?n1^2_=%m zuo$0*0_dvkOq0KzOzyZg+LCiWu0Y{Wvf~23E&4<-$%b5wk?F@W4)Oyn7D+NJn+3*^ z*@B7vE*qN61|xgg>243_KH6k8|Mnty%oR^v7<}xOB6|~@I2>LofC7MvhBIrxWJS0DO!a+AKLpS%fj(KqmEQQ`cw2kY_&mI0 zb}0Ur(v3sLY$G1)b6i(kQ}fQ5G~rpvZ{xY!;iMuQuOn-Li$XUL!wd&5+=*#1qHwGK5Q+o-8PQ2c z79-FAORNM$LN^yw`aW;T`yl7v79HvO?}$`{Z<~n&WEP8+ZJzN@f=k&w!*)jbGKK`y zuUVgU)2~q$(#cuU_}aH(u5zt14(zHUma^RH&vPYiCvGe(x@^Bcs6<(pqqTup%oQ3y zon+HLahsU(s<~dBU^l$hR3onH$idU6id|J~fV!WWGM0Wjn^0~t-}1(>YAZE{XOykTJMjS}DEz@F6XBOLh zjR`A9$I!^ZDOgKWp}^?Xga!nL0zV2RmM6ii2<=Cuq`}M~Pqk)L5)l{QC=MPadkUkS zTm9M<(62B8_U5=jADD_^1k%Y^pKV>Mv2dN(F$Vgc_8+IzT{>GOMxD5kf#-@8sVTVE z{#Os4a1*osDXFc#$(Qe{I%batd~JX2)nj!~Jaq%#X8)QDj0mpu$y1I25-%#|8=)l* zbr6eK?N%xZ4`NYOz)kS>l3%Ug5=!d#kh6mNzP{H<;_lxbtW(dY$S8q)t)CRDx5|Dg z%nst_wLtTaSjpKYKCOnAYTYBR5)f&y@B*^J(X(nM7RLL?cgqok4+iS0lJ$mI;&GKb zHx1zFuyb@5oa6U^|M|595tVV$t)H`>wm**&l|t<)zf<9BwIKdyi{%u4VjvD4E5JB2 z_U1>Ia2Ecj|MRoy+0JJPQ7K>Qu%LLLtcgP3k}F*#V`Qf`lBazdp1R>DLhsHG>QmEY z@meE79j|Ko`&btF>xI_wLYY;JSab2ySvjZmb-O`ZpIQ6Jp&nX-BoQ8RR)0q;{bpo| zOVRuYu_Jj$%n&86YPT@{>m+1wt7BVrkU?u=8l2MGL$n4h{V{Db6C(kQz;6xgU-toa z&bOFAaL>DhHs*?CJrb6-49&|~w2KSTh*n#qC^+%EVRLr0sOn~R2{7q^f=E87p>8VB zC68`D-I=ZUwk$S_lc@>FY7@DXlv?Mjdp<(W`f(L6d=D9ny^16u5J=s)i%q+Njm0_G zB&*KNEc0sn^at2cj|F8q)sL1b5u4e8rcUVoj79XC*dU+FETo7{$4Zp>1_V?HAJJ6{9w)y78?fF8LM1PsEf(Pk$i2JXx zV0>-FZK$rcopW$5ZYh}V57hz7Saal-55ZQinCP#ty}rKon)Oa>FC7Xl)-uyPRmU4u2`}5O%ra4& z_C|-zETZSMQVp;DD=Gk%trAUG)8=Ua2Dn!-sL%OM;Wro~sb-SOv6Xc9gW#?~jZ=X` zA6HX38(*`pd?{;ZK^&VcG~-Dzj{CFCK2X0z7KL++G!h+iH~9{8e@LXdn|}C!n3o8p z0o>=1PUX^mmMeca?rAG3FdXKbnp0jK%@HTrhMaG>LbHV8!w0&#T^D%1hZFN`8>;cq zrDwg`+3S(GEa{5o#3<3O=7H}W>OtP7#wVp|GypT2Y(&x@=)U%s@%#(tw=-UO3e~KU zfBRf-?|RS+^UrJk1hyGwAR`4y1q1OJqm~}#CO7ca~$JLuesx;KDPcz))bGnM+Xt}-y?n!1)@75`7 z4v>R4kWaf(kkRz51yr1D-+knx2R=w9haUg+|Cc2J`0vK-$27n$gh&IJl2iuh zDWL?9)^;MKPf9$H@8?4MubU$)2h$QsiuxTQLf{c!hq~yBJCCZ%)JIH@)6G`9)3N`E zynZ8H^QzXrw+55!hy~i*m@a2>Qk{#0fUI^U%G;w5A~3+hrcU`y33#DvL1xbs)SmVz(<|Amb^XO#|Eqd9$WQ z&;UR!Wr{Yr8oJ=?OK^IDZ()>Jur4wr*1dEB;nW=@pFZTzeWBD^=yaU}?7JQwHn7=| zYeSjo7m#Wg;&&?zR`Rs67?W$&D%Wc^wRLQYuX6w5QSPN@`7V1~9GfIIAMW#hA|$&f zg6M`rio{X5iHJ-1azyxnV@>jSqpH`i#n9H5_v;GS7uoyPLH(Onq?=`X4mq0QW!jo8 z+ZJ&!t!~+iKmUc0l)_9{?MTWEXeb=lWnEtXvuj{knb$g_VsY7rH@7@02!E%gsi`&H zA*CqEG5+z}wBn41z4b@|MxJ~Ek<5RMi!E)Cu+x{oMIVn+C#UNAq<==~rHPK942FM{ zbGJ<}%_xqB7{BK!+Tx}N*yL<{d6AEeam#o0cKN4In7h-e-!)iii$T%bA{mPY2PglE zX(gMTsE{w8OF;FF$kpfJP^6ERNY5)7io&@T*^sL7!R*PKh`m^wX!V1opZ2*te=s(C zSO4g~F;nlNT$q=rlwUtT)l)6sLl5P{X=0fBR}?oPwquxHo6!z-i3Z+|!ULNYIn#Kb z@Zik2&S(rOsdvNn#a}13sWH+@RwC3GPa5Dc4Zw+wB=AREy5N*oiTy;(agUpzI1!j6 z-;w$61EqF0rUqRwpGWV4`6pQ#x%o#E8?(hF^%zA*eOxvYog+ygDnm3$d*4ip;i4ET zhKDS!;y+}Yd7`|j+*2)44QvF|fnJV#m!z1|l$X3R$7|9$!nwE$sLNm63 z{W)H6HzJEoZV(r%c?v3_EYC$YCzRE*BC^;i-nHS_YQw7)NWjT_?8oRLpc&& zrjSLPNu>h~sp=ycY~&&WUH|y=O}$J}B@>%|0jVC3Z>jc6lS)U8gYkX(94!X7#I04| zu=^|!xOZ2Rq0OARF8Nzn-Lz^EQ62W=A&;D|J(Mn#+I+Sf-;x}fgIl=#R?eFXNKViy zf_mG%?)#z$eUPb@HUo$FS`d#uEB;>HhZjfHE-q@rx+CEdmf1T7hN0Q0NIo{|BpfK* z&h;0CmE0p$=G389rG-zyKuo`fs+Yv&`J?-D(l;sIA`|I#XYf#Up={tCxUKoDQ4R<2-@sskrlyDb9O zaa@xlo=+*~teZ1rWwmoC>drfSfHY-&h5d8XNz#KWUiGVJrlBQCQ9k|t=(CDnS@E{( zL3IYbt>GBN@38Ycyb9&k`AIDC8HkucF;xc+!T{3z&r;k;V~YEnrbd}ruu$*0A>}e2k@`jbv^1Vv=qNaN zt7@WKCRTx7FM*Xqbf_?-cPh0;pVefzN{2nSb4_e$vDWnRRrSn*)90*%GQgOW#a!0A zBpTpSB1r@%sVAJyDn-&4jw40pLKw16!tezIPX;Bq)>#XT#pRO0+(74;Z)>5c^EupL zNS3oEkthoqMNrU4j&Jy}RYtQ$y+zJfM(jZdL4&0tj~9G!}I_?@F-_3SNfYn-c> ziD9|~eG=M;Bd%Y&63DKX;}aSe$#9TS_HQ+s3;v5dxF7r)ISRkGwL5oi4mCAP0yh7u zlk*q0UC;H0R<)Vvgl~r% zu^O#qI47HpN{i2~9?;>)a@pzi1&3yVH2R_ypy#+meTg$2DBr*`D6MbgmPD`!lZ%^; z$k4Eo$sEpnEcn(zO}c5ZPkOymKY3ZnTiRanN3VCU5e;x95cr`td9uQa7hpM|d7l~RsKp7Rd(pwtb&U=KOXf(F>ihvO=Gd?BY>#2FfZQLX3HK%Zi`ko=${ zf(BqYqyaYX&;ZG=qk%o8X>bxRng*DZr2!BIG4nl#lXx_hGZcQ1nep#_@sI}KxN-)9 zgLr8Gf|3~xP~!3*cLgL#IE$X(S1B5kG(dhVRh<4Ph8m+p1N8fp(g2z`>TRKOdm3O8 zlu$~x8>azA3_%2Itoa_Uha6E#1IW=)EZKitP$<4MK;j&T8i}B&8=bV$03~o{5V5(4 z2FT8a_t!zozarqoeGt`^m0Tq4{nS??X}pRnU?KINbyiw`G5huMWbm6Eng-{&*yAc^W#4pm<>GK(IV}@e@B)Y!IFRz((`e^_*O*7AnoORYEcIWo2z2J{b+p`!h}85+h(FN^Qgf`F%rexYH1vg++;JbQ+qpef4kq zbqxC46^1vwfik>-Hbe@V7OMw8iC29n+IJ%koa(}j;vN(et;jUEr=HpO|CwBKc@It& z>FGUZOOvj3Vsmq(;~Bt8^*>e8Vj+HVn{B`Cq#yK=3hil|94dya(*S#P>!oayRg$J+EBuwfpWYW_= zJTS1M!s2JMu5^3M8jo|-6yqn7!=Kf?>s)-U9b4&#wXmNPm3A)&2=cY*u~{dUA^{8t}>nT@qAGOb6xiHH*f%OiK{RQkFvK^F)Rn@x&Fx$E8ds^mnM?gmMSB{UG z-dS6-J`>zBwHCcwinl7N2~9Ao$2xqb6;`v~xDN=#-zNGTh%$|+HhAhkB};3_I#)c_ zq>mf0B7qDxOeGd=-Sqvj;l*2$vMfB z>!p^2jvH@$^PJRXR8-3Qs=n&RSK$Zkxz?+oGuG6jO>3`g!_~QN=|O?}WT)N|DHlth z%|$2GpjFPkIIC*2B}1*1CW9!3utSwez0wco$lok8!5IoPfJS#(xHy#O=p{-22R`30 zOf?i#XOj+7sZObu_A`-jGcE7MS1jjBx55&%CfOm&ZGv&Z!zge7GKRll40DAO4AgJ=SfYeyeL8fcq5QY~9_VrpwgsmfD5Cd36Y2b$XWG#U zq4h$U(2_sS9=LE?WVdY-WK}05P{{*N$`fCw6kngKF4k8bBYqi?uLeT{ct`k={M9v} z_*O~@{O!M3b(cIwM)twjmYJ4wyZylZUr(Ewnp%^#y57I<%DL0l+V)z=TeyVaeN)sm z&F=e~IX0sk5{8OC1o7!IZRAgz2JkJfDHM+>%D(kknQ5`Au9|5mGTVh4EoM-W<%eTW z!mYjglIkJ-K~kEXUb|j|BdGzbSmi=I5*w-WIj$KWytNHR(_2=9{q=67WEUDVpNu}7 zp{eJ0QRu(M_)*O-=8lwdi5nn)CPqkt1lm& zqQygC`97vB++DMtyq%TuO0wMcn5&3>*J>J|z^+~Jv8WXKhdpP>EB!CK1U`5{&$=v0A^CQ$ zOFz~CX%nz;lGU!XTfdI@xF*|}lNpe}c=e&sd5!tZ`6N{d{fZw@e-LnW&6%f9C`w$> z;)&s&uH~S|;-FU0dvDi6#~ChR8el1y+Qq;Ahpdzp2=HtCQx<(V(!MS@O;x zir=sEA2r!yp`RP2e=egF<=7^$-Xw<%tO0@dO)AEeC-&o-x1r%7Zm`YgaCzbb0|-|p z&W)@Wm=LSI&ApVWnM4DuRjsx~Ef*{hOw(>XYCOLQ(;|ws@h}0Hg_})6 z#4e937+kwM_cc|)%Vl3eaSvfQ4Xf5r+NSc;0I%P{ta{p==++T^J#jPu4@FQj>7u;S zNBzdsetr3+*tD6n2%P)75la)ix7JVLHDE}zFyyF|;Bz$3nA+i)p!!|{S-wXkr*h3n zSfMpePY|pXAMwzGyC->oaP{{7la- zu__iS2ZtSg2|$f3`%5n^tnKg0o%=t$2fI37c~MB!SkXSj5oh}QtcmIGtKN$FI*DKH zC^d`nMd&4e!wN?E!ac9;>1}=drQLL=8*(j3=)PK|$J5n=oq};tghcO% z=^W|UN!+$$0mUOWmvIA+!OL+(28F4QeFMVL z<*Np-rPTRVuO!=xlzxF*B!L1+*PUsXzw(qrQ3EX{;R$8T#T2gRK{SAt=d#AY3NML2 zs31o&K(~0~STO11`n&w3nUgmr=aSFu@?B6I;OzN1F%wI)^a~EWAy#|}aRR3!H6*O4 z6CWK)CU@HmEQ=vOmt0mJ36;DpzA_k+d^TZT`s~Y2XqeosZ=F@HVuoqZC{1UUdO>;{ z)}-pQ(zPBQ@?|PRD6ut$17_?m(O25Kg}eCUU<*$Jr00s(N>ZZS-PlT?(zz?_-8^3+ zS44NLP>3Z&wj zSBx-mqB^|%r@hsVU&-{@gbsg73E1n|C6Csw_=+}cYbGDY&b_@*40sAu9%*LEP#Ai4 zTF+U}C^y=u6qG-vY>qs+yd@V@Bvp0nF92O1z=ppga` z&ZYs{6?)G2Jxa+z12n(^0W>GgK?A(?{73w6JP&>-`yZFU13ckJs^cIcK7|I@=%rQ% zHC(W3f@pvQzxOmiK`fPh|27Tq`6pqOB6^%bH7-97)t~{&2EAzj1QUb?kY+tLiiiLB zr~RLz;J!*30}@N2`&0yklLo-+*TN6nfnN(&FIW`JD5|bBz-bV?#!-R>cr?jM1K^9K zX@JeAG(g<>5d27;+)e{9JaD4{vP7xN6Ewh&;6gYa$3+8-#$JH&kTYQ@oCaW8jGzG& z=qMs9|7>GnpoeV!6G$o0KiQ0+0d!JlXaE-O9;zd7Cy#*!m{P#e0A!ERp3{5~UW>GP z!O|^71N3Fs(g5E_K>zNn)@T6B4jXDx36KWBDLc^sW4$y0{qJ-d;72$qkb3LI5Dg$~ ze$iP>1AJarqycaVGBiLQ-5IK{=g62y15kOI_NgAMWHanP`)Ejk6U*m8r}7zlWBXJD z51Ps^2d8xW@An}$?&R#WYWmw|!G)7-KVaUyObE-+=Gs zVYVZRwbfC*Lx8m7oG;0!;wcda?CfH=e|Zy_=&X+sQxVYxM+JESpN% z$Z**qr54#%c~j95yqa$fba|AHrTd7mhg#TFNj!3(0hpl(C*rS~49@Dmebp;ds`c;O zd%S;y+1?Fg>y^|&_1~2Eqd(!w%@+%Yxh}B{d2Xc67%^2skSf-cm5s++bOC2w%uu~^ zY<2hk@rz?n`+?sieX%=_b?D1%&sXD3%PgL+k-R}A?7(c-l#8i@x1;`X>M(^gZi3PupILXj z;Aph^fq!?j;lP%JF^y+8mA1EPqf%12n0wN(@Y1 z1-9xd)gHJSE7~4o=W(o7=ep>P`x<#JcL1k(v|D` zAW}|KEp2Gf_OTmhJ=9n$*ly!kY-S@1M-q?^fxR>3&r8NCVW2AgUHkD$U$n+Ck}fR_LIP@rVAKUxeH8nVTQp52-YtE!~3ciwp&w1Q&dd%mKM)j0ATeuZc7K z()!A5ZHW>O@eZA?9^DhOG@KJNWY2hiAMQ&;v%710;?!6V#Ah zhMvSjwOiQpn)=PR!h#hYHp`rg4Ha7O_uom3YQ6m5?C$@}bp7Yp{~O~@y7rifRi+}s z!odD@vYxGgKX9+ymLwtl#}NM8ow}8`=|dV?t8KT%xt7iY!mrbVJBNNy*@Jx7>oq@x zh-YtT_WT4wCU~2kj0ABuq@))0$jtkjT{d-WYW1^Ho~vKL(*Tbr+1K&FSPEod7Sop= zdMuJf9CMElN9rTRT;#X=#FuG+C!2Le*0I@Y?-rxODo`V(qi~`*DBXzEev(ge^Nx@+ zTcZII)?g~c(#2WHo4xq+qKv)0hjxD&y{dv1Mmz0E|K*qW7-95C`i)@w6!dh^H&ye| zxKemGRf8IAOzcc-#ype5YIN;wZCx@0uQpzRY zXo8_B1H94wp*XE{d{3q3W&CoxSRVer8_8m{%?#6 z5vnWNF$yerQq9u`)hi`N%y6YOPY8~w3jUb+sBw9AA{fgLKcg{6K)QykwnpRi@p+!43 z@_FAR*NI}k%2t$VN^|xQJsE?xZbqwW{@E}@@x4H0UI>sil=`1`=*LI55cAVT2JxL7 zhWR<#<>uAS#g8W+j91MT_4WBC95_CznI2Q%7a?@Num2e%GOq-@0nMB>E~ znpcYYnx=0t8z`)S>iqEGeWpW7!FSLLgJ&LhE+GMQ2iH{iQpXyhsWC3e{cgb>T}^dK z1B9QJ{jR|r9{b`s7_00WOJvswII!{)4PbPD#YlcS*cC9(awkh-#7C=i7+;Py?JDsL zFw!Md)R`vmF(TsC6}=z&GX$lE2Q2uF)LURh0e{oi)dxualG>O2CEW79rBI^C0ptDb zHDQTB&uJ?ywUv}>>ycn(cQ04jPVkM@R4l+}d$wAyLVOyzZG}>uMOhwRFDUAIp2QF6sw=h$0-;|;CuifN00Sv6d}tO{4>ZN*lg$1o;A+2 z5OeRK>~ZDIyEPXSx z%tX3y?H2vqnA+2FEgxjTihy+b-646jK3ftEprYwWY)_=7z}!F;T(3GJrLSY0<6tJl zuZ-hnk_mP;H$JpUTtc8sQIc9_lVFR=?Wq%_L|Rp&s*q-So6OZ$lmU`HB1R-;bd~ql zk?(K-Oo}9eha~&g*M{@Sf7P0EyRUMl)r!VeVIs?aD$Dp*+0zpa!kNX7UEjCMjVp3c z)(f7hX5a#3F>x62g1{TZ33pQzzpn7!p6G}YF@J=`K>UlbJH17NQHf>_u{GNVmmB)( zqW8@fKihg~0u(mNYMKz$3yXYXU6$NSxVd@4U1izlp%x%7n+5e7k{ZzKW@X#0i82-j zF^b`ThEAg`FYa8lVAcMn&h|9t;r72ad@KyFLnPHo)oQYnX0&HMgBE4#0^Fw7X19VK zjh$)LDdogt+r^|dw&Jl5@tqr)e9@v3@Q2V3d23jsHKvro+B{an1UKzs{-QKlOD>hB zI>U;fzxqw>4Y0!EVO}#ik4Nepn}K-~A@Q0@rKF50wAwg~o|KhBO{Q3-Hlz&8g*U>? z@E*RYSsC-Ptv@E^Ft1QtFMQO}A!h6;bqqHXfXt=tJaghf7zf~3j{xTMPZ~h?^?#M2 z{ZAfK4KoIcDjBg}M*|S!pp1hhatFobSyVO%v3Y3G4^xOXhWB{MgJ;a26=(RS#3$Oe7!K)0i3@`55h{r<4vWO2|*WVTLGUa8_pF!}nS zio1ZHvq0u%ppolT0RnvEJ@4M%{?7Q$KI8m2Kj#?p&m7~K_kCaGzMdR}PxG4& z6ko5Cb$XxPLPaMfY+(%2C1_))1fjtiyQd@jz52_K{zVa*kMt9 zfj+_(=>jG-5V7MDfsQ}2!_9=`$l+U^5*iLsvIp&NjGuZqmqnJ8YU`=4iH%p`FXk7xjV0tb^c&=O24<~ zY9!mg5aNs1uShreudD(&>=kdb>^*AAqMJU-D2HHp+SF7l`yDCD4yuUqigHKGr0=JW zpDzKd62zaE0KC;I>=N)az>7)$%=W6|ZF;%_Pi2SGA}4J=IjAF3Y(3E-78K~um)p+} zgRRwvB}`thpW4GF9R*^dj7k_qsTqC1Ti%y|nv*sj@fv<~yy7D(kMpYdem7S+*Vz6I z^@r0qx60W}8~b#y;&3y=ll0G{J$PV?7s1!$=pX9%>R2*=3i}*7NyS>ztUx+t7YU1c z)EW)?8nSU6x@!D>qPEU-Z*F;Kf15Qd@YWyRG@mr;N49<^ND)QnF8haOX^Yc(A&VfG z({-Uj`EP>vk5OFeu9cIaoxpoFgLMzl@QV_%KkhkCOff$h4S2GRVp>&pSnK$4HjlN z75Z^(iJR>b@L{WMR*AN5CpK`v^`x^GUHI7}yx7Na`^3dLb+~5hEaf@}TT0!Yv(Yi^ zWvEzE4<`vE))vsNC@IX4qNVx3f97`~QxbRbQ zENH6>wtxc0^%K|1Nk}afyQ!n#);&;*CDMjjeKd2E!O%Pdys3_h-S1WPB9_u!HdI@bEf-q|svBg#K8HO}+R!yVS&DhezD{^G`aI~ zIL9p=cIxcPx!B{bXH!ZJKIE;oSvI4}fm^q5mEiIbmJ)6B>DrXm{hE^%&~4jO)-Aq_ zC(Sp(jMUP1laM*VuneMCQUKyS)h8ZjQKVZtD51xjV)#c0c^^qLNEmFaMQ>|}S-}8rtv@b1 z>$bVLi{5ZQ`|`i&B>#;n_#bcn-vnvjmswl;&hst-PvufdTHyOKX(=>cA2D1{tgpEI zVno}%?d1EZkgXWsdx-1kqw^P}xkrIRzAJB*0z7S!PkXT6HqGvQI=ct;s0}q4V@34=lT<0;0YkyHqZ61Hvq6rl zyEEz3c1wye!cXnQhlscp|E|tW{t{pfo7DX+fP*k&WN>Om9JYUSWF+1ZvIAAf`k5(j zcSP}LHa{|ZNaUD7!JlQQ7ezzbh;V*cFfHD*yH*p`ms zo55l0E@~3uSy!4w)Qob9?KeC-pVW+4VJ`u1e5ppbZot=WwaB?{jkcssLn;rk$OJ_8 zsNE4xJtK70r;ok7Q{vvj|Ig%J2%7m@iL7-Pr8fOJ`#jz!`NwhA6Gbf^UTSBNCE^i~ zZv9(|s=1l3_{<1J-R5VI*+f8n!|#T<2;d74SUt0D#7wN}@GD7hH8~i3GZKN3a|sES z<7~!o>n2J~m<40WqgR2v#3GQ>xOG4pUtIsDIy$njOo%T=qf=_iXrlxVyiLs^MImUG z6ea@C^1O~HC9XB1{wL3aM*#&jTlwI-6Mu}#)Jm`J?;M^fyWcKK;XZ0~Q-935nR0x8 z7?z<6cYqt=S`0T55*Xsr1DM5(ckgO#gUVZ=A#GshU1t;k9w z@0Sk!_<$bE0rfCx?7Dp@y@+N~9Cveqtch@lS2EB0!_|4Ppxx-D-?~Q1*uR+F6&NB4y-;GgwD|VX|-Fm z)xg#mYf8JtJw9^H)a&SjjIIAEq zo>@bBf@GK-Xrz|Z606**`}4p|`sz4yth6>LIA+VMV{KW+c%tqkoRr40?Q)BvmVgnf zCES^&$<=RP+@5w7XyitI@aEz7J#-JMah0t@ns-_^Xgr3YH+F`uBn&nSM%pGP#mUJK zNDaKXHS_8zw_oPI9Je)|vqFhfgH0`TJDa3e>F^q&U_9UR#YZ2t2AgQBSIp;s%i9;T zr>Zfj4Xz6e#=Z=Ck>T)TehOPJJpI2f`Tx};SZ9`_dz$4w@6Dl!hOuYH7xOcd-lsW9 zB$MS>;2(GYa6AuWPKP)y!qSYr+I>D&xpp>nbxei|B%9LXvU9lK!O9o6=WF?I=lqsq zpoaDq3k49E@N&EoV_XTtq?&+!I)h+a0?NP!WhswsH=V8#w<@!#0J2$R)5{?(GJ|z} z67e{CBiboNfUw7@<-NKy+3R1X{n9>?>CeK3g$PoeAu)Dvtx*v>Q<~vEf7K~i$sWHVy3ynEUW`KKn|EnH3@s@GQc+5I^l5Y?m%M!(V@t^BpETj*;GE7Ml~ z;$mDLQ&idf!ott&S$<(o@M7!)T&>K}h>z)ZL+F9y;HXXpCd|Qv8T(BuEhZ>MyXuL& zonSj_N{v1<{V$6uOFpv-=9W+2U4v*M>irKVyEdcralpT#ZUlVI*2Ui(N``|-PClUr z@LAO{g-%Z(Pike)D;I=d{U^Z@36te+*CJ2r&HIC)g^*@zEw)Plo%1=W#iWu*xdhPe z0J-7X>JL>S1n`lZ6CoOV&-a&~rOqE?+qz7PTJb;hPTIS4>O2dqiZsEws`hFVVR-oM zhd8YZ0x9L%iE9$plh2cfPIIbt6QMchp(P_3D%!G97t?291KHW1)~1&HU|xCQr5CDh za_&XG1gMv<+sX|$J--CVk4U&Ss=5$D8#;f(acm9<30c2Ks_y^bhw_jq@m;Ii#p+ag zGV9S2HJrqnqT6&mnFqI=;=D6Xt;}iA|ft`0?uns5vSrr7TRk3nA;It(g&+ zkF~)X7PImxSK8uM8ZA4?g>s~^WL-lc`9Uqs)4w+?NtXZ?*qin#s!?B-CN=*X0~RF7 zw)qyJP*#62^pU!F3Al!(ei!~( z!f`@P%AO0mc6I2c+sXGm|Tt>46(X>K@em5Dy6ziK)yc2c?Wmq{MWU=-9@N zZk(=}+|5!!^lOYI(VwluhY9GF^O!{K-Q=w71*d1d>?B<8mb?|?Br%QxCj}~(@><47 zxc=zoY#1lpKkw zTCH_v-Vxz=1dfN8rLjNRua~3TkH#ny7aXjb<$jwLdK6)_ZNqDCKdPa-`E;G`taHN2 zHVa!T5K}#!f{J?AK1rAmP~m#elJ%S`;3_sd{jpHjTACmAJU%t@x+R>2GwLyFS3&EP%pO~>LZ&(!

    0L!~0M)Ude@Y8Z!jA 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 literal 339239 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¬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

    XPS|a(`kU1;pbg=Uo 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

    EVU)>%GsXB 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

    wBMHMa+6K66c>-9=9m(D@jMU9 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⁡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 z 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 MY;@w?Vk$ffWA<1cT?pwYr7 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 c_L{Z#nl&465PZMS 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 literal 273720 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

    !%FvGt@FT2S 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 diff --git a/interface/resources/html/tabletHelp.html b/interface/resources/html/tabletHelp.html index e83c0cc388..0521b490ed 100644 --- a/interface/resources/html/tabletHelp.html +++ b/interface/resources/html/tabletHelp.html @@ -77,13 +77,14 @@ var handControllerImageURL = null; var index = 0; var count = 3; - var handControllerRefURL = "https://docs.highfidelity.com/explore/get-started/vr-controls.html#vr-controls"; - var keyboardRefURL = "https://docs.highfidelity.com/explore/get-started/desktop.html#movement-controls"; - var gamepadRefURL = "https://docs.highfidelity.com/explore/get-started/vr-controls.html#gamepad"; + var handControllerRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#vr-controls"; + // Link below is currently throwing a 404 + // var keyboardRefURL = "https://docs.projectathena.dev/get-started/desktop.html#movement-controls"; + var gamepadRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#gamepad"; function showKbm() { document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg"); - document.getElementById("image_button").setAttribute("href", keyboardRefURL); + // document.getElementById("image_button").setAttribute("href", keyboardRefURL); } function showHandControllers() { @@ -189,7 +190,7 @@

    V|EbEn2zY>e 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�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 Yu+hRltp39T|M0*+Jn(;~2f*q70BAR8t^fc4 literal 234811 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

    F$)A3Bx$-$SkF2=8;qL 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 z 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 diff --git a/interface/resources/html/img/tablet-help-keyboard.jpg b/interface/resources/html/img/tablet-help-keyboard.jpg index 5c4a3e37ef831ea31ef3110a39bfb6d7d6b30380..ec4c0ec60da039c6f96f9e28388a805d6d3bfe07 100644 GIT binary patch literal 161890 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%0DWd6lUseFe__x5ZgqY@55CX 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

    - Report Problem + Report Problem diff --git a/interface/resources/images/Loading-Inner-H.png b/interface/resources/images/Loading-Inner-H.png index cf09ea8317499d4d0e1bc9af5e162eab3daf0dd1..93369d61c83f4f3feaa68ed27034f45814bffd74 100644 GIT binary patch literal 7484 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 XyMAls+O}COpd#AS)z4*}Q$iB}Kk_vn diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index b01bb5b761..a7e5c236ca 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -129,7 +129,7 @@ FocusScope { Image { id: banner anchors.centerIn: parent - source: "../../images/high-fidelity-banner.svg" + source: "../../images/project-athena-banner-color2.svg" horizontalAlignment: Image.AlignHCenter } } From 8f65a904539f8d42f991d85c1a62936c577e3e09 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Tue, 14 Jan 2020 23:00:08 +0100 Subject: [PATCH 228/396] Remove getRaw() from DepthTest State::getKey removed because it breaks and is not referenced from anywhere. --- .../src/gpu/gl/GLBackendState.cpp | 5 +---- .../gpu-gl-common/src/gpu/gl/GLState.cpp | 2 +- libraries/gpu/src/gpu/State.cpp | 17 ---------------- libraries/gpu/src/gpu/State.h | 20 +++++++++++++------ 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendState.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendState.cpp index 5da32f39df..0c2c0ae744 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendState.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendState.cpp @@ -204,10 +204,7 @@ void GLBackend::do_setStateDepthTest(State::DepthTest test) { glDepthFunc(COMPARISON_TO_GL[test.getFunction()]); } if (CHECK_GL_ERROR()) { - qCDebug(gpulogging) << "DepthTest" << (test.isEnabled() ? "Enabled" : "Disabled") - << "Mask=" << (test.getWriteMask() ? "Write" : "no Write") - << "Func=" << (uint16_t)test.getFunction() - << "Raw=" << test.getRaw(); + qCDebug(gpulogging) << "DepthTest = " << test; } _pipeline._stateCache.depthTest = test; } diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLState.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLState.cpp index 89ba80031b..3236fa05e7 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLState.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLState.cpp @@ -119,7 +119,7 @@ void generateDepthBias(GLState::Commands& commands, const State& state) { } void generateDepthTest(GLState::Commands& commands, const State::DepthTest& test) { - commands.push_back(std::make_shared(&GLBackend::do_setStateDepthTest, int32(test.getRaw()))); + commands.push_back(std::make_shared(&GLBackend::do_setStateDepthTest, test)); } void generateStencil(GLState::Commands& commands, const State& state) { diff --git a/libraries/gpu/src/gpu/State.cpp b/libraries/gpu/src/gpu/State.cpp index fab0438f75..81a43f87ae 100755 --- a/libraries/gpu/src/gpu/State.cpp +++ b/libraries/gpu/src/gpu/State.cpp @@ -94,20 +94,3 @@ static std::string hex(T t) { stream << std::hex << t; return stream.str(); } - -std::string State::getKey() const { - std::string key; - key = hex(*(int*)&_values.depthBias); - key += ":" + hex(*(int*)&_values.depthBiasSlopeScale); - key += ":" + hex(_values.depthTest.getRaw()); - key += ":" + hex(_values.stencilActivation.getRaw()); - key += ":" + hex(_values.stencilTestFront.getRaw()); - key += ":" + hex(_values.stencilTestBack.getRaw()); - key += ":" + hex(_values.blendFunction.getRaw()); - key += ":" + hex(_values.sampleMask); - // fillMode, cullMode, colorMaskWrite and the flags consume 32 bits alltogether - static_assert(0 == offsetof(State::Data, fillMode) % 4, "Validate fillMode offset"); - key += ":" + hex(*(int*)&_values.fillMode); - return key; -} - diff --git a/libraries/gpu/src/gpu/State.h b/libraries/gpu/src/gpu/State.h index 7467d86ac6..30c3bbdc05 100755 --- a/libraries/gpu/src/gpu/State.h +++ b/libraries/gpu/src/gpu/State.h @@ -18,6 +18,7 @@ #include #include #include +#include // Why a macro and not a fancy template you will ask me ? // Because some of the fields are bool packed tightly in the State::Cache class @@ -134,10 +135,19 @@ public: ComparisonFunction getFunction() const { return function; } uint8 getWriteMask() const { return writeMask; } - int32 getRaw() const { return *(reinterpret_cast(this)); } - DepthTest(int32 raw) { *(reinterpret_cast(this)) = raw; } - bool operator==(const DepthTest& right) const { return getRaw() == right.getRaw(); } - bool operator!=(const DepthTest& right) const { return getRaw() != right.getRaw(); } + bool operator==(const DepthTest& right) const { + return writeMask == right.writeMask && enabled == right.enabled && function == right.function; + } + + bool operator!=(const DepthTest& right) const { + return writeMask != right.writeMask || enabled != right.enabled || function != right.function; + } + + operator QString() const { + return QString("{ writeMask = %1, enabled = %2, function = %3 }").arg(writeMask).arg(enabled).arg(function); + + } + }; struct StencilTest { @@ -280,8 +290,6 @@ public: Flags flags; }; - std::string getKey() const; - // The unique default values for all the fields static const Data DEFAULT; void setFillMode(FillMode fill) { SET_FIELD(FILL_MODE, fillMode, fill); } From 391f3accc6a27572c3b913d1bc2ac7c05289d79b Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Tue, 14 Jan 2020 23:20:24 +0100 Subject: [PATCH 229/396] Instrument HifiAC code with performance timers --- plugins/hifiCodec/CMakeLists.txt | 2 +- plugins/hifiCodec/src/HiFiCodec.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/hifiCodec/CMakeLists.txt b/plugins/hifiCodec/CMakeLists.txt index 0d4f093fc2..5515602d2f 100644 --- a/plugins/hifiCodec/CMakeLists.txt +++ b/plugins/hifiCodec/CMakeLists.txt @@ -8,7 +8,7 @@ set(TARGET_NAME hifiCodec) setup_hifi_client_server_plugin() -link_hifi_libraries(audio plugins) +link_hifi_libraries(shared audio plugins) target_hifiAudioCodec() if (BUILD_SERVER) install_beside_console() diff --git a/plugins/hifiCodec/src/HiFiCodec.cpp b/plugins/hifiCodec/src/HiFiCodec.cpp index 99bb411539..a93e6c47d0 100644 --- a/plugins/hifiCodec/src/HiFiCodec.cpp +++ b/plugins/hifiCodec/src/HiFiCodec.cpp @@ -13,6 +13,7 @@ #include #include +#include const char* HiFiCodec::NAME { "hifiAC" }; @@ -44,6 +45,8 @@ public: } virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::encode"); + encodedBuffer.resize(_encodedSize); AudioEncoder::process((const int16_t*)decodedBuffer.constData(), (int16_t*)encodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL); } @@ -58,11 +61,15 @@ public: } virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::decode"); + decodedBuffer.resize(_decodedSize); AudioDecoder::process((const int16_t*)encodedBuffer.constData(), (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, true); } virtual void lostFrame(QByteArray& decodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::lostFrame"); + decodedBuffer.resize(_decodedSize); // this performs packet loss interpolation AudioDecoder::process(nullptr, (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, false); From 830f3ab337658fc0886381be69f4a2077ee89bde Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Tue, 14 Jan 2020 23:20:24 +0100 Subject: [PATCH 230/396] Instrument HifiAC code with performance timers Signed-off-by: Marcus Llewellyn --- plugins/hifiCodec/CMakeLists.txt | 2 +- plugins/hifiCodec/src/HiFiCodec.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/hifiCodec/CMakeLists.txt b/plugins/hifiCodec/CMakeLists.txt index 0d4f093fc2..5515602d2f 100644 --- a/plugins/hifiCodec/CMakeLists.txt +++ b/plugins/hifiCodec/CMakeLists.txt @@ -8,7 +8,7 @@ set(TARGET_NAME hifiCodec) setup_hifi_client_server_plugin() -link_hifi_libraries(audio plugins) +link_hifi_libraries(shared audio plugins) target_hifiAudioCodec() if (BUILD_SERVER) install_beside_console() diff --git a/plugins/hifiCodec/src/HiFiCodec.cpp b/plugins/hifiCodec/src/HiFiCodec.cpp index 99bb411539..a93e6c47d0 100644 --- a/plugins/hifiCodec/src/HiFiCodec.cpp +++ b/plugins/hifiCodec/src/HiFiCodec.cpp @@ -13,6 +13,7 @@ #include #include +#include const char* HiFiCodec::NAME { "hifiAC" }; @@ -44,6 +45,8 @@ public: } virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::encode"); + encodedBuffer.resize(_encodedSize); AudioEncoder::process((const int16_t*)decodedBuffer.constData(), (int16_t*)encodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL); } @@ -58,11 +61,15 @@ public: } virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::decode"); + decodedBuffer.resize(_decodedSize); AudioDecoder::process((const int16_t*)encodedBuffer.constData(), (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, true); } virtual void lostFrame(QByteArray& decodedBuffer) override { + PerformanceTimer perfTimer("HiFiEncoder::lostFrame"); + decodedBuffer.resize(_decodedSize); // this performs packet loss interpolation AudioDecoder::process(nullptr, (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, false); From f23dfc7d0de0acd1f143eadff8f05f2ff9ec2a0e Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Tue, 14 Jan 2020 17:41:55 -0600 Subject: [PATCH 231/396] Cleanup some kruft. Removed some unecessary files, defines, and includes. --- plugins/opusCodec/src/OpusCodecManager.cpp | 16 -- plugins/opusCodec/src/OpusDecoder.cpp | 2 - plugins/opusCodec/src/OpusEncoder.cpp | 1 - plugins/opusCodec/src/OpusEncoder.h | 1 - plugins/opusCodec/src/OpusWrapper.cpp | 174 --------------------- plugins/opusCodec/src/OpusWrapper.h | 131 ---------------- 6 files changed, 325 deletions(-) delete mode 100644 plugins/opusCodec/src/OpusWrapper.cpp delete mode 100644 plugins/opusCodec/src/OpusWrapper.h diff --git a/plugins/opusCodec/src/OpusCodecManager.cpp b/plugins/opusCodec/src/OpusCodecManager.cpp index d86208c6f2..1e3d73a229 100644 --- a/plugins/opusCodec/src/OpusCodecManager.cpp +++ b/plugins/opusCodec/src/OpusCodecManager.cpp @@ -15,25 +15,9 @@ #include -// Not sure how many of these are needed, but here they are. -#include -#include -#include -#include -#include - #include "OpusEncoder.h" #include "OpusDecoder.h" -#define FRAME_SIZE 960 -#define SAMPLE_RATE 48000 -#define CHANNELS 2 -#define APPLICATION OPUS_APPLICATION_AUDIO -#define BITRATE 64000 - -#define MAX_FRAME_SIZE 6*FRAME_SIZE -#define MAX_PACKET_SIZE 3*1276 - const char* AthenaOpusCodec::NAME { "opus" }; void AthenaOpusCodec::init() { diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index 265021c8fd..b410ed9bd5 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -2,8 +2,6 @@ #include #include - - #include "OpusDecoder.h" static QLoggingCategory decoder("AthenaOpusDecoder"); diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index 593e74e921..04af3121db 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -3,7 +3,6 @@ #include #include "OpusEncoder.h" -#include "OpusWrapper.h" #include "opus/opus.h" static QLoggingCategory encoder("AthenaOpusEncoder"); diff --git a/plugins/opusCodec/src/OpusEncoder.h b/plugins/opusCodec/src/OpusEncoder.h index bae5a6402a..b456f76093 100644 --- a/plugins/opusCodec/src/OpusEncoder.h +++ b/plugins/opusCodec/src/OpusEncoder.h @@ -1,7 +1,6 @@ #ifndef OPUSENCODER_H #define OPUSENCODER_H #include -#include "OpusWrapper.h" #include "opus/opus.h" diff --git a/plugins/opusCodec/src/OpusWrapper.cpp b/plugins/opusCodec/src/OpusWrapper.cpp deleted file mode 100644 index 0d8ff87965..0000000000 --- a/plugins/opusCodec/src/OpusWrapper.cpp +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include -#include -#include -#include - -#include "OpusWrapper.h" - -std::string opus::ErrorToString(int error) { - switch (error) { - case OPUS_OK: - return "OK"; - case OPUS_BAD_ARG: - return "One or more invalid/out of range arguments."; - case OPUS_BUFFER_TOO_SMALL: - return "The mode struct passed is invalid."; - case OPUS_INTERNAL_ERROR: - return "An internal error was detected."; - case OPUS_INVALID_PACKET: - return "The compressed data passed is corrupted."; - case OPUS_UNIMPLEMENTED: - return "Invalid/unsupported request number."; - case OPUS_INVALID_STATE: - return "An encoder or decoder structure is invalid or already freed."; - default: - return "Unknown error code: " + std::to_string(error); - } -} - -void opus::internal::OpusDestroyer::operator()(OpusEncoder* encoder) const -noexcept { - opus_encoder_destroy(encoder); -} - -void opus::internal::OpusDestroyer::operator()(OpusDecoder* decoder) const -noexcept { - opus_decoder_destroy(decoder); -} - -opus::Encoder::Encoder(opus_int32 sample_rate, int num_channels, - int application, int expected_loss_percent) - : num_channels_{ num_channels } { - int error{}; - encoder_.reset( - opus_encoder_create(sample_rate, num_channels, application, &error)); - valid_ = error == OPUS_OK; - if (!valid()) { - // LOG(INFO) << "Could not construct encoder. Error: " << ErrorToString(error); - return; - } - if (expected_loss_percent > 0) { - // LOG(INFO) << "Enabling FEC in the encoder."; - Ctl(OPUS_SET_INBAND_FEC(1)); - Ctl(OPUS_SET_PACKET_LOSS_PERC(expected_loss_percent)); - } -} - -bool opus::Encoder::ResetState() { - valid_ = Ctl(OPUS_RESET_STATE) == OPUS_OK; - return valid_; -} - -bool opus::Encoder::SetBitrate(int bitrate) { - valid_ = Ctl(OPUS_SET_BITRATE(bitrate)) == OPUS_OK; - return valid_; -} - -bool opus::Encoder::SetVariableBitrate(int vbr) { - valid_ = Ctl(OPUS_SET_VBR(vbr)) == OPUS_OK; - return valid_; -} - -bool opus::Encoder::SetComplexity(int complexity) { - valid_ = Ctl(OPUS_SET_COMPLEXITY(complexity)) == OPUS_OK; - return valid_; -} - -int opus::Encoder::GetLookahead() { - opus_int32 skip{}; - valid_ = Ctl(OPUS_GET_LOOKAHEAD(&skip)) == OPUS_OK; - return skip; -} - -std::vector> opus::Encoder::Encode( - const std::vector& pcm, int frame_size) { - constexpr auto sample_size = sizeof(pcm[0]); - const auto frame_length = frame_size * num_channels_ * sample_size; - auto data_length = pcm.size() * sample_size; - if (data_length % frame_length != 0u) { - // LOG(WARNING) << "PCM samples contain an incomplete frame. Ignoring the " - // "incomplete frame."; - data_length -= (data_length % frame_length); - } - - std::vector> encoded; - for (std::size_t i{}; i < data_length; i += frame_length) { - encoded.push_back(EncodeFrame(pcm.begin() + (i / sample_size), frame_size)); - } - return encoded; -} - -std::vector opus::Encoder::EncodeFrame( - const std::vector::const_iterator& frame_start, - int frame_size) { - const auto frame_length = (frame_size * num_channels_ * sizeof(*frame_start)); - std::vector encoded(frame_length); - auto num_bytes = opus_encode(encoder_.get(), &*frame_start, frame_size, - encoded.data(), encoded.size()); - if (num_bytes < 0) { - // LOG(ERROR) << "Encode error: " << opus::ErrorToString(num_bytes); - return {}; - } - encoded.resize(num_bytes); - return encoded; -} - -opus::Decoder::Decoder(opus_uint32 sample_rate, int num_channels) - : num_channels_(num_channels) { - int error{}; - decoder_.reset(opus_decoder_create(sample_rate, num_channels, &error)); - valid_ = error == OPUS_OK; -} - -std::vector opus::Decoder::Decode( - const std::vector>& packets, int frame_size, - bool decode_fec) { - std::vector decoded; - for (const auto& enc : packets) { - auto just_decoded = Decode(enc, frame_size, decode_fec); - decoded.insert(std::end(decoded), std::begin(just_decoded), - std::end(just_decoded)); - } - return decoded; -} - -std::vector opus::Decoder::Decode( - const std::vector& packet, int frame_size, bool decode_fec) { - const auto frame_length = (frame_size * num_channels_ * sizeof(opus_int16)); - std::vector decoded(frame_length); - auto num_samples = opus_decode(decoder_.get(), packet.data(), packet.size(), - decoded.data(), frame_size, decode_fec); - if (num_samples < 0) { - // LOG(ERROR) << "Decode error: " << opus::ErrorToString(num_samples); - return {}; - } - decoded.resize(num_samples * num_channels_); - return decoded; -} - -std::vector opus::Decoder::DecodeDummy(int frame_size) { - const auto frame_length = (frame_size * num_channels_ * sizeof(opus_int16)); - std::vector decoded(frame_length); - auto num_samples = - opus_decode(decoder_.get(), nullptr, 0, decoded.data(), frame_size, true); - if (num_samples < 0) { - // LOG(ERROR) << "Decode error: " << opus::ErrorToString(num_samples); - return {}; - } - decoded.resize(num_samples * num_channels_); - return decoded; -} \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusWrapper.h b/plugins/opusCodec/src/OpusWrapper.h deleted file mode 100644 index 713dff87ff..0000000000 --- a/plugins/opusCodec/src/OpusWrapper.h +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef OPUSCPP_OPUS_WRAPPER_H_ -#define OPUSCPP_OPUS_WRAPPER_H_ - -#include -#include -#include - -#include "opus/opus.h" - -namespace opus { - - std::string ErrorToString(int error); - - namespace internal { - // Deleter for OpusEncoders and OpusDecoders - struct OpusDestroyer { - void operator()(OpusEncoder* encoder) const noexcept; - void operator()(OpusDecoder* decoder) const noexcept; - }; - template - using opus_uptr = std::unique_ptr; - } // namespace internal - - class Encoder { - public: - // see documentation at: - // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__encoder.html#gaa89264fd93c9da70362a0c9b96b9ca88 - // Fs corresponds to sample_rate - // - // If expected_loss_percent is positive, FEC will be enabled - Encoder(opus_int32 sample_rate, int num_channels, int application, - int expected_loss_percent = 0); - - // Resets internal state of encoder. This should be called between encoding - // different streams so that back-to-back decoding and one-at-a-time decoding - // give the same result. Returns true on success. - bool ResetState(); - - // Sets the desired bitrate. Rates from 500 to 512000 are meaningful as well - // as the special values OPUS_AUTO and OPUS_BITRATE_MAX. If this method - // is not called, the default value of OPUS_AUTO is used. - // Returns true on success. - bool SetBitrate(int bitrate); - - // Enables or disables variable bitrate in the encoder. By default, variable - // bitrate is enabled. Returns true on success. - bool SetVariableBitrate(int vbr); - - // Sets the computational complexity of the encoder, in the range of 0 to 10, - // inclusive, with 10 being the highest complexity. Returns true on success. - bool SetComplexity(int complexity); - - // Gets the total samples of delay added by the entire codec. This value - // is the minimum amount of 'preskip' that has to be specified in an - // ogg-stream that encapsulates the encoded audio. - int GetLookahead(); - - // Takes audio data and encodes it. Returns a sequence of encoded packets. - // pcm.size() must be divisible by frame_size * (number of channels); - // pcm must not contain any incomplete packets. - // see documentation for pcm and frame_size at: - // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__encoder.html#gad2d6bf6a9ffb6674879d7605ed073e25 - std::vector> Encode( - const std::vector& pcm, int frame_size); - - int valid() const { return valid_; } - - private: - std::vector EncodeFrame( - const std::vector::const_iterator& frame_start, - int frame_size); - - template - int Ctl(int request, Ts... args) const { - return opus_encoder_ctl(encoder_.get(), request, args...); - } - - int num_channels_{}; - bool valid_{}; - internal::opus_uptr encoder_; - }; - - class Decoder { - public: - // see documentation at: - // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga753f6fe0b699c81cfd47d70c8e15a0bd - // Fs corresponds to sample_rate - Decoder(opus_uint32 sample_rate, int num_channels); - - // Takes a sequence of encoded packets and decodes them. Returns the decoded - // audio. - // see documentation at: - // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga7d1111f64c36027ddcb81799df9b3fc9 - std::vector Decode( - const std::vector>& packets, int frame_size, - bool decode_fec); - - int valid() const { return valid_; } - - // Takes an encoded packet and decodes it. Returns the decoded audio - // see documentation at: - // https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/group__opus__decoder.html#ga7d1111f64c36027ddcb81799df9b3fc9 - std::vector Decode(const std::vector& packet, - int frame_size, bool decode_fec); - - // Generates a dummy frame by passing nullptr to the underlying opus decode. - std::vector DecodeDummy(int frame_size); - - private: - int num_channels_{}; - bool valid_{}; - internal::opus_uptr decoder_; - }; - -} // namespace opus - -#endif \ No newline at end of file From 6ac090dea5c797ec662a407e01c4d9dd83e2fea3 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Tue, 14 Jan 2020 20:33:39 -0600 Subject: [PATCH 232/396] Quick fix for the metaverse API We did have the dfault metaverse API as metaverse.projectathena.io, but that doesn't not yet exist, and it turns out we can't just do a redirect. So for now changing it to metaverse.highfidelity.com --- libraries/networking/src/NetworkingConstants.h | 2 +- tools/nitpick/AppDataHighFidelity/Interface.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index d5dae658c9..fabf8b0e44 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -25,7 +25,7 @@ namespace NetworkingConstants { // if you manually generate a personal access token for the domains scope // at https://staging.highfidelity.com/user/tokens/new?for_domain_server=true - const QUrl METAVERSE_SERVER_URL_STABLE { "https://metaverse.projectathena.io" }; + const QUrl METAVERSE_SERVER_URL_STABLE { "https://metaverse.highfidelity.com" }; const QUrl METAVERSE_SERVER_URL_STAGING { "https://staging.projectathena.io" }; } diff --git a/tools/nitpick/AppDataHighFidelity/Interface.json b/tools/nitpick/AppDataHighFidelity/Interface.json index 7a8a15e002..5991ed64aa 100644 --- a/tools/nitpick/AppDataHighFidelity/Interface.json +++ b/tools/nitpick/AppDataHighFidelity/Interface.json @@ -279,5 +279,6 @@ "toolbar/com.highfidelity.interface.toolbar.system/x": 655, "toolbar/com.highfidelity.interface.toolbar.system/y": 953, "toolbar/constrainToolbarToCenterX": true, + "private/selectedMetaverseURL": "https://metaverse.highfidelity.com", "wallet/autoLogout": true } From 24669c98f6d7c4870bc9a9d1614fbbfa01f74a9e Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 12:57:18 -0600 Subject: [PATCH 233/396] Made changes requested by reviewer Fixed missing copyright headers. Fixed exceeding 120 columns. Fixed #include Fixed if conditional style. Fixed C++ reference symbol placement. --- plugins/opusCodec/src/OpusDecoder.cpp | 40 +++++++++++---- plugins/opusCodec/src/OpusDecoder.h | 10 ++++ plugins/opusCodec/src/OpusEncoder.cpp | 70 +++++++++++++++++++-------- plugins/opusCodec/src/OpusEncoder.h | 14 +++++- 4 files changed, 102 insertions(+), 32 deletions(-) diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index b410ed9bd5..3e436c58e4 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -1,3 +1,13 @@ +// +// OpusCodecManager.h +// plugins/opusCodec/src +// +// Copyright 2020 Dale Glass +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + #include #include #include @@ -60,25 +70,30 @@ void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &deco PerformanceTimer perfTimer("AthenaOpusDecoder::decode"); // The audio system encodes and decodes always in fixed size chunks - int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) * _opus_num_channels; + int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) + * _opus_num_channels; decodedBuffer.resize( buffer_size ); int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast(sizeof( opus_int16 )); - qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " << decodedBuffer.size() << "; frameCount = " << buffer_frames; - int decoded_frames = opus_decode( _decoder, reinterpret_cast(encodedBuffer.data()), encodedBuffer.length(), reinterpret_cast(decodedBuffer.data()), buffer_frames, 0 ); + qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " + << decodedBuffer.size() << "; frameCount = " << buffer_frames; + int decoded_frames = opus_decode( _decoder, reinterpret_cast(encodedBuffer.data()), + encodedBuffer.length(), reinterpret_cast(decodedBuffer.data()), buffer_frames, 0 ); if ( decoded_frames >= 0 ) { //qCDebug(decoder) << "Decoded " << decoded_frames << " Opus frames, " << buffer_frames << " expected"; if ( decoded_frames < buffer_frames ) { - qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames << " were expected!"; + qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames + << " were expected!"; int start = decoded_frames * static_cast(sizeof(int16_t)) * _opus_num_channels; memset( &decodedBuffer.data()[start], 0, static_cast(decodedBuffer.length() - start)); } else if ( decoded_frames > buffer_frames ) { // This should never happen - qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames << " were expected! Buffer overflow!?"; + qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames + << " were expected! Buffer overflow!?"; } } else { qCCritical(decoder) << "Failed to decode audio: " << error_to_string(decoded_frames); @@ -93,23 +108,28 @@ void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) PerformanceTimer perfTimer("AthenaOpusDecoder::lostFrame"); - int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) * _opus_num_channels; + int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) + * _opus_num_channels; decodedBuffer.resize( buffer_size ); int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast(sizeof( opus_int16 )); - int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), buffer_frames, 1 ); + int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), + buffer_frames, 1 ); if ( decoded_frames >= 0 ) { - //qCDebug(decoder) << "Produced " << decoded_frames << " opus frames from a lost frame, " << buffer_frames << " expected"; + //qCDebug(decoder) << "Produced " << decoded_frames << " opus frames from a lost frame, " << buffer_frames + // << " expected"; if ( decoded_frames < buffer_frames ) { - qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames << " were expected!"; + qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames + << " were expected!"; int start = decoded_frames * static_cast(sizeof(int16_t)) * _opus_num_channels; memset( &decodedBuffer.data()[start], 0, static_cast(decodedBuffer.length() - start)); } else if ( decoded_frames > buffer_frames ) { // This should never happen - qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames << " were expected! Buffer overflow!?"; + qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames + << " were expected! Buffer overflow!?"; } } else { qCCritical(decoder) << "Failed to decode lost frame: " << error_to_string(decoded_frames); diff --git a/plugins/opusCodec/src/OpusDecoder.h b/plugins/opusCodec/src/OpusDecoder.h index 0aaadedc7a..01722fcc6c 100644 --- a/plugins/opusCodec/src/OpusDecoder.h +++ b/plugins/opusCodec/src/OpusDecoder.h @@ -1,3 +1,13 @@ +// +// OpusCodecManager.h +// plugins/opusCodec/src +// +// Copyright 2020 Dale Glass +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + #ifndef OPUSDECODER_H #define OPUSDECODER_H diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index 04af3121db..700164427e 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -1,9 +1,18 @@ +// +// OpusCodecManager.h +// plugins/opusCodec/src +// +// Copyright 2020 Dale Glass +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// #include #include +#include #include "OpusEncoder.h" -#include "opus/opus.h" static QLoggingCategory encoder("AthenaOpusEncoder"); @@ -68,7 +77,8 @@ void AthenaOpusEncoder::encode(const QByteArray& decodedBuffer, QByteArray& enco encodedBuffer.resize( decodedBuffer.size() ); int frame_size = decodedBuffer.length()/ _opus_channels / static_cast(sizeof(opus_int16)); - int bytes = opus_encode(_encoder, reinterpret_cast(decodedBuffer.constData()), frame_size, reinterpret_cast(encodedBuffer.data()), encodedBuffer.size() ); + int bytes = opus_encode(_encoder, reinterpret_cast(decodedBuffer.constData()), frame_size, + reinterpret_cast(encodedBuffer.data()), encodedBuffer.size() ); if ( bytes >= 0 ) { //qCDebug(encoder) << "Encoded " << decodedBuffer.length() << " bytes into " << bytes << " opus bytes"; @@ -76,7 +86,8 @@ void AthenaOpusEncoder::encode(const QByteArray& decodedBuffer, QByteArray& enco } else { encodedBuffer.resize(0); - qCWarning(encoder) << "Error when encoding " << decodedBuffer.length() << " bytes of audio: " << error_to_string(bytes); + qCWarning(encoder) << "Error when encoding " << decodedBuffer.length() << " bytes of audio: " + << error_to_string(bytes); } } @@ -94,8 +105,9 @@ void AthenaOpusEncoder::setComplexity(int complexity) assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_COMPLEXITY(complexity)); - if ( ret != OPUS_OK ) + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting complexity to " << complexity << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getBitrate() const @@ -110,8 +122,10 @@ void AthenaOpusEncoder::setBitrate(int bitrate) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_BITRATE(bitrate)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting bitrate to " << bitrate << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getVBR() const @@ -126,8 +140,10 @@ void AthenaOpusEncoder::setVBR(int vbr) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_VBR(vbr)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting VBR to " << vbr << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getVBRConstraint() const @@ -142,8 +158,10 @@ void AthenaOpusEncoder::setVBRConstraint(int vbr_const) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_VBR_CONSTRAINT(vbr_const)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting VBR constraint to " << vbr_const << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getMaxBandwidth() const @@ -158,8 +176,10 @@ void AthenaOpusEncoder::setMaxBandwidth(int maxbw) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxbw)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting max bandwidth to " << maxbw << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getBandwidth() const @@ -174,8 +194,10 @@ void AthenaOpusEncoder::setBandwidth(int bw) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_BANDWIDTH(bw)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting bandwidth to " << bw << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getSignal() const @@ -190,8 +212,10 @@ void AthenaOpusEncoder::setSignal(int signal) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_SIGNAL(signal)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting signal to " << signal << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getApplication() const @@ -202,12 +226,14 @@ int AthenaOpusEncoder::getApplication() const return ret; } -void AthenaOpusEncoder::setApplication(int app) +void AthenaOpusEncoder::setApplication(int application) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_APPLICATION(app)); - if ( ret != OPUS_OK ) - qCWarning(encoder) << "Error when setting application to " << app << ": " << error_to_string(ret); + int ret = opus_encoder_ctl(_encoder, OPUS_SET_APPLICATION(application)); + + if (ret != OPUS_OK) { + qCWarning(encoder) << "Error when setting application to " << application << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getLookahead() const @@ -230,8 +256,10 @@ void AthenaOpusEncoder::setInbandFEC(int fec) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_INBAND_FEC(fec)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting inband FEC to " << fec << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getExpectedPacketLossPercent() const @@ -246,8 +274,10 @@ void AthenaOpusEncoder::setExpectedPacketLossPercent(int perc) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_PACKET_LOSS_PERC(perc)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting loss percent to " << perc << ": " << error_to_string(ret); + } } int AthenaOpusEncoder::getDTX() const @@ -262,8 +292,8 @@ void AthenaOpusEncoder::setDTX(int dtx) { assert(_encoder); int ret = opus_encoder_ctl(_encoder, OPUS_SET_DTX(dtx)); - if ( ret != OPUS_OK ) + + if (ret != OPUS_OK) { qCWarning(encoder) << "Error when setting DTX to " << dtx << ": " << error_to_string(ret); -} - - + } +} \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusEncoder.h b/plugins/opusCodec/src/OpusEncoder.h index b456f76093..920423a96d 100644 --- a/plugins/opusCodec/src/OpusEncoder.h +++ b/plugins/opusCodec/src/OpusEncoder.h @@ -1,7 +1,17 @@ +// +// OpusCodecManager.h +// plugins/opusCodec/src +// +// Copyright 2020 Dale Glass +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + #ifndef OPUSENCODER_H #define OPUSENCODER_H #include -#include "opus/opus.h" +#include class AthenaOpusEncoder : public Encoder { @@ -61,7 +71,7 @@ private: int _opus_expected_loss = 0; - OpusEncoder *_encoder = nullptr; + OpusEncoder* _encoder = nullptr; }; From 5ff8654363c4a4355222bbd4b6f727b7d0ffc9a4 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 13:04:59 -0600 Subject: [PATCH 234/396] Update plugins/opusCodec/src/plugin.json Co-Authored-By: Thijs Wenker --- plugins/opusCodec/src/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/opusCodec/src/plugin.json b/plugins/opusCodec/src/plugin.json index bd7c707f7d..a7605ca322 100644 --- a/plugins/opusCodec/src/plugin.json +++ b/plugins/opusCodec/src/plugin.json @@ -1,4 +1,4 @@ { - "name":"Opus Codec", + "name": "Opus Codec", "version":1 } From 0a3dfdefcedcaee2dc1b81f99456ae6793ab6024 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 13:05:43 -0600 Subject: [PATCH 235/396] Update plugins/opusCodec/src/plugin.json Co-Authored-By: Thijs Wenker --- plugins/opusCodec/src/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/opusCodec/src/plugin.json b/plugins/opusCodec/src/plugin.json index a7605ca322..17217d6017 100644 --- a/plugins/opusCodec/src/plugin.json +++ b/plugins/opusCodec/src/plugin.json @@ -1,4 +1,4 @@ { "name": "Opus Codec", - "version":1 + "version": 1 } From d96da21dd7491ef457a24c51448fd5a471fb21c1 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 13:06:42 -0600 Subject: [PATCH 236/396] Update plugins/opusCodec/src/OpusDecoder.cpp Co-Authored-By: Thijs Wenker --- plugins/opusCodec/src/OpusDecoder.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index 3e436c58e4..b285b3bb7a 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -110,7 +110,7 @@ void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) * _opus_num_channels; - decodedBuffer.resize( buffer_size ); + decodedBuffer.resize(buffer_size); int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast(sizeof( opus_int16 )); int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), @@ -138,4 +138,3 @@ void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) } - From 9a67ee19e030ded9e5fa5786e0835c5bb38e66a5 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 13:49:25 -0600 Subject: [PATCH 237/396] More review fixes since I missed 66 of them. --- plugins/opusCodec/src/OpusDecoder.cpp | 108 +++++------ plugins/opusCodec/src/OpusDecoder.h | 10 +- plugins/opusCodec/src/OpusEncoder.cpp | 264 ++++++++++++-------------- plugins/opusCodec/src/OpusEncoder.h | 8 +- 4 files changed, 178 insertions(+), 212 deletions(-) diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index 3e436c58e4..e95d813fb4 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -18,36 +18,35 @@ static QLoggingCategory decoder("AthenaOpusDecoder"); static QString error_to_string(int error) { switch (error) { - case OPUS_OK: - return "OK"; - case OPUS_BAD_ARG: - return "One or more invalid/out of range arguments."; - case OPUS_BUFFER_TOO_SMALL: - return "The mode struct passed is invalid."; - case OPUS_INTERNAL_ERROR: - return "An internal error was detected."; - case OPUS_INVALID_PACKET: - return "The compressed data passed is corrupted."; - case OPUS_UNIMPLEMENTED: - return "Invalid/unsupported request number."; - case OPUS_INVALID_STATE: - return "An encoder or decoder structure is invalid or already freed."; - default: - return QString("Unknown error code: %i").arg(error); + case OPUS_OK: + return "OK"; + case OPUS_BAD_ARG: + return "One or more invalid/out of range arguments."; + case OPUS_BUFFER_TOO_SMALL: + return "The mode struct passed is invalid."; + case OPUS_INTERNAL_ERROR: + return "An internal error was detected."; + case OPUS_INVALID_PACKET: + return "The compressed data passed is corrupted."; + case OPUS_UNIMPLEMENTED: + return "Invalid/unsupported request number."; + case OPUS_INVALID_STATE: + return "An encoder or decoder structure is invalid or already freed."; + default: + return QString("Unknown error code: %i").arg(error); } } -AthenaOpusDecoder::AthenaOpusDecoder(int sampleRate, int numChannels) -{ +AthenaOpusDecoder::AthenaOpusDecoder(int sampleRate, int numChannels) { int error; - _opus_sample_rate = sampleRate; - _opus_num_channels = numChannels; + _opusSampleRate = sampleRate; + _opusNumChannels = numChannels; _decoder = opus_decoder_create(sampleRate, numChannels, &error); - if ( error != OPUS_OK ) { + if (error != OPUS_OK) { qCCritical(decoder) << "Failed to initialize Opus encoder: " << error_to_string(error); _decoder = nullptr; return; @@ -57,42 +56,39 @@ AthenaOpusDecoder::AthenaOpusDecoder(int sampleRate, int numChannels) qCDebug(decoder) << "Opus decoder initialized, sampleRate = " << sampleRate << "; numChannels = " << numChannels; } -AthenaOpusDecoder::~AthenaOpusDecoder() -{ - if ( _decoder ) +AthenaOpusDecoder::~AthenaOpusDecoder() { + if (_decoder) opus_decoder_destroy(_decoder); } -void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &decodedBuffer) -{ +void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &decodedBuffer) { assert(_decoder); PerformanceTimer perfTimer("AthenaOpusDecoder::decode"); // The audio system encodes and decodes always in fixed size chunks - int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) - * _opus_num_channels; + int bufferSize = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) + * _opusNumChannels; - decodedBuffer.resize( buffer_size ); - int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast(sizeof( opus_int16 )); + decodedBuffer.resize(bufferSize); + int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof( opus_int16 )); qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " - << decodedBuffer.size() << "; frameCount = " << buffer_frames; - int decoded_frames = opus_decode( _decoder, reinterpret_cast(encodedBuffer.data()), - encodedBuffer.length(), reinterpret_cast(decodedBuffer.data()), buffer_frames, 0 ); + << decodedBuffer.size() << "; frameCount = " << bufferFrames; + int decoded_frames = opus_decode(_decoder, reinterpret_cast(encodedBuffer.data()), + encodedBuffer.length(), reinterpret_cast(decodedBuffer.data()), bufferFrames, 0); - if ( decoded_frames >= 0 ) { - //qCDebug(decoder) << "Decoded " << decoded_frames << " Opus frames, " << buffer_frames << " expected"; + if (decoded_frames >= 0) { - if ( decoded_frames < buffer_frames ) { - qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames + if (decoded_frames < bufferFrames) { + qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << bufferFrames << " were expected!"; - int start = decoded_frames * static_cast(sizeof(int16_t)) * _opus_num_channels; + int start = decoded_frames * static_cast(sizeof(int16_t)) * _opusNumChannels; memset( &decodedBuffer.data()[start], 0, static_cast(decodedBuffer.length() - start)); - } else if ( decoded_frames > buffer_frames ) { + } else if (decoded_frames > bufferFrames) { // This should never happen - qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames + qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << bufferFrames << " were expected! Buffer overflow!?"; } } else { @@ -102,40 +98,36 @@ void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &deco } -void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) -{ +void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) { assert(_decoder); PerformanceTimer perfTimer("AthenaOpusDecoder::lostFrame"); - int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) - * _opus_num_channels; - decodedBuffer.resize( buffer_size ); - int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast(sizeof( opus_int16 )); + int bufferSize = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast(sizeof(int16_t)) + * _opusNumChannels; + decodedBuffer.resize(bufferSize); + int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof(opus_int16)); - int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), - buffer_frames, 1 ); + int decoded_frames = opus_decode(_decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), + bufferFrames, 1 ); - if ( decoded_frames >= 0 ) { - //qCDebug(decoder) << "Produced " << decoded_frames << " opus frames from a lost frame, " << buffer_frames - // << " expected"; + if (decoded_frames >= 0) { - if ( decoded_frames < buffer_frames ) { - qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames + if ( decoded_frames < bufferFrames ) { + qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << bufferFrames << " were expected!"; - int start = decoded_frames * static_cast(sizeof(int16_t)) * _opus_num_channels; + int start = decoded_frames * static_cast(sizeof(int16_t)) * _opusNumChannels; memset( &decodedBuffer.data()[start], 0, static_cast(decodedBuffer.length() - start)); - } else if ( decoded_frames > buffer_frames ) { + } else if (decoded_frames > bufferFrames) { // This should never happen - qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames + qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << bufferFrames << " were expected! Buffer overflow!?"; } + } else { qCCritical(decoder) << "Failed to decode lost frame: " << error_to_string(decoded_frames); decodedBuffer.fill('\0'); } } - - diff --git a/plugins/opusCodec/src/OpusDecoder.h b/plugins/opusCodec/src/OpusDecoder.h index 01722fcc6c..f7ae6eb6da 100644 --- a/plugins/opusCodec/src/OpusDecoder.h +++ b/plugins/opusCodec/src/OpusDecoder.h @@ -13,7 +13,7 @@ #include -#include "opus/opus.h" +#include class AthenaOpusDecoder : public Decoder { @@ -23,16 +23,16 @@ public: virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override; - virtual void lostFrame( QByteArray &decodedBuffer) override; + virtual void lostFrame(QByteArray &decodedBuffer) override; private: int _encodedSize; OpusDecoder *_decoder = nullptr; - int _opus_sample_rate = 0; - int _opus_num_channels = 0; - int _decoded_size = 0; + int _opusSampleRate = 0; + int _opusNumChannels = 0; + int _decodedSize = 0; }; diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index 700164427e..e0b20a6e65 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -16,40 +16,39 @@ static QLoggingCategory encoder("AthenaOpusEncoder"); -static QString error_to_string(int error) { +static QString errorToString(int error) { switch (error) { - case OPUS_OK: - return "OK"; - case OPUS_BAD_ARG: - return "One or more invalid/out of range arguments."; - case OPUS_BUFFER_TOO_SMALL: - return "The mode struct passed is invalid."; - case OPUS_INTERNAL_ERROR: - return "An internal error was detected."; - case OPUS_INVALID_PACKET: - return "The compressed data passed is corrupted."; - case OPUS_UNIMPLEMENTED: - return "Invalid/unsupported request number."; - case OPUS_INVALID_STATE: - return "An encoder or decoder structure is invalid or already freed."; - default: - return QString("Unknown error code: %i").arg(error); + case OPUS_OK: + return "OK"; + case OPUS_BAD_ARG: + return "One or more invalid/out of range arguments."; + case OPUS_BUFFER_TOO_SMALL: + return "The mode struct passed is invalid."; + case OPUS_INTERNAL_ERROR: + return "An internal error was detected."; + case OPUS_INVALID_PACKET: + return "The compressed data passed is corrupted."; + case OPUS_UNIMPLEMENTED: + return "Invalid/unsupported request number."; + case OPUS_INVALID_STATE: + return "An encoder or decoder structure is invalid or already freed."; + default: + return QString("Unknown error code: %i").arg(error); } } -AthenaOpusEncoder::AthenaOpusEncoder(int sampleRate, int numChannels) -{ - _opus_sample_rate = sampleRate; - _opus_channels = numChannels; +AthenaOpusEncoder::AthenaOpusEncoder(int sampleRate, int numChannels) { + _opusSampleRate = sampleRate; + _opusChannels = numChannels; int error; _encoder = opus_encoder_create(sampleRate, numChannels, DEFAULT_APPLICATION, &error); - if ( error != OPUS_OK ) { - qCCritical(encoder) << "Failed to initialize Opus encoder: " << error_to_string(error); + if (error != OPUS_OK) { + qCCritical(encoder) << "Failed to initialize Opus encoder: " << errorToString(error); _encoder = nullptr; return; } @@ -62,8 +61,7 @@ AthenaOpusEncoder::AthenaOpusEncoder(int sampleRate, int numChannels) qCDebug(encoder) << "Opus encoder initialized, sampleRate = " << sampleRate << "; numChannels = " << numChannels; } -AthenaOpusEncoder::~AthenaOpusEncoder() -{ +AthenaOpusEncoder::~AthenaOpusEncoder() { opus_encoder_destroy(_encoder); } @@ -75,225 +73,201 @@ void AthenaOpusEncoder::encode(const QByteArray& decodedBuffer, QByteArray& enco assert(_encoder); encodedBuffer.resize( decodedBuffer.size() ); - int frame_size = decodedBuffer.length()/ _opus_channels / static_cast(sizeof(opus_int16)); + int frameSize = decodedBuffer.length()/ _opusChannels / static_cast(sizeof(opus_int16)); - int bytes = opus_encode(_encoder, reinterpret_cast(decodedBuffer.constData()), frame_size, + int bytes = opus_encode(_encoder, reinterpret_cast(decodedBuffer.constData()), frameSize, reinterpret_cast(encodedBuffer.data()), encodedBuffer.size() ); - if ( bytes >= 0 ) { - //qCDebug(encoder) << "Encoded " << decodedBuffer.length() << " bytes into " << bytes << " opus bytes"; + if (bytes >= 0) { encodedBuffer.resize(bytes); } else { encodedBuffer.resize(0); qCWarning(encoder) << "Error when encoding " << decodedBuffer.length() << " bytes of audio: " - << error_to_string(bytes); + << errorToString(bytes); } } -int AthenaOpusEncoder::getComplexity() const -{ +int AthenaOpusEncoder::getComplexity() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_COMPLEXITY(&ret)); - return ret; + int returnValue; + opus_encoder_ctl(_encoder, OPUS_GET_COMPLEXITY(&returnValue)); + return returnValue; } -void AthenaOpusEncoder::setComplexity(int complexity) -{ +void AthenaOpusEncoder::setComplexity(int complexity) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_COMPLEXITY(complexity)); + int returnValue = opus_encoder_ctl(_encoder, OPUS_SET_COMPLEXITY(complexity)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting complexity to " << complexity << ": " << error_to_string(ret); + if (returnValue != OPUS_OK) { + qCWarning(encoder) << "Error when setting complexity to " << complexity << ": " << errorToString(returnValue); } } -int AthenaOpusEncoder::getBitrate() const -{ +int AthenaOpusEncoder::getBitrate() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_BITRATE(&ret)); - return ret; + int returnValue; + opus_encoder_ctl(_encoder, OPUS_GET_BITRATE(&returnValue)); + return returnValue; } -void AthenaOpusEncoder::setBitrate(int bitrate) -{ +void AthenaOpusEncoder::setBitrate(int bitrate) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_BITRATE(bitrate)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_BITRATE(bitrate)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting bitrate to " << bitrate << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting bitrate to " << bitrate << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getVBR() const -{ +int AthenaOpusEncoder::getVBR() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_VBR(&ret)); - return ret; + int returnValue; + opus_encoder_ctl(_encoder, OPUS_GET_VBR(&returnValue)); + return returnValue; } -void AthenaOpusEncoder::setVBR(int vbr) -{ +void AthenaOpusEncoder::setVBR(int vbr) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_VBR(vbr)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_VBR(vbr)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting VBR to " << vbr << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting VBR to " << vbr << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getVBRConstraint() const -{ +int AthenaOpusEncoder::getVBRConstraint() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_VBR_CONSTRAINT(&ret)); - return ret; + int returnValue; + opus_encoder_ctl(_encoder, OPUS_GET_VBR_CONSTRAINT(&returnValue)); + return returnValue; } -void AthenaOpusEncoder::setVBRConstraint(int vbr_const) -{ +void AthenaOpusEncoder::setVBRConstraint(int vbr_const) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_VBR_CONSTRAINT(vbr_const)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_VBR_CONSTRAINT(vbr_const)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting VBR constraint to " << vbr_const << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting VBR constraint to " << vbr_const << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getMaxBandwidth() const -{ +int AthenaOpusEncoder::getMaxBandwidth() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_MAX_BANDWIDTH(&ret)); - return ret; + int returnValue; + opus_encoder_ctl(_encoder, OPUS_GET_MAX_BANDWIDTH(&returnValue)); + return returnValue; } -void AthenaOpusEncoder::setMaxBandwidth(int maxbw) -{ +void AthenaOpusEncoder::setMaxBandwidth(int maxbw) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxbw)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxbw)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting max bandwidth to " << maxbw << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting max bandwidth to " << maxbw << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getBandwidth() const -{ +int AthenaOpusEncoder::getBandwidth() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_BANDWIDTH(&ret)); - return ret; + int bandwidth; + opus_encoder_ctl(_encoder, OPUS_GET_BANDWIDTH(&bandwidth)); + return bandwidth; } -void AthenaOpusEncoder::setBandwidth(int bw) -{ +void AthenaOpusEncoder::setBandwidth(int bandwidth) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_BANDWIDTH(bw)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_BANDWIDTH(bandwidth)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting bandwidth to " << bw << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting bandwidth to " << bandwidth << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getSignal() const -{ +int AthenaOpusEncoder::getSignal() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_SIGNAL(&ret)); - return ret; + int signal; + opus_encoder_ctl(_encoder, OPUS_GET_SIGNAL(&signal)); + return signal; } -void AthenaOpusEncoder::setSignal(int signal) -{ +void AthenaOpusEncoder::setSignal(int signal) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_SIGNAL(signal)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_SIGNAL(signal)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting signal to " << signal << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting signal to " << signal << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getApplication() const -{ +int AthenaOpusEncoder::getApplication() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_APPLICATION(&ret)); - return ret; + int applicationValue; + opus_encoder_ctl(_encoder, OPUS_GET_APPLICATION(&applicationValue)); + return applicationValue; } -void AthenaOpusEncoder::setApplication(int application) -{ +void AthenaOpusEncoder::setApplication(int application) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_APPLICATION(application)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_APPLICATION(application)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting application to " << application << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting application to " << application << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getLookahead() const -{ +int AthenaOpusEncoder::getLookahead() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_LOOKAHEAD(&ret)); - return ret; + int lookAhead; + opus_encoder_ctl(_encoder, OPUS_GET_LOOKAHEAD(&lookAhead)); + return lookAhead; } -int AthenaOpusEncoder::getInbandFEC() const -{ +int AthenaOpusEncoder::getInbandFEC() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_INBAND_FEC(&ret)); - return ret; + int fec; + opus_encoder_ctl(_encoder, OPUS_GET_INBAND_FEC(&fec)); + return fec; } -void AthenaOpusEncoder::setInbandFEC(int fec) -{ +void AthenaOpusEncoder::setInbandFEC(int fec) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_INBAND_FEC(fec)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_INBAND_FEC(fec)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting inband FEC to " << fec << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting inband FEC to " << fec << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getExpectedPacketLossPercent() const -{ +int AthenaOpusEncoder::getExpectedPacketLossPercent() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_PACKET_LOSS_PERC(&ret)); - return ret; + int lossPercentage; + opus_encoder_ctl(_encoder, OPUS_GET_PACKET_LOSS_PERC(&lossPercentage)); + return lossPercentage; } -void AthenaOpusEncoder::setExpectedPacketLossPercent(int perc) -{ +void AthenaOpusEncoder::setExpectedPacketLossPercentage(int percent) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_PACKET_LOSS_PERC(perc)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_PACKET_LOSS_PERC(percent)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting loss percent to " << perc << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting loss percent to " << percent << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getDTX() const -{ +int AthenaOpusEncoder::getDTX() const { assert(_encoder); - int ret; - opus_encoder_ctl(_encoder, OPUS_GET_DTX(&ret)); - return ret; + int dtx; + opus_encoder_ctl(_encoder, OPUS_GET_DTX(&dtx)); + return dtx; } -void AthenaOpusEncoder::setDTX(int dtx) -{ +void AthenaOpusEncoder::setDTX(int dtx) { assert(_encoder); - int ret = opus_encoder_ctl(_encoder, OPUS_SET_DTX(dtx)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_DTX(dtx)); - if (ret != OPUS_OK) { - qCWarning(encoder) << "Error when setting DTX to " << dtx << ": " << error_to_string(ret); + if (errorCode != OPUS_OK) { + qCWarning(encoder) << "Error when setting DTX to " << dtx << ": " << errorToString(errorCode); } } \ No newline at end of file diff --git a/plugins/opusCodec/src/OpusEncoder.h b/plugins/opusCodec/src/OpusEncoder.h index 920423a96d..fc1ca0b827 100644 --- a/plugins/opusCodec/src/OpusEncoder.h +++ b/plugins/opusCodec/src/OpusEncoder.h @@ -58,7 +58,7 @@ public: void setInbandFEC(int fec); int getExpectedPacketLossPercent() const; - void setExpectedPacketLossPercent(int perc); + void setExpectedPacketLossPercentage(int percent); int getDTX() const; void setDTX(int dtx); @@ -66,9 +66,9 @@ public: private: - int _opus_sample_rate = 0; - int _opus_channels = 0; - int _opus_expected_loss = 0; + int _opusSampleRate = 0; + int _opusChannels = 0; + int _opusExpectedLoss = 0; OpusEncoder* _encoder = nullptr; From bc35ef577652ca9c044b035013626c27fa8fc173 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 15 Jan 2020 21:17:17 +0000 Subject: [PATCH 238/396] Add goto json support (defaults to darlings goto), gotos (gotosudo) which bypasses the popup window and added history to the main chatbar so you can press up/down on there --- scripts/communityModules/chat/FloofChat.js | 72 +++++++++++++++++---- scripts/communityModules/chat/FloofChat.qml | 32 ++++++++- 2 files changed, 88 insertions(+), 16 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 438adb662d..d4accdd736 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -28,13 +28,18 @@ var appUUID = Uuid.generate(); var chatBar; var chatHistory; +var chatBarHistoryLimit = Settings.getValue(settingsRoot + "/chatBarHistoryLimit", 256); +var chatHistoryLimit = Settings.getValue(settingsRoot + "/chatHistoryLimit", 500); +var chatBarHistory = Settings.getValue(settingsRoot + "/chatBarHistory", ["Meow :3"]); var historyLog = []; - var visible = false; var historyVisible = false; var settingsRoot = "FloofChat"; +var darlingGotoUrl = "http://metaverse.darlingvr.club:8081/goto.json"; +var gotoJSONUrl = Settings.getValue(settingsRoot + "/gotoJSONUrl", darlingGotoUrl); + var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": false}); var ws; @@ -69,7 +74,7 @@ function init() { button.clicked.connect(toggleChatHistory); chatBar.fromQml.connect(fromQml); - chatBar.sendToQml(JSON.stringify({visible: false})); + chatBar.sendToQml(JSON.stringify({visible: false, history: chatBarHistory})); Controller.keyPressEvent.connect(keyPressEvent); Messages.messageReceived.connect(messageReceived); @@ -172,42 +177,72 @@ function chatColour(tab) { var chatBarChannel = "Local"; +function go2(msg) { + var dest = false; + var domainsList = Script.require("http://metaverse.darlingvr.club:8081/goto.json"); + domainsList.forEach(function (domain) { + if (domain["Domain Name"].toLowerCase().indexOf(msg.toLowerCase()) !== -1) { + dest = {"name": domain["Domain Name"], "url": domain["Visit"]}; + return; + } + }); + return dest; +} -function gotoConfirm(url) { - var result = Window.confirm("Do you want to go to '" + ((url.indexOf("/") !== -1) ? url.split("/")[2] : url) + "'?"); +function gotoConfirm(url, name, confirm) { + confirm = confirm === undefined ? true : confirm; + name = name === undefined ? url : name; + var result = true; + if (confirm) { + result = Window.confirm("Do you want to go to '" + ((name.indexOf("/") !== -1) ? url.split("/")[2] : name) + "'?"); + } if (result) { location = url; } } function processChat(cmd) { + + function commandResult() { + msg = ""; + setVisible(false); + } + var msg = cmd.message; if (msg.indexOf("/") === 0) { msg = msg.substring(1); var commandList = msg.split(" "); + var tempList = commandList.join(";'#[]").split(";'#[]"); + tempList.shift(); + var restOfMsg = tempList.join(" "); + + msg = "/" + msg; var cmd1 = commandList[0].toLowerCase(); if (cmd1 === "l") { chatBarChannel = "Local"; - msg = ""; + commandResult(); } if (cmd1 === "d") { chatBarChannel = "Domain"; - msg = ""; + commandResult(); } if (cmd1 === "g") { chatBarChannel = "Grid"; - msg = ""; + commandResult(); } - if (cmd1 === "goto") { - gotoConfirm(commandList[1]); - msg = ""; + if (cmd1 === "goto" || cmd1 === "gotos") { + var result = go2(restOfMsg); + if (result) { + gotoConfirm(result.url, result.name, (cmd1 === "goto")); + } else { + gotoConfirm(commandList[1], undefined, (cmd1 === "goto")); + } + commandResult(); } if (cmd1 === "me") { - var tempList = commandList; - tempList.shift(); - msg = cmd.avatarName + " " + tempList.join(" "); + msg = cmd.avatarName + " " + restOfMsg; cmd.avatarName = ""; } } @@ -415,12 +450,20 @@ function time() { function addToLog(msg, dp, colour, tab) { historyLog.push([time(), msg, dp, colour, tab]); chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: [[time(), msg, dp, colour, tab]]})); - while (historyLog.length > 500) { + while (historyLog.length > chatHistoryLimit) { historyLog.shift(); } Settings.setValue(settingsRoot + "/HistoryLog", JSON.stringify(historyLog)) } +function addToChatBarHistory(msg) { + chatBarHistory.unshift(cmd.message); + while (chatBarHistory.length > chatBarHistoryLimit) { + chatBarHistory.pop(); + } + Settings.setValue(settingsRoot + "/chatBarHistory", chatBarHistory); +} + function fromQml(message) { var cmd = {FAILED: true}; try { @@ -431,6 +474,7 @@ function fromQml(message) { if (!cmd.FAILED) { if (cmd.type === "MSG") { if (cmd.message !== "") { + addToChatBarHistory(cmd.message); if (cmd.event.modifiers === CONTROL_KEY) { cmd.avatarName = MyAvatar.displayName; cmd = processChat(cmd); diff --git a/scripts/communityModules/chat/FloofChat.qml b/scripts/communityModules/chat/FloofChat.qml index ef72b4886f..cfc0b43abc 100644 --- a/scripts/communityModules/chat/FloofChat.qml +++ b/scripts/communityModules/chat/FloofChat.qml @@ -11,6 +11,8 @@ Rectangle { Binding { target: window; property: 'shown'; value: false; when: Boolean(window) } Component.onDestruction: thing && thing.destroy() + property var hist : -1; + property var history : []; signal sendToScript(var message); color: "#00000000" @@ -40,6 +42,9 @@ Rectangle { thing.visible = false; textArea.focus = false; } + if(data.history){ + history = data.history; + } } } @@ -64,13 +69,36 @@ Rectangle { clip: false font.pointSize: 20 - function _onEnterPressed(event) - { + function _onEnterPressed(event){ sendMessage(JSON.stringify({type:"MSG",message:text,event:event})); + history.unshift(text); text = ""; + hist = -1; } + + function upPressed(event){ + hist++; + if(hist > history.length-1){ + hist = history.length-1; + } + text = history[hist]; + } + function downPressed(event){ + hist--; + if(hist<-1){ + hist = -1; + } + if(hist===-1){ + text = ""; + } else{ + text = history[hist]; + } + } + Keys.onReturnPressed: { _onEnterPressed(event) } Keys.onEnterPressed: { _onEnterPressed(event) } + Keys.onUpPressed: { upPressed(event) } + Keys.onDownPressed: { downPressed(event) } } MouseArea { From 81f8c5bab893a58cc16e5c7f4be6704591886f27 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 15 Jan 2020 21:20:23 +0000 Subject: [PATCH 239/396] fixed json support if invalid json --- scripts/communityModules/chat/FloofChat.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index d4accdd736..304ad728d7 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -179,11 +179,16 @@ var chatBarChannel = "Local"; function go2(msg) { var dest = false; - var domainsList = Script.require("http://metaverse.darlingvr.club:8081/goto.json"); + var domainsList = []; + try { + domainsList = Script.require("http://metaverse.darlingvr.club:8081/goto.json"); + } catch (e) { + // + } domainsList.forEach(function (domain) { - if (domain["Domain Name"].toLowerCase().indexOf(msg.toLowerCase()) !== -1) { + if (domain["Domain Name"].toLowerCase().indexOf(msg.toLowerCase()) !== -1 && !dest) { dest = {"name": domain["Domain Name"], "url": domain["Visit"]}; - return; + } }); return dest; From 1e4716530309a30dfde54703765928234ec799d2 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 15 Jan 2020 21:38:25 +0000 Subject: [PATCH 240/396] fixed minor bug, whoops --- scripts/communityModules/chat/FloofChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 304ad728d7..7859d95090 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -462,7 +462,7 @@ function addToLog(msg, dp, colour, tab) { } function addToChatBarHistory(msg) { - chatBarHistory.unshift(cmd.message); + chatBarHistory.unshift(msg); while (chatBarHistory.length > chatBarHistoryLimit) { chatBarHistory.pop(); } From 9af7c395137e31cafce70763b10dfc760c1fbb3e Mon Sep 17 00:00:00 2001 From: NexPro Date: Wed, 15 Jan 2020 23:08:27 +0000 Subject: [PATCH 241/396] Updated broken urls --- interface/resources/html/tabletHelp.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/interface/resources/html/tabletHelp.html b/interface/resources/html/tabletHelp.html index 0521b490ed..a414417239 100644 --- a/interface/resources/html/tabletHelp.html +++ b/interface/resources/html/tabletHelp.html @@ -78,13 +78,12 @@ var index = 0; var count = 3; var handControllerRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#vr-controls"; - // Link below is currently throwing a 404 - // var keyboardRefURL = "https://docs.projectathena.dev/get-started/desktop.html#movement-controls"; + var keyboardRefURL = "https://docs.projectathena.dev/explore/get-started/desktop.html#movement-controls"; var gamepadRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#gamepad"; function showKbm() { document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg"); - // document.getElementById("image_button").setAttribute("href", keyboardRefURL); + document.getElementById("image_button").setAttribute("href", keyboardRefURL); } function showHandControllers() { From fef469cca45c7a2bc14509a24019a1dd7671d09a Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Wed, 15 Jan 2020 18:00:27 -0600 Subject: [PATCH 242/396] More style fixes for the Great and Powerful Thoys --- plugins/opusCodec/CMakeLists.txt | 2 +- plugins/opusCodec/src/OpusDecoder.h | 2 +- plugins/opusCodec/src/OpusEncoder.cpp | 22 +++++++++++----------- plugins/opusCodec/src/OpusEncoder.h | 14 +++++++------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/plugins/opusCodec/CMakeLists.txt b/plugins/opusCodec/CMakeLists.txt index 06ed6eab95..583aff85d6 100644 --- a/plugins/opusCodec/CMakeLists.txt +++ b/plugins/opusCodec/CMakeLists.txt @@ -12,5 +12,5 @@ link_hifi_libraries(shared audio plugins) target_opus() if (BUILD_SERVER) - install_beside_console() + install_beside_console() endif () diff --git a/plugins/opusCodec/src/OpusDecoder.h b/plugins/opusCodec/src/OpusDecoder.h index f7ae6eb6da..095893856b 100644 --- a/plugins/opusCodec/src/OpusDecoder.h +++ b/plugins/opusCodec/src/OpusDecoder.h @@ -29,7 +29,7 @@ public: private: int _encodedSize; - OpusDecoder *_decoder = nullptr; + OpusDecoder* _decoder = nullptr; int _opusSampleRate = 0; int _opusNumChannels = 0; int _decodedSize = 0; diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index e0b20a6e65..124ca3e3e1 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -41,7 +41,7 @@ static QString errorToString(int error) { AthenaOpusEncoder::AthenaOpusEncoder(int sampleRate, int numChannels) { _opusSampleRate = sampleRate; - _opusChannels = numChannels; + _opusChannels = numChannels; int error; @@ -72,8 +72,8 @@ void AthenaOpusEncoder::encode(const QByteArray& decodedBuffer, QByteArray& enco PerformanceTimer perfTimer("AthenaOpusEncoder::encode"); assert(_encoder); - encodedBuffer.resize( decodedBuffer.size() ); - int frameSize = decodedBuffer.length()/ _opusChannels / static_cast(sizeof(opus_int16)); + encodedBuffer.resize(decodedBuffer.size()); + int frameSize = decodedBuffer.length() / _opusChannels / static_cast(sizeof(opus_int16)); int bytes = opus_encode(_encoder, reinterpret_cast(decodedBuffer.constData()), frameSize, reinterpret_cast(encodedBuffer.data()), encodedBuffer.size() ); @@ -231,28 +231,28 @@ int AthenaOpusEncoder::getInbandFEC() const { return fec; } -void AthenaOpusEncoder::setInbandFEC(int fec) { +void AthenaOpusEncoder::setInbandFEC(int inBandFEC) { assert(_encoder); - int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_INBAND_FEC(fec)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_INBAND_FEC(inBandFEC)); if (errorCode != OPUS_OK) { - qCWarning(encoder) << "Error when setting inband FEC to " << fec << ": " << errorToString(errorCode); + qCWarning(encoder) << "Error when setting inband FEC to " << inBandFEC << ": " << errorToString(errorCode); } } -int AthenaOpusEncoder::getExpectedPacketLossPercent() const { +int AthenaOpusEncoder::getExpectedPacketLossPercentage() const { assert(_encoder); int lossPercentage; opus_encoder_ctl(_encoder, OPUS_GET_PACKET_LOSS_PERC(&lossPercentage)); return lossPercentage; } -void AthenaOpusEncoder::setExpectedPacketLossPercentage(int percent) { +void AthenaOpusEncoder::setExpectedPacketLossPercentage(int percentage) { assert(_encoder); - int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_PACKET_LOSS_PERC(percent)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_PACKET_LOSS_PERC(percentage)); if (errorCode != OPUS_OK) { - qCWarning(encoder) << "Error when setting loss percent to " << percent << ": " << errorToString(errorCode); + qCWarning(encoder) << "Error when setting loss percent to " << percentage << ": " << errorToString(errorCode); } } @@ -270,4 +270,4 @@ void AthenaOpusEncoder::setDTX(int dtx) { if (errorCode != OPUS_OK) { qCWarning(encoder) << "Error when setting DTX to " << dtx << ": " << errorToString(errorCode); } -} \ No newline at end of file +} diff --git a/plugins/opusCodec/src/OpusEncoder.h b/plugins/opusCodec/src/OpusEncoder.h index fc1ca0b827..107b0f82ca 100644 --- a/plugins/opusCodec/src/OpusEncoder.h +++ b/plugins/opusCodec/src/OpusEncoder.h @@ -38,27 +38,27 @@ public: void setVBR(int vbr); int getVBRConstraint() const; - void setVBRConstraint(int vbr_const); + void setVBRConstraint(int vbrConstraint); int getMaxBandwidth() const; - void setMaxBandwidth(int maxbw); + void setMaxBandwidth(int maxBandwidth); int getBandwidth() const; - void setBandwidth(int bw); + void setBandwidth(int bandwidth); int getSignal() const; void setSignal(int signal); int getApplication() const; - void setApplication(int app); + void setApplication(int application); int getLookahead() const; int getInbandFEC() const; - void setInbandFEC(int fec); + void setInbandFEC(int inBandFEC); - int getExpectedPacketLossPercent() const; - void setExpectedPacketLossPercentage(int percent); + int getExpectedPacketLossPercentage() const; + void setExpectedPacketLossPercentage(int percentage); int getDTX() const; void setDTX(int dtx); From 26d507c39a6bc3b8671b240b4f17c84e7a1e4cdd Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Thu, 16 Jan 2020 11:30:45 -0600 Subject: [PATCH 243/396] Yet more style fixes. --- plugins/opusCodec/src/OpusDecoder.cpp | 7 ++++--- plugins/opusCodec/src/OpusEncoder.cpp | 6 +++--- plugins/opusCodec/src/OpusEncoder.h | 10 +++++----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index e95d813fb4..40e4954cb3 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -57,8 +57,9 @@ AthenaOpusDecoder::AthenaOpusDecoder(int sampleRate, int numChannels) { } AthenaOpusDecoder::~AthenaOpusDecoder() { - if (_decoder) + if (_decoder) { opus_decoder_destroy(_decoder); + } } @@ -71,7 +72,7 @@ void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &deco * _opusNumChannels; decodedBuffer.resize(bufferSize); - int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof( opus_int16 )); + int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof(opus_int16)); qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " << decodedBuffer.size() << "; frameCount = " << bufferFrames; @@ -109,7 +110,7 @@ void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) { int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof(opus_int16)); int decoded_frames = opus_decode(_decoder, nullptr, 0, reinterpret_cast(decodedBuffer.data()), - bufferFrames, 1 ); + bufferFrames, 1); if (decoded_frames >= 0) { diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index 124ca3e3e1..75b190b0dc 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -160,12 +160,12 @@ int AthenaOpusEncoder::getMaxBandwidth() const { return returnValue; } -void AthenaOpusEncoder::setMaxBandwidth(int maxbw) { +void AthenaOpusEncoder::setMaxBandwidth(int maxBandwidth) { assert(_encoder); - int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxbw)); + int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxBandwidth)); if (errorCode != OPUS_OK) { - qCWarning(encoder) << "Error when setting max bandwidth to " << maxbw << ": " << errorToString(errorCode); + qCWarning(encoder) << "Error when setting max bandwidth to " << maxBandwidth << ": " << errorToString(errorCode); } } diff --git a/plugins/opusCodec/src/OpusEncoder.h b/plugins/opusCodec/src/OpusEncoder.h index 107b0f82ca..10640bf409 100644 --- a/plugins/opusCodec/src/OpusEncoder.h +++ b/plugins/opusCodec/src/OpusEncoder.h @@ -16,11 +16,6 @@ class AthenaOpusEncoder : public Encoder { public: - const int DEFAULT_BITRATE = 128000; - const int DEFAULT_COMPLEXITY = 10; - const int DEFAULT_APPLICATION = OPUS_APPLICATION_VOIP; - const int DEFAULT_SIGNAL = OPUS_AUTO; - AthenaOpusEncoder(int sampleRate, int numChannels); ~AthenaOpusEncoder() override; @@ -66,6 +61,11 @@ public: private: + const int DEFAULT_BITRATE = 128000; + const int DEFAULT_COMPLEXITY = 10; + const int DEFAULT_APPLICATION = OPUS_APPLICATION_VOIP; + const int DEFAULT_SIGNAL = OPUS_AUTO; + int _opusSampleRate = 0; int _opusChannels = 0; int _opusExpectedLoss = 0; From 6bed25ee27c8fb5a111df5a5804ef3bcf48bffbf Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Thu, 16 Jan 2020 19:44:34 +0000 Subject: [PATCH 244/396] Formatting (bloody ide not doing qml) --- scripts/communityModules/chat/FloofChat.js | 3 +- scripts/communityModules/chat/FloofChat.qml | 32 ++++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 7859d95090..2e9a08f241 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -188,7 +188,6 @@ function go2(msg) { domainsList.forEach(function (domain) { if (domain["Domain Name"].toLowerCase().indexOf(msg.toLowerCase()) !== -1 && !dest) { dest = {"name": domain["Domain Name"], "url": domain["Visit"]}; - } }); return dest; @@ -217,7 +216,7 @@ function processChat(cmd) { if (msg.indexOf("/") === 0) { msg = msg.substring(1); var commandList = msg.split(" "); - var tempList = commandList.join(";'#[]").split(";'#[]"); + var tempList = commandList.concat(); tempList.shift(); var restOfMsg = tempList.join(" "); diff --git a/scripts/communityModules/chat/FloofChat.qml b/scripts/communityModules/chat/FloofChat.qml index cfc0b43abc..8d96bf7e42 100644 --- a/scripts/communityModules/chat/FloofChat.qml +++ b/scripts/communityModules/chat/FloofChat.qml @@ -30,19 +30,19 @@ Rectangle { } catch(e){ // } - if(!data.failed){ - if(data.cmd){ + if (!data.failed) { + if (data.cmd) { JSConsole.executeCommand(data.msg); } console.log(data.visible); - if(data.visible){ + if (data.visible) { thing.visible = true; textArea.focus = true; - } else if(!data.visible){ + } else if (!data.visible) { thing.visible = false; textArea.focus = false; } - if(data.history){ + if (data.history) { history = data.history; } } @@ -69,36 +69,36 @@ Rectangle { clip: false font.pointSize: 20 - function _onEnterPressed(event){ - sendMessage(JSON.stringify({type:"MSG",message:text,event:event})); + function _onEnterPressed(event) { + sendMessage(JSON.stringify({type:"MSG", message:text, event:event})); history.unshift(text); text = ""; hist = -1; } - function upPressed(event){ + function upPressed(event) { hist++; - if(hist > history.length-1){ + if (hist > history.length-1) { hist = history.length-1; } text = history[hist]; } - function downPressed(event){ + function downPressed(event) { hist--; - if(hist<-1){ + if (hist < -1) { hist = -1; } - if(hist===-1){ + if (hist === -1) { text = ""; } else{ text = history[hist]; } } - Keys.onReturnPressed: { _onEnterPressed(event) } - Keys.onEnterPressed: { _onEnterPressed(event) } - Keys.onUpPressed: { upPressed(event) } - Keys.onDownPressed: { downPressed(event) } + Keys.onReturnPressed: { _onEnterPressed(event); } + Keys.onEnterPressed: { _onEnterPressed(event); } + Keys.onUpPressed: { upPressed(event); } + Keys.onDownPressed: { downPressed(event); } } MouseArea { From 367c5f39dfc4e64f7ff159d863c7a19bb46a4295 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 16 Jan 2020 21:02:58 +0100 Subject: [PATCH 245/396] Finish removal of getRaw() and bit fields --- libraries/gpu/src/gpu/State.h | 127 +++++++++++++++++++++------------- 1 file changed, 78 insertions(+), 49 deletions(-) diff --git a/libraries/gpu/src/gpu/State.h b/libraries/gpu/src/gpu/State.h index 30c3bbdc05..ecb0043666 100755 --- a/libraries/gpu/src/gpu/State.h +++ b/libraries/gpu/src/gpu/State.h @@ -136,25 +136,26 @@ public: uint8 getWriteMask() const { return writeMask; } bool operator==(const DepthTest& right) const { - return writeMask == right.writeMask && enabled == right.enabled && function == right.function; + return + writeMask == right.writeMask && + enabled == right.enabled && + function == right.function; } bool operator!=(const DepthTest& right) const { - return writeMask != right.writeMask || enabled != right.enabled || function != right.function; + return !(right == *this); } operator QString() const { return QString("{ writeMask = %1, enabled = %2, function = %3 }").arg(writeMask).arg(enabled).arg(function); - } - }; struct StencilTest { - ComparisonFunction function : 4; - StencilOp failOp : 4; - StencilOp depthFailOp : 4; - StencilOp passOp : 4; + ComparisonFunction function; + StencilOp failOp; + StencilOp depthFailOp; + StencilOp passOp; int8 reference{ 0 }; uint8 readMask{ 0xff }; @@ -176,47 +177,56 @@ public: int8 getReference() const { return reference; } uint8 getReadMask() const { return readMask; } - int32 getRaw() const { return *(reinterpret_cast(this)); } - StencilTest(int32 raw) { *(reinterpret_cast(this)) = raw; } - bool operator==(const StencilTest& right) const { return getRaw() == right.getRaw(); } - bool operator!=(const StencilTest& right) const { return getRaw() != right.getRaw(); } + bool operator==(const StencilTest& right) const { + return + function == right.function && + failOp == right.failOp && + depthFailOp == right.depthFailOp && + passOp == right.passOp && + reference == right.reference && + readMask == right.readMask; + + } + + bool operator!=(const StencilTest &right) const { return !(right==*this); } }; - static_assert(sizeof(StencilTest) == sizeof(uint32_t), "StencilTest size check"); StencilTest stencilTestFront; struct StencilActivation { uint8 frontWriteMask = 0xFF; uint8 backWriteMask = 0xFF; - bool enabled : 1; - uint8 _spare1 : 7; - uint8 _spare2{ 0 }; + bool enabled; public: StencilActivation(bool enabled = false, uint8 frontWriteMask = 0xFF, uint8 backWriteMask = 0xFF) : - frontWriteMask(frontWriteMask), backWriteMask(backWriteMask), enabled(enabled), _spare1{ 0 } {} + frontWriteMask(frontWriteMask), backWriteMask(backWriteMask), enabled(enabled) {} bool isEnabled() const { return enabled; } uint8 getWriteMaskFront() const { return frontWriteMask; } uint8 getWriteMaskBack() const { return backWriteMask; } - int32 getRaw() const { return *(reinterpret_cast(this)); } - StencilActivation(int32 raw) { *(reinterpret_cast(this)) = raw; } - bool operator==(const StencilActivation& right) const { return getRaw() == right.getRaw(); } - bool operator!=(const StencilActivation& right) const { return getRaw() != right.getRaw(); } - }; + bool operator==(const StencilActivation& right) const { + return + frontWriteMask == right.frontWriteMask && + backWriteMask == right.backWriteMask && + enabled == right.enabled; + } - static_assert(sizeof(StencilActivation) == sizeof(uint32_t), "StencilActivation size check"); + bool operator!=(const StencilActivation& right) const { + return !(right == *this); + } + }; struct BlendFunction { // Using uint8 here will make the structure as a whole not align to 32 bits - uint16 enabled : 8; - BlendArg sourceColor : 4; - BlendArg sourceAlpha : 4; - BlendArg destColor : 4; - BlendArg destAlpha : 4; - BlendOp opColor : 4; - BlendOp opAlpha : 4; + uint16 enabled; + BlendArg sourceColor; + BlendArg sourceAlpha; + BlendArg destColor; + BlendArg destAlpha; + BlendOp opColor; + BlendOp opAlpha; public: BlendFunction(bool enabled, @@ -227,7 +237,7 @@ public: BlendOp operationAlpha, BlendArg destinationAlpha) : enabled(enabled), - sourceColor(sourceColor), sourceAlpha(sourceAlpha), + sourceColor(sourceColor), sourceAlpha(sourceAlpha), destColor(destinationColor), destAlpha(destinationAlpha), opColor(operationColor), opAlpha(operationAlpha) {} @@ -244,32 +254,51 @@ public: BlendArg getDestinationAlpha() const { return destAlpha; } BlendOp getOperationAlpha() const { return opAlpha; } - int32 getRaw() const { return *(reinterpret_cast(this)); } - BlendFunction(int32 raw) { *(reinterpret_cast(this)) = raw; } - bool operator==(const BlendFunction& right) const { return getRaw() == right.getRaw(); } - bool operator!=(const BlendFunction& right) const { return getRaw() != right.getRaw(); } - }; + bool operator==(const BlendFunction& right) const { + return + enabled == right.enabled && + sourceColor == right.sourceColor && + sourceAlpha == right.sourceAlpha && + destColor == right.destColor && + destAlpha == right.destAlpha && + opColor == right.opColor && + opAlpha == right.opAlpha; - static_assert(sizeof(BlendFunction) == sizeof(uint32_t), "BlendFunction size check"); + } + + bool operator!=(const BlendFunction& right) const { + return !(right == *this); + } + }; struct Flags { Flags() : frontFaceClockwise(false), depthClampEnable(false), scissorEnable(false), multisampleEnable(true), - antialisedLineEnable(true), alphaToCoverageEnable(false), _spare1(0) {} - bool frontFaceClockwise : 1; - bool depthClampEnable : 1; - bool scissorEnable : 1; - bool multisampleEnable : 1; - bool antialisedLineEnable : 1; - bool alphaToCoverageEnable : 1; - uint8 _spare1 : 2; + antialisedLineEnable(true), alphaToCoverageEnable(false) {} + bool frontFaceClockwise; + bool depthClampEnable; + bool scissorEnable; + bool multisampleEnable; + bool antialisedLineEnable; + bool alphaToCoverageEnable; - bool operator==(const Flags& right) const { return *(uint8*)this == *(uint8*)&right; } - bool operator!=(const Flags& right) const { return *(uint8*)this != *(uint8*)&right; } + + bool operator==(const Flags& right) const { + return + frontFaceClockwise == right.frontFaceClockwise && + depthClampEnable == right.depthClampEnable && + scissorEnable == right.scissorEnable && + multisampleEnable == right.multisampleEnable && + antialisedLineEnable == right.antialisedLineEnable && + alphaToCoverageEnable == right.alphaToCoverageEnable; + + } + + bool operator!=(const Flags& right) const { + return !(right == *this); + } }; - static_assert(sizeof(Flags) == sizeof(uint8), "Flags size check"); - // The Data class is the full explicit description of the State class fields value. // Useful for having one const static called Default for reference or for the gpu::Backend to keep track of the current value class Data { From cb78daa0b193a62819a9207aab1282211b9a66ad Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Thu, 16 Jan 2020 14:34:08 -0600 Subject: [PATCH 246/396] Delete trailing whitespace. --- plugins/opusCodec/src/OpusEncoder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/opusCodec/src/OpusEncoder.cpp b/plugins/opusCodec/src/OpusEncoder.cpp index 75b190b0dc..3408701633 100644 --- a/plugins/opusCodec/src/OpusEncoder.cpp +++ b/plugins/opusCodec/src/OpusEncoder.cpp @@ -147,7 +147,7 @@ int AthenaOpusEncoder::getVBRConstraint() const { void AthenaOpusEncoder::setVBRConstraint(int vbr_const) { assert(_encoder); int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_VBR_CONSTRAINT(vbr_const)); - + if (errorCode != OPUS_OK) { qCWarning(encoder) << "Error when setting VBR constraint to " << vbr_const << ": " << errorToString(errorCode); } @@ -163,7 +163,7 @@ int AthenaOpusEncoder::getMaxBandwidth() const { void AthenaOpusEncoder::setMaxBandwidth(int maxBandwidth) { assert(_encoder); int errorCode = opus_encoder_ctl(_encoder, OPUS_SET_MAX_BANDWIDTH(maxBandwidth)); - + if (errorCode != OPUS_OK) { qCWarning(encoder) << "Error when setting max bandwidth to " << maxBandwidth << ": " << errorToString(errorCode); } From bb51a000fb1e8a3217aa0e0b6d3163e8c965322a Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Fri, 17 Jan 2020 00:41:16 +0100 Subject: [PATCH 247/396] Code style fixes --- libraries/gpu/src/gpu/State.h | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/libraries/gpu/src/gpu/State.h b/libraries/gpu/src/gpu/State.h index ecb0043666..86bc5d4c5a 100755 --- a/libraries/gpu/src/gpu/State.h +++ b/libraries/gpu/src/gpu/State.h @@ -138,12 +138,12 @@ public: bool operator==(const DepthTest& right) const { return writeMask == right.writeMask && - enabled == right.enabled && - function == right.function; + enabled == right.enabled && + function == right.function; } bool operator!=(const DepthTest& right) const { - return !(right == *this); + return !(*this == right); } operator QString() const { @@ -179,12 +179,12 @@ public: bool operator==(const StencilTest& right) const { return - function == right.function && - failOp == right.failOp && + function == right.function && + failOp == right.failOp && depthFailOp == right.depthFailOp && - passOp == right.passOp && - reference == right.reference && - readMask == right.readMask; + passOp == right.passOp && + reference == right.reference && + readMask == right.readMask; } @@ -209,12 +209,12 @@ public: bool operator==(const StencilActivation& right) const { return frontWriteMask == right.frontWriteMask && - backWriteMask == right.backWriteMask && - enabled == right.enabled; + backWriteMask == right.backWriteMask && + enabled == right.enabled; } bool operator!=(const StencilActivation& right) const { - return !(right == *this); + return !(*this == right); } }; @@ -256,18 +256,18 @@ public: bool operator==(const BlendFunction& right) const { return - enabled == right.enabled && - sourceColor == right.sourceColor && - sourceAlpha == right.sourceAlpha && - destColor == right.destColor && - destAlpha == right.destAlpha && - opColor == right.opColor && - opAlpha == right.opAlpha; + enabled == right.enabled && + sourceColor == right.sourceColor && + sourceAlpha == right.sourceAlpha && + destColor == right.destColor && + destAlpha == right.destAlpha && + opColor == right.opColor && + opAlpha == right.opAlpha; } bool operator!=(const BlendFunction& right) const { - return !(right == *this); + return !(*this == right); } }; @@ -285,17 +285,17 @@ public: bool operator==(const Flags& right) const { return - frontFaceClockwise == right.frontFaceClockwise && - depthClampEnable == right.depthClampEnable && - scissorEnable == right.scissorEnable && - multisampleEnable == right.multisampleEnable && - antialisedLineEnable == right.antialisedLineEnable && + frontFaceClockwise == right.frontFaceClockwise && + depthClampEnable == right.depthClampEnable && + scissorEnable == right.scissorEnable && + multisampleEnable == right.multisampleEnable && + antialisedLineEnable == right.antialisedLineEnable && alphaToCoverageEnable == right.alphaToCoverageEnable; } bool operator!=(const Flags& right) const { - return !(right == *this); + return !(*this == right); } }; From f5fcb90cac1a310c15e5511080a8c9bb1a0ec928 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Thu, 16 Jan 2020 18:51:49 -0600 Subject: [PATCH 248/396] Revert "Removed obsolete default scripts + more branding changes." --- interface/src/Application.cpp | 4 ++-- libraries/entities/src/EntityItemProperties.cpp | 2 +- scripts/defaultScripts.js | 2 ++ scripts/system/create/edit.js | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ac884e7daf..1247facbf8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3185,7 +3185,7 @@ void Application::showLoginScreen() { QJsonObject loginData = {}; loginData["action"] = "login dialog popped up"; UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData); - _window->setWindowTitle("Project Athena"); + _window->setWindowTitle("High Fidelity"); } else { resumeAfterLoginDialogActionTaken(); } @@ -7067,7 +7067,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Project Athena Interface v0.86.0 K2 - " + QString buildVersion = " - Project Athena v0.86.0 K2 - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 9afaa5e85b..2b8f2b4c14 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1366,7 +1366,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * var METERS_TO_INCHES = 39.3701; * var entity = Entities.addEntity({ * type: "Web", - * sourceUrl: "https://projectathena.io/", + * sourceUrl: "https://highfidelity.com/", * position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.75, z: -4 })), * rotation: MyAvatar.orientation, * dimensions: { diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 07708ec509..795458f05d 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -24,7 +24,9 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/avatarapp.js", "system/makeUserConnection.js", "system/tablet-goto.js", + "system/marketplaces/marketplaces.js", "system/notifications.js", + "system/commerce/wallet.js", "system/create/edit.js", "system/dialTone.js", "system/firstPersonHMD.js", diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index ef07aa4d6e..c57f4bae50 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -427,7 +427,7 @@ const DEFAULT_ENTITY_PROPERTIES = { y: 0.9, z: 0.01 }, - sourceUrl: "https://projectathena.io/", + sourceUrl: "https://highfidelity.com/", dpi: 30, }, ParticleEffect: { From b072b90eef4d663b5b4305483357a1e2d679ae9c Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 17 Jan 2020 05:47:17 +0000 Subject: [PATCH 249/396] Proposed rpm build spec --- rpm/athena-assignment-client.service | 18 +++++ rpm/athena-assignment-client@.service | 20 +++++ rpm/athena-domain-server.service | 18 +++++ rpm/athena-domain-server@.service | 20 +++++ rpm/athena-ice-server.service | 18 +++++ rpm/athena-ice-server@.service | 20 +++++ rpm/athena-server.spec | 108 ++++++++++++++++++++++++++ rpm/athena-server.target | 11 +++ rpm/athena-server@.target | 11 +++ rpm/new-server | 48 ++++++++++++ 10 files changed, 292 insertions(+) create mode 100644 rpm/athena-assignment-client.service create mode 100644 rpm/athena-assignment-client@.service create mode 100644 rpm/athena-domain-server.service create mode 100644 rpm/athena-domain-server@.service create mode 100644 rpm/athena-ice-server.service create mode 100644 rpm/athena-ice-server@.service create mode 100644 rpm/athena-server.spec create mode 100644 rpm/athena-server.target create mode 100644 rpm/athena-server@.target create mode 100644 rpm/new-server diff --git a/rpm/athena-assignment-client.service b/rpm/athena-assignment-client.service new file mode 100644 index 0000000000..cbcb5038d8 --- /dev/null +++ b/rpm/athena-assignment-client.service @@ -0,0 +1,18 @@ +[Unit] +Description=Assignment client service for Athena server +After=network.target +PartOf=athena-server.target + +[Service] +Restart=always + +WorkingDirectory=/var/lib/athena +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" +User=athena +Group=athena +#LimitCORE=infinity +#ExecStart=/usr/share/athena/assignment-client -n 6 +ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-assignment-client@.service b/rpm/athena-assignment-client@.service new file mode 100644 index 0000000000..667ea6e96f --- /dev/null +++ b/rpm/athena-assignment-client@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Assignment client service for Athena server +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=always + +WorkingDirectory=/var/lib/athena +EnvironmentFile=/etc/athena/%i.conf +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +PrivateTmp=true +User=athena +Group=athena +#LimitCORE=infinity +#ExecStart=/usr/share/athena/assignment-client -n 6 +ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-domain-server.service b/rpm/athena-domain-server.service new file mode 100644 index 0000000000..453d8ee672 --- /dev/null +++ b/rpm/athena-domain-server.service @@ -0,0 +1,18 @@ +[Unit] +Description=Domain Server service for Athena +After=network.target +PartOf=athena-server.target + +[Service] +Restart=on-failure + +WorkingDirectory=/var/lib/athena +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" +User=athena +Group=athena +#LimitCORE=infinity +#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi' +ExecStart=/usr/share/athena/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-domain-server@.service b/rpm/athena-domain-server@.service new file mode 100644 index 0000000000..7d32e5b201 --- /dev/null +++ b/rpm/athena-domain-server@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Domain Server service for Athena +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=on-failure + +WorkingDirectory=/var/lib/athena +EnvironmentFile=/etc/athena/%i.conf +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +PrivateTmp=true +User=athena +Group=athena +#LimitCORE=infinity +#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi' +ExecStart=/usr/share/athena/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-ice-server.service b/rpm/athena-ice-server.service new file mode 100644 index 0000000000..628a59dd84 --- /dev/null +++ b/rpm/athena-ice-server.service @@ -0,0 +1,18 @@ +[Unit] +Description=Ice Server service for Athena +After=network.target +PartOf=athena-server.target + +[Service] +Restart=on-failure + +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" +WorkingDirectory=/var/lib/athena +User=athena +Group=athena +#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi' +#LimitCORE=infinity +ExecStart=/usr/share/athena/ice-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-ice-server@.service b/rpm/athena-ice-server@.service new file mode 100644 index 0000000000..0016667e58 --- /dev/null +++ b/rpm/athena-ice-server@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Ice Server service for Athena +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=on-failure + +EnvironmentFile=/etc/athena/%i.conf +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +PrivateTmp=true +WorkingDirectory=/var/lib/athena +User=athena +Group=athena +#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi' +#LimitCORE=infinity +ExecStart=/usr/share/athena/ice-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-server.spec b/rpm/athena-server.spec new file mode 100644 index 0000000000..f68b53d8ee --- /dev/null +++ b/rpm/athena-server.spec @@ -0,0 +1,108 @@ +#ATHENA=~/Athena rpmbuild --target x86_64 -bb athena-server.spec +Name: athena-server +Version: 0.86.0_K1_20200112_7584429 +Release: 4%{?dist} +Summary: Project Athena metaverse platform, based on the High Fidelity Engine. + +License: ASL 2.0 +URL: https://projectathena.io +Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder + +#BuildRequires: systemd-rpm-macros +BuildRequires: chrpath +Requires: alsa-lib, cups, glib2, gtk3, libdrm, libinput, libjpeg-turbo, libtiff, libxkbcommon, libxkbcommon-x11, mesa-libEGL, mesa-libGL, mesa-libgbm, pcre2, pcre2-utf16, sqlite, xkeyboard-config, zlib, at-spi2-core, dbus, fontconfig, harfbuzz, libICE, libSM, libicu, libmng, libpng, libproxy, libxcb, openssl, pcre, pulseaudio-libs, unixODBC, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm, libxcb, nss, jsoncpp, libxslt, libvpx, libicu, libxml2, opus, libicu, libwebp, libXtst +BuildArch: x86_64 +AutoReq: no +AutoProv: no + +%description +Project Athena allows creation and sharing of VR experiences. + The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. + + +%prep + + +%build + + +%install +rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT/etc/athena +install -m 0755 -t $RPM_BUILD_ROOT/etc/athena $ATHENA/source/rpm/new-server +install -d $RPM_BUILD_ROOT/usr/share/athena +install -m 0755 $ATHENA/build/assignment-client/assignment-client $RPM_BUILD_ROOT/usr/share/athena +install -m 0755 $ATHENA/build/domain-server/domain-server $RPM_BUILD_ROOT/usr/share/athena +#install -m 0755 $ATHENA/build/ice-server/ice-server $RPM_BUILD_ROOT/usr/share/athena +chrpath -d $RPM_BUILD_ROOT/usr/share/athena/* +install -d $RPM_BUILD_ROOT/usr/share/athena/lib +install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/qt5-install/lib/*.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/*.so.*.*.* +install -d $RPM_BUILD_ROOT/usr/lib/systemd/system +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server.target +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server@.target +cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/usr/share/athena + + +%files +%license $ATHENA/source/LICENSE +/etc/athena +/usr/share/athena +/usr/lib/systemd/system + + +%changelog + + +%post +# create users +getent passwd athena >/dev/numm 2>&1 || useradd -r -c "Project Athena" -d /var/lib/athena -U -M athena +#getent group athena >/dev/null 2>&1 || groupadd -r athena + +# create data folder +#mkdir -p /.local && chown root:athena /.local && chmod 775 /.local +#mkdir -p /.config && chown root:athena /.config && chmod 775 /.config +mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena + +ldconfig -n /usr/share/athena/lib +if [ ! -d "/var/lib/athena/default" ] +then + /etc/athena/new-server default 40100 +fi + +%systemd_post athena-assignment-client.service +%systemd_post athena-assignment-client@.service +%systemd_post athena-domain-server.service +%systemd_post athena-domain-server@.service +#%systemd_post athena-ice-server.service +#%systemd_post athena-ice-server@.service +%systemd_post athena-server.target +%systemd_post athena-server@.target + + +%preun +%systemd_preun athena-server.target +%systemd_preun athena-server@.target +%systemd_preun athena-assignment-client.service +%systemd_preun athena-assignment-client@.service +%systemd_preun athena-domain-server.service +%systemd_preun athena-domain-server@.service +#%systemd_preun athena-ice-server.service +#%systemd_preun athena-ice-server@.service + + +%postun +%systemd_postun_with_restart athena-server.target +%systemd_postun_with_restart athena-server@.target +%systemd_postun_with_restart athena-assignment-client.service +%systemd_postun_with_restart athena-assignment-client@.service +%systemd_postun_with_restart athena-domain-server.service +%systemd_postun_with_restart athena-domain-server@.service +#%systemd_postun_with_restart athena-ice-server.service +#%systemd_postun_with_restart athena-ice-server@.service diff --git a/rpm/athena-server.target b/rpm/athena-server.target new file mode 100644 index 0000000000..e3929b401b --- /dev/null +++ b/rpm/athena-server.target @@ -0,0 +1,11 @@ +[Unit] +Description=Athena virtual domain +Wants=athena-assignment-client.service +Wants=athena-domain-server.service +#Wants=athena-ice-server.service +After=athena-assignment-client.service +After=athena-domain-server.service +#After=athena-ice-server.service + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-server@.target b/rpm/athena-server@.target new file mode 100644 index 0000000000..8ac451ca80 --- /dev/null +++ b/rpm/athena-server@.target @@ -0,0 +1,11 @@ +[Unit] +Description=Athena virtual domain +Wants=athena-assignment-client@%i.service +Wants=athena-domain-server@%i.service +#Wants=athena-ice-server@%i.service +After=athena-assignment-client@%i.service +After=athena-domain-server@%i.service +#After=athena-ice-server@%i.service + +[Install] +WantedBy=multi-user.target diff --git a/rpm/new-server b/rpm/new-server new file mode 100644 index 0000000000..d4553d80e7 --- /dev/null +++ b/rpm/new-server @@ -0,0 +1,48 @@ +#!/bin/sh +if [ -z "$1" ] || [ -z "$2" ]; then + echo "new-server {name} {base-port}" + echo + echo "Sets up a new athena server with the specified name and base port number" + echo " {name} - a simple name used to identify the server to scripts (not used in the server configuration)" + echo " {base-port} - the base port number (default server is 40100). The metaverse port will be {base-port}+2" + echo " Four contiguous port numbers are allocated, these must not overlap with other running services on this machine" + echo + echo "Launching a server created by this script is done with:" + echo " sudo systemctl start athena-server@{name}.target" + echo + exit 1 +fi + +if [ "$(id -u)" -ne 0 ]; then + echo "new-server {name} {base-port}" + echo + echo 'This script must be run by root' >&2 + exit 1 +fi + +if [ -d "/var/lib/athena/$1" ]; then + echo "Path /var/lib/athena/$1 already exists" + echo + echo "Please remove this path first if you wish to recreate this server" + exit 2 +fi + +mkdir -p /var/lib/athena/$1/.local/share +ln -s ../.. /var/lib/athena/$1/.local/share/High\ Fidelity\ -\ dev +mkdir -p /var/lib/athena/$1/domain-server +echo "{\"metaverse\": {\"local_port\": $(($2 + 2))},\"version\": 2.4}" > /var/lib/athena/$1/domain-server/config.json +chown -R athena.athena /var/lib/athena/$1 + +echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/athena/$1.conf + +echo "A new athena server has been created with the name of '$1'" +echo +echo "To launch it:" +echo " sudo systemctl start athena-server@$1.target" +echo "To have it launch at system start:" +echo " sudo systemctl enable athena-server@$1.target" +echo "The server configuration console is available at:" +echo " http://localhost:$2" From a0fd53ae240e76d8fa0af6cbc8bdeb6c9ad61dfc Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Fri, 17 Jan 2020 14:58:40 -0600 Subject: [PATCH 250/396] Change installer name from Beta to Alpha --- cmake/macros/GenerateInstallers.cmake | 2 +- cmake/templates/NSIS.template.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 91f8d49426..83bdefeada 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -31,7 +31,7 @@ macro(GENERATE_INSTALLERS) set(CPACK_PACKAGE_NAME ${_DISPLAY_NAME}) set(CPACK_PACKAGE_VENDOR "Project Athena") set(CPACK_PACKAGE_VERSION ${BUILD_VERSION}) - set(CPACK_PACKAGE_FILE_NAME "ProjectAthena-Beta${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") + set(CPACK_PACKAGE_FILE_NAME "ProjectAthena-Alpha${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") set(CPACK_NSIS_DISPLAY_NAME ${_DISPLAY_NAME}) set(CPACK_NSIS_PACKAGE_NAME ${_DISPLAY_NAME}) if (PR_BUILD) diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 6f06b6b56d..0e4c2f3579 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -424,7 +424,7 @@ Function GetCampaignName Pop $0 ; Discard Path Pop $0 ; Recover filename ; Parse campaign out of the filename - ${RECaptureMatches} $0 "ProjectAthena-([^-]*-)Beta-.*" $0 0 + ${RECaptureMatches} $0 "ProjectAthena-([^-]*-)Alpha-.*" $0 0 ${If} $0 == 1 Pop $0 ; Recover campaign name StrCpy $0 $0 -1 0 ; Remove trailing - and copy to _RetVar From 68d10a2fe15ca4d90bdaad66a9cb772c555b4077 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sat, 18 Jan 2020 20:48:00 +0100 Subject: [PATCH 251/396] Make default copy constructors explicit Recent versions of gcc generate a warning without this --- interface/src/raypick/StylusPick.h | 2 ++ libraries/animation/src/AnimInverseKinematics.h | 1 + libraries/entities/src/EntityItemProperties.h | 2 ++ libraries/entities/src/SimulationOwner.h | 1 + libraries/shared/src/CubicHermiteSpline.h | 4 ++++ 5 files changed, 10 insertions(+) diff --git a/interface/src/raypick/StylusPick.h b/interface/src/raypick/StylusPick.h index 27514efefa..89444149d8 100644 --- a/interface/src/raypick/StylusPick.h +++ b/interface/src/raypick/StylusPick.h @@ -31,6 +31,8 @@ public: surfaceNormal = stylusPickResult.surfaceNormal; } + StylusPickResult& operator=(const StylusPickResult &right) = default; + IntersectionType type { NONE }; bool intersects { false }; QUuid objectID; diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index bcad7867cc..aa7e8fb69e 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -162,6 +162,7 @@ protected: const QString& typeVarIn, const QString& weightVarIn, float weightIn, const std::vector& flexCoefficientsIn, const QString& poleVectorEnabledVar, const QString& poleReferenceVectorVar, const QString& poleVectorVar); IKTargetVar(const IKTargetVar& orig); + AnimInverseKinematics::IKTargetVar& operator=(const AnimInverseKinematics::IKTargetVar&) = default; QString jointName; QString positionVar; diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 63d8183899..7ee6742e7f 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -121,6 +121,8 @@ public: static void propertiesToBlob(QScriptEngine& scriptEngine, const QUuid& myAvatarID, const EntityItemProperties& properties, QByteArray& blob); EntityItemProperties(EntityPropertyFlags desiredProperties = EntityPropertyFlags()); + EntityItemProperties(const EntityItemProperties&) = default; + virtual ~EntityItemProperties() = default; void merge(const EntityItemProperties& other); diff --git a/libraries/entities/src/SimulationOwner.h b/libraries/entities/src/SimulationOwner.h index 6f37066e47..4039719cd3 100644 --- a/libraries/entities/src/SimulationOwner.h +++ b/libraries/entities/src/SimulationOwner.h @@ -112,6 +112,7 @@ public: SimulationOwner(); SimulationOwner(const QUuid& id, uint8_t priority); + SimulationOwner(const SimulationOwner &) = default; const QUuid& getID() const { return _id; } const uint64_t& getExpiry() const { return _expiry; } diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index c83000996b..f91b25aa7a 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -19,6 +19,8 @@ public: CubicHermiteSplineFunctor(const CubicHermiteSplineFunctor& orig) : _p0(orig._p0), _m0(orig._m0), _p1(orig._p1), _m1(orig._m1) {} + CubicHermiteSplineFunctor& operator=(const CubicHermiteSplineFunctor&) = default; + virtual ~CubicHermiteSplineFunctor() {} // evalute the hermite curve at parameter t (0..1) @@ -85,6 +87,8 @@ public: memcpy(_values, orig._values, sizeof(float) * (NUM_SUBDIVISIONS + 1)); } + CubicHermiteSplineFunctorWithArcLength& operator=(const CubicHermiteSplineFunctorWithArcLength&) = default; + // given the spline parameter (0..1) output the arcLength of the spline up to that point. float arcLength(float t) const { float index = t * NUM_SUBDIVISIONS; From d0dc041275ae9b0eae64a5776159bfbcdba35bc5 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 19 Jan 2020 11:24:51 +0100 Subject: [PATCH 252/396] Another default operator= and copy constructor --- libraries/image/src/image/Image.h | 2 +- libraries/shared/src/shared/MediaTypeLibrary.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index dd39383dfb..14aa12d11a 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -59,7 +59,7 @@ namespace image { Image() : _dims(0,0) {} Image(int width, int height, Format format); Image(const QImage& data) : _packedData(data), _dims(data.width(), data.height()), _format((Format)data.format()) {} - + Image(const Image &other) = default; void operator=(const QImage& other) { _packedData = other; _floatData.clear(); diff --git a/libraries/shared/src/shared/MediaTypeLibrary.h b/libraries/shared/src/shared/MediaTypeLibrary.h index c87da01fa1..d4931c1601 100644 --- a/libraries/shared/src/shared/MediaTypeLibrary.h +++ b/libraries/shared/src/shared/MediaTypeLibrary.h @@ -48,6 +48,7 @@ public: webMediaTypes(mediaType.webMediaTypes), fileSignatures(mediaType.fileSignatures) { } + MediaType& operator=(const MediaType&) = default; static MediaType NONE; From e5517c4216662a3e5700b11d7532e38210b34060 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 19 Jan 2020 12:22:41 -0600 Subject: [PATCH 253/396] Update BUILD_LINUX.md Fix python installation intructions. Remove redundant instructions. Since we are not using tags, instruct users to compile from kasen/core. Add instructions for a faster compile. Add instruction for the HIFI_VCPKG_BASE environment variable. Style fixes. --- BUILD_LINUX.md | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 41f4238f0e..6b8f4fad1e 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -14,60 +14,58 @@ sudo add-apt-repository universe sudo apt-get update ``` #### Install build tools: -1. First update the repositiories: +- First update the repositiories: ```bash sudo apt-get update -y sudo apt-get upgrade -y ``` -1. git +- git ```bash sudo apt-get install git -y ``` Verify by git --version -1. g++ +- g++ ```bash sudo apt-get install g++ -y ``` Verify by g++ --version -1. *Ubuntu 18.04* cmake +- *Ubuntu 18.04* cmake ```bash sudo apt-get install cmake -y ``` Verify by cmake --version -1. *Ubuntu 16.04* cmake +- *Ubuntu 16.04* cmake ```bash wget https://cmake.org/files/v3.14/cmake-3.14.2-Linux-x86_64.sh sudo sh cmake-3.14.2-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir ``` #### Install build dependencies: -1. OpenSSL +- OpenSSL ```bash sudo apt-get install libssl-dev ``` Verify with `openssl version` -1. OpenGL -Verify (first install mesa-utils - `sudo apt install mesa-utils -y`) by `glxinfo | grep "OpenGL version"` +- OpenGL ```bash sudo apt-get install libgl1-mesa-dev -y sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 ``` +- Verify OpenGL: + - First install mesa-utils with the command `sudo apt install mesa-utils -y` + - Then run `glxinfo | grep "OpenGL version"` #### To compile interface in a server you must install: ```bash sudo apt-get -y install libpulse0 libnss3 libnspr4 libfontconfig1 libxcursor1 libxcomposite1 libxtst6 libxslt1.1 ``` -1. Misc dependencies +- Misc dependencies ```bash sudo apt-get install libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack0 libjack-dev libxrandr-dev libudev-dev libssl-dev zlib1g-dev ``` -1. To compile interface in a server you must install: +- Install Python 3 and required packages ```bash -sudo apt-get -y install libpulse0 libnss3 libnspr4 libfontconfig1 libxcursor1 libxcomposite1 libxtst6 libxslt1.1 +sudo apt-get install python python3 python3-distro ``` -1. Install Python 3 and required packages -```bash -sudo apt-get install python3 python3-distro -``` -1. Install node, required to build the jsdoc documentation +- Install node, required to build the jsdoc documentation ```bash sudo apt-get install nodejs ``` @@ -82,12 +80,11 @@ git clone https://github.com/kasenvr/project-athena.git To compile a RELEASE version checkout the tag you need getting a list of all tags: ```bash git fetch -a -git tag ``` Then checkout last tag with: ```bash -git checkout tag/1.0 +git checkout kasen/core ``` ### Compiling @@ -104,7 +101,7 @@ Prepare makefiles: cmake .. ``` -* If cmake fails with a vcpkg error - delete /tmp/hifi/vcpkg. +- If cmake fails with a vcpkg error - delete /tmp/hifi/vcpkg. Start compilation of the server and get a cup of coffee: ```bash @@ -116,6 +113,14 @@ To compile interface: make interface ``` +The commands above will compile with a single thread. If you have enough memory, +you can decrease your build time using the `-j` flag. Since most x64 CPUs +support two threads per core, this works out to CPU_COUNT*2. If you have a 2 +core machine, you could use: +``` +make -j4 interface +``` + In a server, it does not make sense to compile interface ### Running the software @@ -143,6 +148,12 @@ Running interface: Go to localhost in the running interface. +#### Notes + +If your goal is to setup a development environment, it is desirable to set the +directory that vcpkg builds to via the `HIFI_VCPKG_BASE` environment variable. +By default, vcpkg will build in the system `/tmp` directory. + ##### Ubuntu 18.04 only In Ubuntu 18.04 there is a problem related with NVidia driver library version. From 1d5d3e7075956af7e959112ab7c26a7a8f7cc5d3 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 19 Jan 2020 15:15:50 -0600 Subject: [PATCH 254/396] Update BUILD_LINUX.md - Fixed missing colons. - Fixed refering to tag instead of branch. - Since we're using the `kasen\core` branch, changed RELEASE to DEV. - Fixed vcpkg environment variable instructions. --- BUILD_LINUX.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 6b8f4fad1e..f2396dfc46 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -40,12 +40,12 @@ wget https://cmake.org/files/v3.14/cmake-3.14.2-Linux-x86_64.sh sudo sh cmake-3.14.2-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir ``` #### Install build dependencies: -- OpenSSL +- OpenSSL: ```bash sudo apt-get install libssl-dev ``` Verify with `openssl version` -- OpenGL +- OpenGL: ```bash sudo apt-get install libgl1-mesa-dev -y sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 @@ -57,32 +57,32 @@ sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/l ```bash sudo apt-get -y install libpulse0 libnss3 libnspr4 libfontconfig1 libxcursor1 libxcomposite1 libxtst6 libxslt1.1 ``` -- Misc dependencies +- Misc dependencies: ```bash sudo apt-get install libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack0 libjack-dev libxrandr-dev libudev-dev libssl-dev zlib1g-dev ``` -- Install Python 3 and required packages +- Install Python 3 and required packages: ```bash sudo apt-get install python python3 python3-distro ``` -- Install node, required to build the jsdoc documentation +- Install node, required to build the jsdoc documentation: ```bash sudo apt-get install nodejs ``` -### Get code and checkout the tag you need +### Get code and checkout the branch you need Clone this repository: ```bash git clone https://github.com/kasenvr/project-athena.git ``` -To compile a RELEASE version checkout the tag you need getting a list of all tags: +To compile a DEV version checkout the branch you need. To get a list of all tags: ```bash git fetch -a ``` -Then checkout last tag with: +Then checkout the main branch with: ```bash git checkout kasen/core ``` @@ -121,7 +121,7 @@ core machine, you could use: make -j4 interface ``` -In a server, it does not make sense to compile interface +In a server, it does not make sense to compile interface. ### Running the software @@ -150,7 +150,7 @@ Go to localhost in the running interface. #### Notes -If your goal is to setup a development environment, it is desirable to set the +If your goal is to setup a development environment, it is desirable to set up the directory that vcpkg builds to via the `HIFI_VCPKG_BASE` environment variable. By default, vcpkg will build in the system `/tmp` directory. From 997abf654345261572acd5d071bddcfa914deda3 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 19 Jan 2020 15:40:23 -0600 Subject: [PATCH 255/396] Remove logging statement. --- plugins/opusCodec/src/OpusDecoder.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/opusCodec/src/OpusDecoder.cpp b/plugins/opusCodec/src/OpusDecoder.cpp index 40e4954cb3..e3e4e3645a 100644 --- a/plugins/opusCodec/src/OpusDecoder.cpp +++ b/plugins/opusCodec/src/OpusDecoder.cpp @@ -73,9 +73,6 @@ void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &deco decodedBuffer.resize(bufferSize); int bufferFrames = decodedBuffer.size() / _opusNumChannels / static_cast(sizeof(opus_int16)); - - qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " - << decodedBuffer.size() << "; frameCount = " << bufferFrames; int decoded_frames = opus_decode(_decoder, reinterpret_cast(encodedBuffer.data()), encodedBuffer.length(), reinterpret_cast(decodedBuffer.data()), bufferFrames, 0); From 65e2037c6952731c93292d88be2550c6d2800653 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 19 Jan 2020 17:06:35 -0600 Subject: [PATCH 256/396] Fixed "setup" oops in BUILD-LINUX.md --- BUILD_LINUX.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index f2396dfc46..cc133d4c83 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -150,7 +150,7 @@ Go to localhost in the running interface. #### Notes -If your goal is to setup a development environment, it is desirable to set up the +If your goal is to set up a development environment, it is desirable to set the directory that vcpkg builds to via the `HIFI_VCPKG_BASE` environment variable. By default, vcpkg will build in the system `/tmp` directory. From 57a3e2c244c6ce3cdab4ac69d5ebcd6e0f3a005d Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Mon, 20 Jan 2020 15:01:42 -0600 Subject: [PATCH 257/396] Requested changes. - Changed `-j` make flag instructions. - Change vcpkg environment variable instructions. --- BUILD_LINUX.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index cc133d4c83..5b1a49abeb 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -115,8 +115,8 @@ make interface The commands above will compile with a single thread. If you have enough memory, you can decrease your build time using the `-j` flag. Since most x64 CPUs -support two threads per core, this works out to CPU_COUNT*2. If you have a 2 -core machine, you could use: +support two threads per core, this works out to CPU_COUNT*2. As an example, if +you have a 2 core machine, you could use: ``` make -j4 interface ``` @@ -151,7 +151,8 @@ Go to localhost in the running interface. #### Notes If your goal is to set up a development environment, it is desirable to set the -directory that vcpkg builds to via the `HIFI_VCPKG_BASE` environment variable. +directory that vcpkg builds into with the `HIFI_VCPKG_BASE` environment variable. +For example, you might set `HIFI_VCPKG_BASE` to `/home/$USER/vcpkg`. By default, vcpkg will build in the system `/tmp` directory. ##### Ubuntu 18.04 only From bd066adbf620cae05e246e6b4fa8f2c6705659e2 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 20 Jan 2020 16:03:48 -0500 Subject: [PATCH 258/396] Whitelist toggle not working c++ side. --- .../security/EntityScriptQMLWhitelist.qml | 168 ++++++++++++------ interface/src/Menu.cpp | 3 +- libraries/script-engine/src/ScriptEngine.cpp | 18 +- 3 files changed, 128 insertions(+), 61 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml index aa30b5d014..ff2f76f2f7 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml @@ -8,7 +8,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -// Security Settings for the Entity Script Whitelist +// Security Settings for the Entity Script QML Whitelist import Hifi 1.0 as Hifi import QtQuick 2.8 @@ -21,38 +21,55 @@ import "../../../windows" Rectangle { + id: "parentBody"; + property var checkboxReady: "false"; - function getWhitelistAsText() { - var whitelist = Settings.getValue("private/settingsSafeURLS"); - var arrayWhitelist = whitelist.split(","); - var whitelistText = arrayWhitelist.join("\n"); - return whitelistText; - } + function getWhitelistAsText() { + var whitelist = Settings.getValue("private/settingsSafeURLS"); + var arrayWhitelist = whitelist.split(","); + var whitelistText = arrayWhitelist.join("\n"); + return whitelistText; + } - function setWhitelistAsText(whitelistText) { - Settings.setValue("private/settingsSafeURLS", whitelistText.text); - - var originalSetString = whitelistText.text; - var originalSet = originalSetString.split(' ').join(''); - - var check = Settings.getValue("private/settingsSafeURLS"); - var arrayCheck = check.split(","); - var textCheck = arrayCheck.join("\n"); - - if(textCheck == originalSet) { - setWhitelistSuccess(true); - } else { - setWhitelistSuccess(false); - } - } + function setWhitelistAsText(whitelistText) { + Settings.setValue("private/settingsSafeURLS", whitelistText.text); + + var originalSetString = whitelistText.text; + var originalSet = originalSetString.split(' ').join(''); + + var check = Settings.getValue("private/settingsSafeURLS"); + var arrayCheck = check.split(","); + var textCheck = arrayCheck.join("\n"); + + if (textCheck == originalSet) { + setWhitelistSuccess(true); + } else { + setWhitelistSuccess(false); + } + } - function setWhitelistSuccess(success) { - if(success) { - notificationText.text = "Successfully saved settings."; - } else { - notificationText.text = "Error! Settings not saved."; - } - } + function setWhitelistSuccess(success) { + if (success) { + notificationText.text = "Successfully saved settings."; + } else { + notificationText.text = "Error! Settings not saved."; + } + } + + function toggleWhitelist(enabled) { + Settings.setValue("private/whitelistEnabled", enabled); + console.info("NANI?",enabled); + } + + function initCheckbox() { + var check = Settings.getValue("private/whitelistEnabled"); + + console.info("Triggered init. Val:", check); + if (check == "true") { + whiteListEnabled.checked = "true"; + parentBody.checkboxReady = "true"; + } + } anchors.fill: parent @@ -60,23 +77,51 @@ Rectangle { height: 120; color: "#80010203"; - HifiStylesUit.RalewayRegular { - id: titleText; - text: "Entity Script Whitelist" - // Text size - size: 24; - // Style - color: "white"; - elide: Text.ElideRight; - // Anchors - anchors.top: parent.top; - anchors.left: parent.left; - anchors.leftMargin: 20; - anchors.right: parent.right; - anchors.rightMargin: 20; - height: 60; - } - + HifiStylesUit.RalewayRegular { + id: titleText; + text: "Entity Script / QML Whitelist" + // Text size + size: 24; + // Style + color: "white"; + elide: Text.ElideRight; + // Anchors + anchors.top: parent.top; + anchors.left: parent.left; + anchors.leftMargin: 20; + anchors.right: parent.right; + anchors.rightMargin: 20; + height: 60; + + CheckBox { + Component.onCompleted: { + initCheckbox(); + } + + id: whiteListEnabled; + + anchors.right: parent.right; + anchors.top: parent.top; + anchors.topMargin: 10; + onCheckedChanged: { + console.info("Triggered.0"); + if (parentBody.checkboxReady == "true") { + console.info("Resolved.0"); + toggleWhitelist(whiteListEnabled.checked) + } + } + + Label { + text: "Enabled" + color: "white" + font.pixelSize: 18; + anchors.right: parent.left; + anchors.top: parent.top; + anchors.topMargin: 10; + } + } + } + Rectangle { id: textAreaRectangle; color: "black"; @@ -129,30 +174,39 @@ Rectangle { id: notificationText; text: "" // Text size - size: 14; + size: 16; // Style color: "white"; elide: Text.ElideLeft; // Anchors - anchors.right: parent.right; - anchors.rightMargin: 130; + anchors.right: parent.left; + anchors.rightMargin: 10; } } HifiStylesUit.RalewayRegular { id: descriptionText; - text: "Separate your URLs by line, not commas. Example: - https://google.com/ - https://bing.com/ - https://mydomain.here/ - \nEnsure there are no spaces or whitespace. - \nFor QML files, you can only whitelist each file individually - ending with '.qml'." + text: +"The whitelist checks scripts/QML as it is loaded.
    +Therefore, if a script is cached or has no reason to load again,
    +then removing it from the whitelist will not be effective until
    +it is reloaded.
    +Separate your whitelisted domains by line, not commas. e.g. +
    + https://google.com/
    + hifi://the-spot/
    + 127.0.0.1
    + https://mydomain.here/ +
    +Ensure there are no spaces or whitespace.

    +For QML files, you can only whitelist each file individually
    +ending with '.qml'." // Text size size: 16; // Style color: "white"; elide: Text.ElideRight; + textFormat: Text.RichText; // Anchors anchors.top: parent.bottom; anchors.topMargin: 90; diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index b0e5bbe8de..6d3e8454ba 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -287,12 +287,13 @@ Menu::Menu() { } }); - // Settings > Entity Script Whitelist + // Settings > Entity Script / QML Whitelist action = addActionToQMenuAndActionHash(settingsMenu, "Entity Script / QML Whitelist"); connect(action, &QAction::triggered, [] { auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); auto hmd = DependencyManager::get(); + DependencyManager::get()->clearCache(); tablet->pushOntoStack("hifi/dialogs/security/EntityScriptQMLWhitelist.qml"); if (!hmd->getShouldShowTablet()) { diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index de7fc488aa..4cefdb0946 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2333,7 +2333,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co if (isURL) { setParentURL(scriptOrURL); } - + // SANITY/PERFORMANCE CHECK USING SANDBOX const int SANDBOX_TIMEOUT = 0.25 * MSECS_PER_SECOND; BaseScriptEngine sandbox; @@ -2369,11 +2369,23 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co QList safeURLPrefixes = { "file:///", "atp:", "cache:" }; safeURLPrefixes += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); - // IF WHITELIST IS DISABLED IN SETTINGS - bool whitelistEnabled = Setting::Handle("private/whitelistEnabled", true).get(); + // ENTITY SCRIPT WHITELIST TOGGLE CHECK + Setting::Handle whitelistEnabledSetting{"private/whitelistEnabled", true}; // Assume it is enabled. + bool whitelistEnabled = whitelistEnabledSetting.get(); + + // QVariant whitelistEnabledExists = Setting::Handle("private/whitelistEnabled", false).get(); + if (whitelistEnabled) { + whitelistEnabledSetting.set(true); + qCDebug(scriptengine) << "Whitelist toggle setting does not exist. Creating setting now."; + } else { + qCDebug(scriptengine) << "Whitelist toggle setting does not exist. Creating setting now."; + whitelistEnabledSetting.set(false); + } + if (!whitelistEnabled) { passList = true; } + qCDebug(scriptengine) << "Whitelist Enabled: " << whitelistEnabled; // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); From d32fc6ab8672a6b8f424d28678c1c7c3deda128a Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 21 Jan 2020 22:02:53 +0000 Subject: [PATCH 259/396] Fixed url parsing breaking with text formatting! <3 --- scripts/communityModules/chat/FloofChat.html | 48 +++++++++++++++++--- scripts/communityModules/chat/FloofChat.js | 20 ++++++-- 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index ccfc547b2e..feca052665 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -52,6 +52,22 @@ var $ChatLog; // The scrolling chat log. var $ChatInputText; // The text field for entering text. var userName; + var urlRegEx = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;,:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+,~%\/\.\w\-]*)?\??(?:[\-\+=&;,:%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g; + + function reverseMatches(msg) { + var con = []; + var matches = msg.match(urlRegEx); + if (matches === null) { + matches = []; + } + for (var i = 0; i <= matches.length; i++) { + var sp = msg.split(matches[i], 2); + console.log(sp); + con.push(sp[0]); + msg = sp[1]; + } + return con; + } //Start George Function //Function provided by George Deac @@ -62,11 +78,30 @@ $.fn.linky = function (options) { return this.each(function () { - var $el = $(this), - linkifiedContent = _linkify($el, options); - var formattedContent = replaceFormatting(linkifiedContent); + var $el = $(this); + var content = $el.html(); - $el.html(formattedContent); + var match = content.match(urlRegEx); + var matchLength = match === null ? 0 : match.length; + var cons = reverseMatches(content); + + var con = []; + var tent = []; + var con_tent = []; + + for (var i = 0; i < matchLength; i++) { + tent.push(_linkify(match[i], options)); + } + + for (var i = 0; i < cons.length; i++) { + con.push(replaceFormatting(cons[i])); + } + + for (var i = 0; i < con.length; i++) { + con_tent.push(con[i], tent[i]); + } + + $el.html(con_tent.join("")); }); }; @@ -92,9 +127,8 @@ linkTo: "twitter" // Let's default to Twitter }, extendedOptions = $.extend(defaultOptions, options), - elContent = $el.html(), + elContent = $el, // Regular expression courtesy of Matthew O'Riordan, see: http://goo.gl/3syEKK - urlRegEx = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;,:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+,~%\/\.\w\-]*)?\??(?:[\-\+=&;,:%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g, matches; // Linkifying URLs @@ -121,7 +155,7 @@ // For any URLs present, unless they are already identified within // an `a` element, linkify them. function _linkifyUrls(matches, $el) { - var elContent = $el.html(); + var elContent = $el; $.each(matches, function () { diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 2e9a08f241..8028fd95d9 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -112,10 +112,15 @@ function connectWebSocket(timeout) { console.log('disconnected'); timeout = timeout | 0; - if (!shutdownBool && timeout < (30 * 1000)) { + if (!shutdownBool) { + if (timeout > (30 * 1000)) { + timeout = 30 * 1000; + } else if (timeout < (30 * 1000)) { + timeout += 1000; + } Script.setTimeout(function () { connectWebSocket(timeout); - }, timeout + 1000); + }, timeout); } else { wsReady = -1; } @@ -128,13 +133,18 @@ function sendWS(msg, timeout) { ws.send(JSON.stringify(msg)); } else { timeout = timeout | 0; - if (!shutdownBool && timeout < (30 * 1000)) { + if (!shutdownBool) { + if (timeout > (30 * 1000)) { + timeout = 30 * 1000; + } else if (timeout < (30 * 1000)) { + timeout += 1000; + } Script.setTimeout(function () { if (wsReady === -1) { connectWebSocket(); } sendWS(msg, timeout); - }, timeout + 1000); + }, timeout); } } } @@ -181,7 +191,7 @@ function go2(msg) { var dest = false; var domainsList = []; try { - domainsList = Script.require("http://metaverse.darlingvr.club:8081/goto.json"); + domainsList = Script.require(gotoJSONUrl + "?" + Date.now()); } catch (e) { // } From 553b7d1f38020fbfd4984f56e8f0b14ae7174946 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Tue, 21 Jan 2020 22:54:35 +0000 Subject: [PATCH 260/396] Code Review Changes --- scripts/communityModules/chat/FloofChat.html | 29 ++++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index feca052665..23c30adf69 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -55,18 +55,17 @@ var urlRegEx = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;,:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+,~%\/\.\w\-]*)?\??(?:[\-\+=&;,:%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g; function reverseMatches(msg) { - var con = []; + var result = []; var matches = msg.match(urlRegEx); if (matches === null) { matches = []; } for (var i = 0; i <= matches.length; i++) { - var sp = msg.split(matches[i], 2); - console.log(sp); - con.push(sp[0]); - msg = sp[1]; + var split = msg.split(matches[i], 2); + result.push(split[0]); + msg = split[1]; } - return con; + return result; } //Start George Function @@ -83,25 +82,25 @@ var match = content.match(urlRegEx); var matchLength = match === null ? 0 : match.length; - var cons = reverseMatches(content); + var messageParts = reverseMatches(content); - var con = []; - var tent = []; - var con_tent = []; + var messageFormatted = []; + var urlLinkified = []; + var completeMessage = []; for (var i = 0; i < matchLength; i++) { - tent.push(_linkify(match[i], options)); + urlLinkified.push(_linkify(match[i], options)); } - for (var i = 0; i < cons.length; i++) { - con.push(replaceFormatting(cons[i])); + for (var i = 0; i < messageParts.length; i++) { + messageFormatted.push(replaceFormatting(messageParts[i])); } for (var i = 0; i < con.length; i++) { - con_tent.push(con[i], tent[i]); + completeMessage.push(messageFormatted[i], urlLinkified[i]); } - $el.html(con_tent.join("")); + $el.html(completeMessage.join("")); }); }; From f77f629cad671be922020cc7c86bff153f99dab9 Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Wed, 22 Jan 2020 02:56:53 +0000 Subject: [PATCH 261/396] Fixed bug caused by code review changes uwu --- scripts/communityModules/chat/FloofChat.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index 23c30adf69..04410ff44b 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -96,7 +96,7 @@ messageFormatted.push(replaceFormatting(messageParts[i])); } - for (var i = 0; i < con.length; i++) { + for (var i = 0; i < messageFormatted.length; i++) { completeMessage.push(messageFormatted[i], urlLinkified[i]); } From 61943d0edbdfee351f861d819e699edbe1ac3564 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 21 Jan 2020 22:51:30 -0500 Subject: [PATCH 262/396] non-working state --- libraries/script-engine/src/ScriptEngine.cpp | 10 ---------- libraries/script-engine/src/ScriptEngine.h | 2 ++ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 4cefdb0946..4c46210b3c 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2370,18 +2370,8 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co safeURLPrefixes += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); // ENTITY SCRIPT WHITELIST TOGGLE CHECK - Setting::Handle whitelistEnabledSetting{"private/whitelistEnabled", true}; // Assume it is enabled. bool whitelistEnabled = whitelistEnabledSetting.get(); - // QVariant whitelistEnabledExists = Setting::Handle("private/whitelistEnabled", false).get(); - if (whitelistEnabled) { - whitelistEnabledSetting.set(true); - qCDebug(scriptengine) << "Whitelist toggle setting does not exist. Creating setting now."; - } else { - qCDebug(scriptengine) << "Whitelist toggle setting does not exist. Creating setting now."; - whitelistEnabledSetting.set(false); - } - if (!whitelistEnabled) { passList = true; } diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 94381ede02..6bd722e077 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -973,6 +973,8 @@ protected: Setting::Handle _enableExtendedJSExceptions { _SETTINGS_ENABLE_EXTENDED_EXCEPTIONS, true }; + Setting::Handle whitelistEnabledSetting { "DELME/whitelistEnabled", false }; // Set to false if not exist. + QWeakPointer _scriptEngines; }; From 6c81f597af58d63f53ab1a66041fb6753362084c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 22 Jan 2020 20:55:50 +1300 Subject: [PATCH 263/396] Display vertical scrollbar in Settings dialogs that scroll --- interface/resources/qml/hifi/audio/Audio.qml | 4 +- .../tabletWindows/TabletPreferencesDialog.qml | 45 ++++++++++++++++++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/audio/Audio.qml b/interface/resources/qml/hifi/audio/Audio.qml index eef339b854..2f5ac68b4b 100644 --- a/interface/resources/qml/hifi/audio/Audio.qml +++ b/interface/resources/qml/hifi/audio/Audio.qml @@ -44,7 +44,6 @@ Rectangle { return (root.parent !== null) && root.parent.objectName == "loader"; } - property bool isVR: AudioScriptingInterface.context === "VR" property real rightMostInputLevelPos: root.width //placeholder for control sizes and paddings @@ -128,7 +127,8 @@ Rectangle { anchors.top: flickView.top; anchors.right: flickView.right; anchors.bottom: flickView.bottom; - anchors.rightMargin: -verticalScrollWidth; //compensate flickView's right margin + anchors.rightMargin: 2 + background: Item { implicitWidth: verticalScrollWidth; Rectangle { diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index 66661843e6..7e672aafaa 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -9,6 +9,7 @@ // import QtQuick 2.5 +import QtQuick.Controls 2.2 import "." import "./preferences" @@ -33,7 +34,10 @@ Item { property bool gotoPreviousAppFromScript: false property var tablet; - + + readonly property real verticalScrollWidth: 10 + readonly property real verticalScrollShaft: 8 + function saveAll() { dialog.forceActiveFocus(); // Accept any text box edits in progress. @@ -103,6 +107,43 @@ Item { height: parent.height contentWidth: parent.width contentHeight: getSectionsHeight(); + + anchors.top: main.top + anchors.bottom: main.bottom + + ScrollBar.vertical: ScrollBar { + policy: ScrollBar.AlwaysOn + parent: scrollView.parent + anchors.top: scrollView.top + anchors.right: scrollView.right + anchors.bottom: scrollView.bottom + anchors.rightMargin: 2 + + background: Item { + implicitWidth: verticalScrollWidth + Rectangle { + color: hifi.colors.darkGray30; + radius: 4 + anchors { + fill: parent + } + } + } + contentItem: Item { + implicitWidth: verticalScrollShaft + Rectangle { + radius: verticalScrollShaft/2 + color: hifi.colors.white30 + anchors { + fill: parent + leftMargin: 1 // Finesse size and position. + topMargin: 1 + bottomMargin: 1 + } + } + } + } + Column { width: 480 Component { @@ -183,7 +224,7 @@ Item { for (var i = 0; i < sections.length; i++) { totalHeight += sections[i].height + sections[i].getPreferencesHeight(); } - var bottomPadding = 170; + var bottomPadding = 30; return (totalHeight + bottomPadding); } } From 98473abbb4fe95182b53ee8eb050244fc03647c9 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 22 Jan 2020 11:29:37 -0500 Subject: [PATCH 264/396] QML works, C++ works but does a manual set to true, does not see updates from QML set setting. --- .../security/EntityScriptQMLWhitelist.qml | 59 +++++++++---------- libraries/script-engine/src/ScriptEngine.cpp | 4 +- libraries/script-engine/src/ScriptEngine.h | 5 +- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml index ff2f76f2f7..c9c56bfe81 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml @@ -21,8 +21,7 @@ import "../../../windows" Rectangle { - id: "parentBody"; - property var checkboxReady: "false"; + id: parentBody; function getWhitelistAsText() { var whitelist = Settings.getValue("private/settingsSafeURLS"); @@ -60,14 +59,13 @@ Rectangle { Settings.setValue("private/whitelistEnabled", enabled); console.info("NANI?",enabled); } - + function initCheckbox() { var check = Settings.getValue("private/whitelistEnabled"); console.info("Triggered init. Val:", check); - if (check == "true") { - whiteListEnabled.checked = "true"; - parentBody.checkboxReady = "true"; + if (check == true) { + whitelistEnabled.toggle(); } } @@ -94,32 +92,29 @@ Rectangle { height: 60; CheckBox { - Component.onCompleted: { - initCheckbox(); - } - - id: whiteListEnabled; - - anchors.right: parent.right; - anchors.top: parent.top; - anchors.topMargin: 10; - onCheckedChanged: { - console.info("Triggered.0"); - if (parentBody.checkboxReady == "true") { - console.info("Resolved.0"); - toggleWhitelist(whiteListEnabled.checked) - } - } - - Label { - text: "Enabled" - color: "white" - font.pixelSize: 18; - anchors.right: parent.left; - anchors.top: parent.top; - anchors.topMargin: 10; - } - } + Component.onCompleted: { + initCheckbox(); + } + + id: whitelistEnabled; + + anchors.right: parent.right; + anchors.top: parent.top; + anchors.topMargin: 10; + onToggled: { + console.info("Triggered.0"); + toggleWhitelist(whitelistEnabled.checked) + } + + Label { + text: "Enabled" + color: "white" + font.pixelSize: 18; + anchors.right: parent.left; + anchors.top: parent.top; + anchors.topMargin: 10; + } + } } Rectangle { diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 4c46210b3c..ace379f759 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2370,7 +2370,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co safeURLPrefixes += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); // ENTITY SCRIPT WHITELIST TOGGLE CHECK - bool whitelistEnabled = whitelistEnabledSetting.get(); + bool whitelistEnabled = _whitelistEnabled.get(); + + _whitelistEnabled.set(true); if (!whitelistEnabled) { passList = true; diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 6bd722e077..a00a6999cb 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -973,9 +973,10 @@ protected: Setting::Handle _enableExtendedJSExceptions { _SETTINGS_ENABLE_EXTENDED_EXCEPTIONS, true }; - Setting::Handle whitelistEnabledSetting { "DELME/whitelistEnabled", false }; // Set to false if not exist. - QWeakPointer _scriptEngines; + + Setting::Handle _whitelistEnabled{"private/whitelistEnabled", false }; + }; ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context, From fd5ee3e1a751a7c40fde902b9ba1c21c3e6d1a2d Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 22 Jan 2020 14:48:15 -0500 Subject: [PATCH 265/396] Whitelist toggle now works. --- libraries/script-engine/src/ScriptEngine.cpp | 5 ++--- libraries/script-engine/src/ScriptEngine.h | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index ace379f759..d8f65e0506 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2370,10 +2370,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co safeURLPrefixes += qEnvironmentVariable("EXTRA_WHITELIST").trimmed().split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts); // ENTITY SCRIPT WHITELIST TOGGLE CHECK + Setting::Handle _whitelistEnabled{"private/whitelistEnabled", false }; bool whitelistEnabled = _whitelistEnabled.get(); - - _whitelistEnabled.set(true); - + if (!whitelistEnabled) { passList = true; } diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index a00a6999cb..fca652d7ad 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -975,8 +975,6 @@ protected: QWeakPointer _scriptEngines; - Setting::Handle _whitelistEnabled{"private/whitelistEnabled", false }; - }; ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context, From 7a985b445e77dc3183f9c3a5fb0d838d33179c4c Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 22 Jan 2020 14:53:55 -0500 Subject: [PATCH 266/396] removed extra debug, added debug for user awareness. --- .../qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml | 4 +--- libraries/script-engine/src/ScriptEngine.cpp | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml index c9c56bfe81..3de86c31d9 100644 --- a/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml +++ b/interface/resources/qml/hifi/dialogs/security/EntityScriptQMLWhitelist.qml @@ -57,13 +57,12 @@ Rectangle { function toggleWhitelist(enabled) { Settings.setValue("private/whitelistEnabled", enabled); - console.info("NANI?",enabled); + console.info("Toggling Whitelist to:", enabled); } function initCheckbox() { var check = Settings.getValue("private/whitelistEnabled"); - console.info("Triggered init. Val:", check); if (check == true) { whitelistEnabled.toggle(); } @@ -102,7 +101,6 @@ Rectangle { anchors.top: parent.top; anchors.topMargin: 10; onToggled: { - console.info("Triggered.0"); toggleWhitelist(whitelistEnabled.checked) } diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index d8f65e0506..40f43ee22f 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2374,9 +2374,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co bool whitelistEnabled = _whitelistEnabled.get(); if (!whitelistEnabled) { + qCDebug(scriptengine) << "Whitelist Enabled: " << whitelistEnabled; passList = true; } - qCDebug(scriptengine) << "Whitelist Enabled: " << whitelistEnabled; // PULL SAFEURLS FROM INTERFACE.JSON Settings QVariant raw = Setting::Handle("private/settingsSafeURLS").get(); @@ -2391,7 +2391,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co QString domainSafeURL = URL_SCHEME_HIFI + "://" + currentDomain; for (const auto& str : safeURLPrefixes) { if (domainSafeURL.startsWith(str) || domainSafeIP.startsWith(str)) { - qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed. Current Domain Host: " + qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed, entire domain is whitelisted. Current Domain Host: " << nodeList->getDomainHandler().getHostname() << "Current Domain: " << currentDomain; passList = true; From 8ad8457ebedcd5a4968cdebd8ddb97561bd0bc65 Mon Sep 17 00:00:00 2001 From: George Deac Date: Wed, 22 Jan 2020 21:54:31 +0200 Subject: [PATCH 267/396] Add files via upload --- scripts/communityModules/chat/FloofChat.html | 920 ++++++++++--------- 1 file changed, 483 insertions(+), 437 deletions(-) diff --git a/scripts/communityModules/chat/FloofChat.html b/scripts/communityModules/chat/FloofChat.html index ccfc547b2e..89b07c177b 100644 --- a/scripts/communityModules/chat/FloofChat.html +++ b/scripts/communityModules/chat/FloofChat.html @@ -1,438 +1,484 @@ - - - - - - Title - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - - - - Redock -
    -
    -
    -
    - -
    - - - - - - + + + + + + Title + + + + + + + + + + + + + +
    +
    + + + +
    + +
    + + + + Redock +
    +
    +
    +
    + +
    + + + + + + \ No newline at end of file From fbaf0ea56bcb887eb6045db3e87073766fadcc88 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 22 Jan 2020 15:08:26 -0500 Subject: [PATCH 268/396] Remove debugging cache clearer. --- interface/src/Menu.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 6d3e8454ba..fbb69842bd 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -293,7 +293,6 @@ Menu::Menu() { auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); auto hmd = DependencyManager::get(); - DependencyManager::get()->clearCache(); tablet->pushOntoStack("hifi/dialogs/security/EntityScriptQMLWhitelist.qml"); if (!hmd->getShouldShowTablet()) { From cfde36c9f5f47121eee6f7bf6be7983b07c60f76 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 23 Jan 2020 11:25:48 +1300 Subject: [PATCH 269/396] Fix up scrollbars and separators --- interface/resources/qml/hifi/audio/Audio.qml | 13 +++++-------- .../tabletWindows/TabletPreferencesDialog.qml | 6 +++--- interface/resources/qml/windows/ScrollingWindow.qml | 4 +--- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/interface/resources/qml/hifi/audio/Audio.qml b/interface/resources/qml/hifi/audio/Audio.qml index 2f5ac68b4b..963a3246fc 100644 --- a/interface/resources/qml/hifi/audio/Audio.qml +++ b/interface/resources/qml/hifi/audio/Audio.qml @@ -127,17 +127,16 @@ Rectangle { anchors.top: flickView.top; anchors.right: flickView.right; anchors.bottom: flickView.bottom; - anchors.rightMargin: 2 + z: 100 // Display over top of separators. background: Item { implicitWidth: verticalScrollWidth; Rectangle { - color: hifi.colors.darkGray30; + color: hifi.colors.baseGrayShadow radius: 4; anchors { fill: parent; - topMargin: -1; // Finesse size - bottomMargin: -2; + topMargin: 2 // Finess position } } } @@ -148,9 +147,7 @@ Rectangle { color: hifi.colors.white30; anchors { fill: parent; - leftMargin: 2; // Finesse size and position. - topMargin: 1; - bottomMargin: 1; + topMargin: 1; // Finesse position. } } } @@ -338,7 +335,6 @@ Rectangle { anchors.topMargin: 10; } - Item { id: inputDeviceHeader x: margins.paddings; @@ -688,4 +684,5 @@ Rectangle { anchors.topMargin: 10; } } + } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index 7e672aafaa..cedbfb0fe1 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -117,15 +117,16 @@ Item { anchors.top: scrollView.top anchors.right: scrollView.right anchors.bottom: scrollView.bottom - anchors.rightMargin: 2 + z: 100 // Display over top of separators. background: Item { implicitWidth: verticalScrollWidth Rectangle { - color: hifi.colors.darkGray30; + color: hifi.colors.baseGrayShadow radius: 4 anchors { fill: parent + bottomMargin: 1 } } } @@ -136,7 +137,6 @@ Item { color: hifi.colors.white30 anchors { fill: parent - leftMargin: 1 // Finesse size and position. topMargin: 1 bottomMargin: 1 } diff --git a/interface/resources/qml/windows/ScrollingWindow.qml b/interface/resources/qml/windows/ScrollingWindow.qml index 70640a2b75..0c91b58e31 100644 --- a/interface/resources/qml/windows/ScrollingWindow.qml +++ b/interface/resources/qml/windows/ScrollingWindow.qml @@ -97,11 +97,10 @@ Windows.Window { background: Item { implicitWidth: verticalScrollWidth Rectangle { - color: hifi.colors.darkGray30 + color: hifi.colors.baseGrayShadow radius: 4 anchors { fill: parent - topMargin: -1 // Finesse size bottomMargin: -2 } } @@ -113,7 +112,6 @@ Windows.Window { color: hifi.colors.white30 anchors { fill: parent - leftMargin: 2 // Finesse size and position. topMargin: 1 bottomMargin: 1 } From f764a0c35c74564eac062ef336cf8b84b714582e Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Wed, 22 Jan 2020 17:30:27 -0500 Subject: [PATCH 270/396] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index be317e4371..4f5b3de159 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,5 @@ # Project Athena -### [Download ALPHA-DEV v0.86.0 K1 (Windows 64-bit, .zip)](https://realities.dev/cdn/hifi-community/v0860-kasen-VS-release+freshstart/Packaged_Release.zip) - -This build has been tested on Windows 10 Pro 64-bit w/ Nvidia graphics drivers. - #### v0.86.0 K1 (12/3/19) * Audio Buffer choppy audio bugfix by increasing the buffer size. From 78bf9e9a2fdde0da112caacb22b708ad4fa5f997 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Thu, 23 Jan 2020 02:55:50 -0500 Subject: [PATCH 271/396] Vue.JS + Vuetify init + test. --- .../hifi-jsdoc-template/static/scripts/vue | 6 + .../static/scripts/vue_dev.js | 11965 +++++ .../static/scripts/vuetify.js | 41073 ++++++++++++++++ .../static/styles/materialdesignicons.min.css | 3 + .../static/styles/night.css | 0 .../static/styles/vuetify.min.css | 8 + .../hifi-jsdoc-template/tmpl/layout.tmpl | 23 +- 7 files changed, 53077 insertions(+), 1 deletion(-) create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/scripts/vue create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/scripts/vue_dev.js create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/scripts/vuetify.js create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/styles/materialdesignicons.min.css create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/styles/night.css create mode 100644 tools/jsdoc/hifi-jsdoc-template/static/styles/vuetify.min.css diff --git a/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue b/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue new file mode 100644 index 0000000000..05e21102a0 --- /dev/null +++ b/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue @@ -0,0 +1,6 @@ +/*! + * Vue.js v2.6.11 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){"use strict";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}function r(e){return!0===e}function i(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function o(e){return null!==e&&"object"==typeof e}var a=Object.prototype.toString;function s(e){return"[object Object]"===a.call(e)}function c(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function u(e){return n(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function l(e){return null==e?"":Array.isArray(e)||s(e)&&e.toString===a?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function p(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}var m=Object.prototype.hasOwnProperty;function y(e,t){return m.call(e,t)}function g(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var _=/-(\w)/g,b=g(function(e){return e.replace(_,function(e,t){return t?t.toUpperCase():""})}),$=g(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),w=/\B([A-Z])/g,C=g(function(e){return e.replace(w,"-$1").toLowerCase()});var x=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function k(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function A(e,t){for(var n in t)e[n]=t[n];return e}function O(e){for(var t={},n=0;n0,Z=J&&J.indexOf("edge/")>0,G=(J&&J.indexOf("android"),J&&/iphone|ipad|ipod|ios/.test(J)||"ios"===K),X=(J&&/chrome\/\d+/.test(J),J&&/phantomjs/.test(J),J&&J.match(/firefox\/(\d+)/)),Y={}.watch,Q=!1;if(z)try{var ee={};Object.defineProperty(ee,"passive",{get:function(){Q=!0}}),window.addEventListener("test-passive",null,ee)}catch(e){}var te=function(){return void 0===B&&(B=!z&&!V&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),B},ne=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return"function"==typeof e&&/native code/.test(e.toString())}var ie,oe="undefined"!=typeof Symbol&&re(Symbol)&&"undefined"!=typeof Reflect&&re(Reflect.ownKeys);ie="undefined"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ae=S,se=0,ce=function(){this.id=se++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){h(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t-1)if(o&&!y(i,"default"))a=!1;else if(""===a||a===C(e)){var c=Pe(String,i.type);(c<0||s0&&(st((u=e(u,(a||"")+"_"+c))[0])&&st(f)&&(s[l]=he(f.text+u[0].text),u.shift()),s.push.apply(s,u)):i(u)?st(f)?s[l]=he(f.text+u):""!==u&&s.push(he(u)):st(u)&&st(f)?s[l]=he(f.text+u.text):(r(o._isVList)&&n(u.tag)&&t(u.key)&&n(a)&&(u.key="__vlist"+a+"_"+c+"__"),s.push(u)));return s}(e):void 0}function st(e){return n(e)&&n(e.text)&&!1===e.isComment}function ct(e,t){if(e){for(var n=Object.create(null),r=oe?Reflect.ownKeys(e):Object.keys(e),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==e&&s===r.$key&&!o&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=pt(n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=dt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),R(i,"$stable",a),R(i,"$key",s),R(i,"$hasNormal",o),i}function pt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:at(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function dt(e,t){return function(){return e[t]}}function vt(e,t){var r,i,a,s,c;if(Array.isArray(e)||"string"==typeof e)for(r=new Array(e.length),i=0,a=e.length;idocument.createEvent("Event").timeStamp&&(sn=function(){return cn.now()})}function un(){var e,t;for(an=sn(),rn=!0,Qt.sort(function(e,t){return e.id-t.id}),on=0;onon&&Qt[n].id>e.id;)n--;Qt.splice(n+1,0,e)}else Qt.push(e);nn||(nn=!0,Ye(un))}}(this)},fn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||o(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Re(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},fn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},fn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},fn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||h(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var pn={enumerable:!0,configurable:!0,get:S,set:S};function dn(e,t,n){pn.get=function(){return this[t][n]},pn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,pn)}function vn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Me(o,t,n,e);xe(r,o,a),o in e||dn(e,"_props",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]="function"!=typeof t[n]?S:x(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;s(t=e._data="function"==typeof t?function(e,t){le();try{return e.call(t,t)}catch(e){return Re(e,t,"data()"),{}}finally{fe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];r&&y(r,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&dn(e,"_data",o))}var a;Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=te();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;r||(n[i]=new fn(e,a||S,S,hn)),i in e||mn(e,i,o)}}(e,t.computed),t.watch&&t.watch!==Y&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===a.call(n)&&e.test(t));var n}function An(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=xn(a.componentOptions);s&&!t(s)&&On(n,o,r,i)}}}function On(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,h(n,t)}!function(t){t.prototype._init=function(t){var n=this;n._uid=bn++,n._isVue=!0,t&&t._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(n,t):n.$options=De($n(n.constructor),t||{},n),n._renderProxy=n,n._self=n,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(n),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&qt(e,t)}(n),function(t){t._vnode=null,t._staticTrees=null;var n=t.$options,r=t.$vnode=n._parentVnode,i=r&&r.context;t.$slots=ut(n._renderChildren,i),t.$scopedSlots=e,t._c=function(e,n,r,i){return Pt(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return Pt(t,e,n,r,i,!0)};var o=r&&r.data;xe(t,"$attrs",o&&o.attrs||e,null,!0),xe(t,"$listeners",n._parentListeners||e,null,!0)}(n),Yt(n,"beforeCreate"),function(e){var t=ct(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){xe(e,n,t[n])}),$e(!0))}(n),vn(n),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(n),Yt(n,"created"),n.$options.el&&n.$mount(n.$options.el)}}(wn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=ke,e.prototype.$delete=Ae,e.prototype.$watch=function(e,t,n){if(s(t))return _n(this,e,t,n);(n=n||{}).user=!0;var r=new fn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Re(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(wn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i1?k(t):t;for(var n=k(arguments,1),r='event handler for "'+e+'"',i=0,o=t.length;iparseInt(this.max)&&On(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:ae,extend:A,mergeOptions:De,defineReactive:xe},e.set=ke,e.delete=Ae,e.nextTick=Ye,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),M.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,A(e.options.components,Tn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=k(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=De(this.options,e),this}}(e),Cn(e),function(e){M.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&s(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(wn),Object.defineProperty(wn.prototype,"$isServer",{get:te}),Object.defineProperty(wn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(wn,"FunctionalRenderContext",{value:Tt}),wn.version="2.6.11";var En=p("style,class"),Nn=p("input,textarea,option,select,progress"),jn=function(e,t,n){return"value"===n&&Nn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Dn=p("contenteditable,draggable,spellcheck"),Ln=p("events,caret,typing,plaintext-only"),Mn=function(e,t){return Hn(t)||"false"===t?"false":"contenteditable"===e&&Ln(t)?t:"true"},In=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Fn="http://www.w3.org/1999/xlink",Pn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Rn=function(e){return Pn(e)?e.slice(6,e.length):""},Hn=function(e){return null==e||!1===e};function Bn(e){for(var t=e.data,r=e,i=e;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Un(i.data,t));for(;n(r=r.parent);)r&&r.data&&(t=Un(t,r.data));return function(e,t){if(n(e)||n(t))return zn(e,Vn(t));return""}(t.staticClass,t.class)}function Un(e,t){return{staticClass:zn(e.staticClass,t.staticClass),class:n(e.class)?[e.class,t.class]:t.class}}function zn(e,t){return e?t?e+" "+t:e:t||""}function Vn(e){return Array.isArray(e)?function(e){for(var t,r="",i=0,o=e.length;i-1?hr(e,t,n):In(t)?Hn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Dn(t)?e.setAttribute(t,Mn(t,n)):Pn(t)?Hn(n)?e.removeAttributeNS(Fn,Rn(t)):e.setAttributeNS(Fn,t,n):hr(e,t,n)}function hr(e,t,n){if(Hn(n))e.removeAttribute(t);else{if(q&&!W&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var mr={create:dr,update:dr};function yr(e,r){var i=r.elm,o=r.data,a=e.data;if(!(t(o.staticClass)&&t(o.class)&&(t(a)||t(a.staticClass)&&t(a.class)))){var s=Bn(r),c=i._transitionClasses;n(c)&&(s=zn(s,Vn(c))),s!==i._prevClass&&(i.setAttribute("class",s),i._prevClass=s)}}var gr,_r,br,$r,wr,Cr,xr={create:yr,update:yr},kr=/[\w).+\-_$\]]/;function Ar(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(h=e.charAt(v));v--);h&&kr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r-1?{exp:e.slice(0,$r),key:'"'+e.slice($r+1)+'"'}:{exp:e,key:null};_r=e,$r=wr=Cr=0;for(;!zr();)Vr(br=Ur())?Jr(br):91===br&&Kr(br);return{exp:e.slice(0,wr),key:e.slice(wr+1,Cr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Ur(){return _r.charCodeAt(++$r)}function zr(){return $r>=gr}function Vr(e){return 34===e||39===e}function Kr(e){var t=1;for(wr=$r;!zr();)if(Vr(e=Ur()))Jr(e);else if(91===e&&t++,93===e&&t--,0===t){Cr=$r;break}}function Jr(e){for(var t=e;!zr()&&(e=Ur())!==t;);}var qr,Wr="__r",Zr="__c";function Gr(e,t,n){var r=qr;return function i(){null!==t.apply(null,arguments)&&Qr(e,i,n,r)}}var Xr=Ve&&!(X&&Number(X[1])<=53);function Yr(e,t,n,r){if(Xr){var i=an,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}qr.addEventListener(e,t,Q?{capture:n,passive:r}:n)}function Qr(e,t,n,r){(r||qr).removeEventListener(e,t._wrapper||t,n)}function ei(e,r){if(!t(e.data.on)||!t(r.data.on)){var i=r.data.on||{},o=e.data.on||{};qr=r.elm,function(e){if(n(e[Wr])){var t=q?"change":"input";e[t]=[].concat(e[Wr],e[t]||[]),delete e[Wr]}n(e[Zr])&&(e.change=[].concat(e[Zr],e.change||[]),delete e[Zr])}(i),rt(i,o,Yr,Qr,Gr,r.context),qr=void 0}}var ti,ni={create:ei,update:ei};function ri(e,r){if(!t(e.data.domProps)||!t(r.data.domProps)){var i,o,a=r.elm,s=e.data.domProps||{},c=r.data.domProps||{};for(i in n(c.__ob__)&&(c=r.data.domProps=A({},c)),s)i in c||(a[i]="");for(i in c){if(o=c[i],"textContent"===i||"innerHTML"===i){if(r.children&&(r.children.length=0),o===s[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===i&&"PROGRESS"!==a.tagName){a._value=o;var u=t(o)?"":String(o);ii(a,u)&&(a.value=u)}else if("innerHTML"===i&&qn(a.tagName)&&t(a.innerHTML)){(ti=ti||document.createElement("div")).innerHTML=""+o+"";for(var l=ti.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(o!==s[i])try{a[i]=o}catch(e){}}}}function ii(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var r=e.value,i=e._vModifiers;if(n(i)){if(i.number)return f(r)!==f(t);if(i.trim)return r.trim()!==t.trim()}return r!==t}(e,t))}var oi={create:ri,update:ri},ai=g(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function si(e){var t=ci(e.style);return e.staticStyle?A(e.staticStyle,t):t}function ci(e){return Array.isArray(e)?O(e):"string"==typeof e?ai(e):e}var ui,li=/^--/,fi=/\s*!important$/,pi=function(e,t,n){if(li.test(t))e.style.setProperty(t,n);else if(fi.test(n))e.style.setProperty(C(t),n.replace(fi,""),"important");else{var r=vi(t);if(Array.isArray(n))for(var i=0,o=n.length;i-1?t.split(yi).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function _i(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(yi).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function bi(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&A(t,$i(e.name||"v")),A(t,e),t}return"string"==typeof e?$i(e):void 0}}var $i=g(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),wi=z&&!W,Ci="transition",xi="animation",ki="transition",Ai="transitionend",Oi="animation",Si="animationend";wi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ki="WebkitTransition",Ai="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Oi="WebkitAnimation",Si="webkitAnimationEnd"));var Ti=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ei(e){Ti(function(){Ti(e)})}function Ni(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),gi(e,t))}function ji(e,t){e._transitionClasses&&h(e._transitionClasses,t),_i(e,t)}function Di(e,t,n){var r=Mi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Ci?Ai:Si,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ci,l=a,f=o.length):t===xi?u>0&&(n=xi,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Ci:xi:null)?n===Ci?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Ci&&Li.test(r[ki+"Property"])}}function Ii(e,t){for(;e.length1}function Ui(e,t){!0!==t.data.show&&Pi(t)}var zi=function(e){var o,a,s={},c=e.modules,u=e.nodeOps;for(o=0;ov?_(e,t(i[y+1])?null:i[y+1].elm,i,d,y,o):d>y&&$(r,p,v)}(p,h,y,o,l):n(y)?(n(e.text)&&u.setTextContent(p,""),_(p,null,y,0,y.length-1,o)):n(h)?$(h,0,h.length-1):n(e.text)&&u.setTextContent(p,""):e.text!==i.text&&u.setTextContent(p,i.text),n(v)&&n(d=v.hook)&&n(d=d.postpatch)&&d(e,i)}}}function k(e,t,i){if(r(i)&&n(e.parent))e.parent.data.pendingInsert=t;else for(var o=0;o-1,a.selected!==o&&(a.selected=o);else if(N(Wi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function qi(e,t){return t.every(function(t){return!N(t,e)})}function Wi(e){return"_value"in e?e._value:e.value}function Zi(e){e.target.composing=!0}function Gi(e){e.target.composing&&(e.target.composing=!1,Xi(e.target,"input"))}function Xi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Yi(e){return!e.componentInstance||e.data&&e.data.transition?e:Yi(e.componentInstance._vnode)}var Qi={model:Vi,show:{bind:function(e,t,n){var r=t.value,i=(n=Yi(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Pi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Yi(n)).data&&n.data.transition?(n.data.show=!0,r?Pi(n,function(){e.style.display=e.__vOriginalDisplay}):Ri(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},eo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function to(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?to(zt(t.children)):e}function no(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[b(o)]=i[o];return t}function ro(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var io=function(e){return e.tag||Ut(e)},oo=function(e){return"show"===e.name},ao={name:"transition",props:eo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(io)).length){var r=this.mode,o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var a=to(o);if(!a)return o;if(this._leaving)return ro(e,o);var s="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=no(this),u=this._vnode,l=to(u);if(a.data.directives&&a.data.directives.some(oo)&&(a.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(a,l)&&!Ut(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=A({},c);if("out-in"===r)return this._leaving=!0,it(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),ro(e,o);if("in-out"===r){if(Ut(a))return u;var p,d=function(){p()};it(c,"afterEnter",d),it(c,"enterCancelled",d),it(f,"delayLeave",function(e){p=e})}}return o}}},so=A({tag:String,moveClass:String},eo);function co(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function uo(e){e.data.newPos=e.elm.getBoundingClientRect()}function lo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete so.mode;var fo={Transition:ao,TransitionGroup:{props:so,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Zt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=no(this),s=0;s-1?Gn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Gn[e]=/HTMLUnknownElement/.test(t.toString())},A(wn.options.directives,Qi),A(wn.options.components,fo),wn.prototype.__patch__=z?zi:S,wn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Yt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new fn(e,r,S,{before:function(){e._isMounted&&!e._isDestroyed&&Yt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Yt(e,"mounted")),e}(this,e=e&&z?Yn(e):void 0,t)},z&&setTimeout(function(){F.devtools&&ne&&ne.emit("init",wn)},0);var po=/\{\{((?:.|\r?\n)+?)\}\}/g,vo=/[-.*+?^${}()|[\]\/\\]/g,ho=g(function(e){var t=e[0].replace(vo,"\\$&"),n=e[1].replace(vo,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var mo={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Fr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Ir(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var yo,go={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Fr(e,"style");n&&(e.staticStyle=JSON.stringify(ai(n)));var r=Ir(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},_o=function(e){return(yo=yo||document.createElement("div")).innerHTML=e,yo.textContent},bo=p("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),$o=p("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),wo=p("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Co=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,xo=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ko="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+P.source+"]*",Ao="((?:"+ko+"\\:)?"+ko+")",Oo=new RegExp("^<"+Ao),So=/^\s*(\/?)>/,To=new RegExp("^<\\/"+Ao+"[^>]*>"),Eo=/^]+>/i,No=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Io=/&(?:lt|gt|quot|amp|#39);/g,Fo=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Po=p("pre,textarea",!0),Ro=function(e,t){return e&&Po(e)&&"\n"===t[0]};function Ho(e,t){var n=t?Fo:Io;return e.replace(n,function(e){return Mo[e]})}var Bo,Uo,zo,Vo,Ko,Jo,qo,Wo,Zo=/^@|^v-on:/,Go=/^v-|^@|^:|^#/,Xo=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Yo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qo=/^\(|\)$/g,ea=/^\[.*\]$/,ta=/:(.*)$/,na=/^:|^\.|^v-bind:/,ra=/\.[^.\]]+(?=[^\]]*$)/g,ia=/^v-slot(:|$)|^#/,oa=/[\r\n]/,aa=/\s+/g,sa=g(_o),ca="_empty_";function ua(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:ma(t),rawAttrsMap:{},parent:n,children:[]}}function la(e,t){Bo=t.warn||Sr,Jo=t.isPreTag||T,qo=t.mustUseProp||T,Wo=t.getTagNamespace||T;t.isReservedTag;zo=Tr(t.modules,"transformNode"),Vo=Tr(t.modules,"preTransformNode"),Ko=Tr(t.modules,"postTransformNode"),Uo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=t.whitespace,s=!1,c=!1;function u(e){if(l(e),s||e.processed||(e=fa(e,t)),i.length||e===n||n.if&&(e.elseif||e.else)&&da(n,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)a=e,(u=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&u.if&&da(u,{exp:a.elseif,block:a});else{if(e.slotScope){var o=e.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[o]=e}r.children.push(e),e.parent=r}var a,u;e.children=e.children.filter(function(e){return!e.slotScope}),l(e),e.pre&&(s=!1),Jo(e.tag)&&(c=!1);for(var f=0;f]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,Do(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Ro(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(No.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),c,c+v+3),C(v+3);continue}}if(jo.test(e)){var h=e.indexOf("]>");if(h>=0){C(h+2);continue}}var m=e.match(Eo);if(m){C(m[0].length);continue}var y=e.match(To);if(y){var g=c;C(y[0].length),A(y[1],g,c);continue}var _=x();if(_){k(_),Ro(_.tagName,e)&&C(1);continue}}var b=void 0,$=void 0,w=void 0;if(d>=0){for($=e.slice(d);!(To.test($)||Oo.test($)||No.test($)||jo.test($)||(w=$.indexOf("<",1))<0);)d+=w,$=e.slice(d);b=e.substring(0,d)}d<0&&(b=e),b&&C(b.length),t.chars&&b&&t.chars(b,c-b.length,c)}if(e===n){t.chars&&t.chars(e);break}}function C(t){c+=t,e=e.substring(t)}function x(){var t=e.match(Oo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for(C(t[0].length);!(n=e.match(So))&&(r=e.match(xo)||e.match(Co));)r.start=c,C(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],C(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&wo(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Bo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,o,a,l,f){var p=r&&r.ns||Wo(e);q&&"svg"===p&&(o=function(e){for(var t=[],n=0;nc&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=Ar(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),Mr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Br(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Br(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Br(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Ir(e,"value")||"null";Er(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Mr(e,"change",Br(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Wr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Br(t,l);c&&(f="if($event.target.composing)return;"+f),Er(e,"value","("+t+")"),Mr(e,u,f,null,!0),(s||a)&&Mr(e,"blur","$forceUpdate()")}(e,r,i);else if(!F.isReservedTag(o))return Hr(e,r,i),!1;return!0},text:function(e,t){t.value&&Er(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Er(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:bo,mustUseProp:jn,canBeLeftOpenTag:$o,isReservedTag:Wn,getTagNamespace:Zn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(ba)},xa=g(function(e){return p("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))});function ka(e,t){e&&($a=xa(t.staticKeys||""),wa=t.isReservedTag||T,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||d(e.tag)||!wa(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every($a)))}(t);if(1===t.type){if(!wa(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n|^function(?:\s+[\w$]+)?\s*\(/,Oa=/\([^)]*?\);*$/,Sa=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ea={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Na=function(e){return"if("+e+")return null;"},ja={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Na("$event.target !== $event.currentTarget"),ctrl:Na("!$event.ctrlKey"),shift:Na("!$event.shiftKey"),alt:Na("!$event.altKey"),meta:Na("!$event.metaKey"),left:Na("'button' in $event && $event.button !== 0"),middle:Na("'button' in $event && $event.button !== 1"),right:Na("'button' in $event && $event.button !== 2")};function Da(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var a=La(e[o]);e[o]&&e[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function La(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return La(e)}).join(",")+"]";var t=Sa.test(e.value),n=Aa.test(e.value),r=Sa.test(e.value.replace(Oa,""));if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(ja[s])o+=ja[s],Ta[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=Na(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Ma).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Ma(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=Ta[e],r=Ea[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ia={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:S},Fa=function(e){this.options=e,this.warn=e.warn||Sr,this.transforms=Tr(e.modules,"transformCode"),this.dataGenFns=Tr(e.modules,"genData"),this.directives=A(A({},Ia),e.directives);var t=e.isReservedTag||T;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Pa(e,t){var n=new Fa(t);return{render:"with(this){return "+(e?Ra(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ra(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Ha(e,t);if(e.once&&!e.onceProcessed)return Ba(e,t);if(e.for&&!e.forProcessed)return za(e,t);if(e.if&&!e.ifProcessed)return Ua(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=qa(e,t),i="_t("+n+(r?","+r:""),o=e.attrs||e.dynamicAttrs?Ga((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:b(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:qa(t,n,!0);return"_c("+e+","+Va(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=Va(e,t));var i=e.inlineTemplate?null:qa(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o>>0}(a):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=Pa(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+Ga(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ka(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ka))}function Ja(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Ua(e,t,Ja,"null");if(e.for&&!e.forProcessed)return za(e,t,Ja);var r=e.slotScope===ca?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(qa(e,t)||"undefined")+":undefined":qa(e,t)||"undefined":Ra(e,t))+"}",o=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+o+"}"}function qa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?t.maybeComponent(a)?",1":",0":"";return""+(r||Ra)(a,t)+s}var c=n?function(e,t){for(var n=0,r=0;r':'
    ',ts.innerHTML.indexOf(" ")>0}var os=!!z&&is(!1),as=!!z&&is(!0),ss=g(function(e){var t=Yn(e);return t&&t.innerHTML}),cs=wn.prototype.$mount;return wn.prototype.$mount=function(e,t){if((e=e&&Yn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ss(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=rs(r,{outputSourceRange:!1,shouldDecodeNewlines:os,shouldDecodeNewlinesForHref:as,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return cs.call(this,e,t)},wn.compile=rs,wn}); \ No newline at end of file diff --git a/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue_dev.js b/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue_dev.js new file mode 100644 index 0000000000..e22cf13003 --- /dev/null +++ b/tools/jsdoc/hifi-jsdoc-template/static/scripts/vue_dev.js @@ -0,0 +1,11965 @@ +/*! + * Vue.js v2.6.11 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Vue = factory()); +}(this, function () { 'use strict'; + + /* */ + + var emptyObject = Object.freeze({}); + + // These helpers produce better VM code in JS engines due to their + // explicitness and function inlining. + function isUndef (v) { + return v === undefined || v === null + } + + function isDef (v) { + return v !== undefined && v !== null + } + + function isTrue (v) { + return v === true + } + + function isFalse (v) { + return v === false + } + + /** + * Check if value is primitive. + */ + function isPrimitive (value) { + return ( + typeof value === 'string' || + typeof value === 'number' || + // $flow-disable-line + typeof value === 'symbol' || + typeof value === 'boolean' + ) + } + + /** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ + function isObject (obj) { + return obj !== null && typeof obj === 'object' + } + + /** + * Get the raw type string of a value, e.g., [object Object]. + */ + var _toString = Object.prototype.toString; + + function toRawType (value) { + return _toString.call(value).slice(8, -1) + } + + /** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ + function isPlainObject (obj) { + return _toString.call(obj) === '[object Object]' + } + + function isRegExp (v) { + return _toString.call(v) === '[object RegExp]' + } + + /** + * Check if val is a valid array index. + */ + function isValidArrayIndex (val) { + var n = parseFloat(String(val)); + return n >= 0 && Math.floor(n) === n && isFinite(val) + } + + function isPromise (val) { + return ( + isDef(val) && + typeof val.then === 'function' && + typeof val.catch === 'function' + ) + } + + /** + * Convert a value to a string that is actually rendered. + */ + function toString (val) { + return val == null + ? '' + : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) + ? JSON.stringify(val, null, 2) + : String(val) + } + + /** + * Convert an input value to a number for persistence. + * If the conversion fails, return original string. + */ + function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n + } + + /** + * Make a map and return a function for checking if a key + * is in that map. + */ + function makeMap ( + str, + expectsLowerCase + ) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } + } + + /** + * Check if a tag is a built-in tag. + */ + var isBuiltInTag = makeMap('slot,component', true); + + /** + * Check if an attribute is a reserved attribute. + */ + var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); + + /** + * Remove an item from an array. + */ + function remove (arr, item) { + if (arr.length) { + var index = arr.indexOf(item); + if (index > -1) { + return arr.splice(index, 1) + } + } + } + + /** + * Check whether an object has the property. + */ + var hasOwnProperty = Object.prototype.hasOwnProperty; + function hasOwn (obj, key) { + return hasOwnProperty.call(obj, key) + } + + /** + * Create a cached version of a pure function. + */ + function cached (fn) { + var cache = Object.create(null); + return (function cachedFn (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)) + }) + } + + /** + * Camelize a hyphen-delimited string. + */ + var camelizeRE = /-(\w)/g; + var camelize = cached(function (str) { + return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) + }); + + /** + * Capitalize a string. + */ + var capitalize = cached(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1) + }); + + /** + * Hyphenate a camelCase string. + */ + var hyphenateRE = /\B([A-Z])/g; + var hyphenate = cached(function (str) { + return str.replace(hyphenateRE, '-$1').toLowerCase() + }); + + /** + * Simple bind polyfill for environments that do not support it, + * e.g., PhantomJS 1.x. Technically, we don't need this anymore + * since native bind is now performant enough in most browsers. + * But removing it would mean breaking code that was able to run in + * PhantomJS 1.x, so this must be kept for backward compatibility. + */ + + /* istanbul ignore next */ + function polyfillBind (fn, ctx) { + function boundFn (a) { + var l = arguments.length; + return l + ? l > 1 + ? fn.apply(ctx, arguments) + : fn.call(ctx, a) + : fn.call(ctx) + } + + boundFn._length = fn.length; + return boundFn + } + + function nativeBind (fn, ctx) { + return fn.bind(ctx) + } + + var bind = Function.prototype.bind + ? nativeBind + : polyfillBind; + + /** + * Convert an Array-like object to a real Array. + */ + function toArray (list, start) { + start = start || 0; + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret + } + + /** + * Mix properties into target object. + */ + function extend (to, _from) { + for (var key in _from) { + to[key] = _from[key]; + } + return to + } + + /** + * Merge an Array of Objects into a single Object. + */ + function toObject (arr) { + var res = {}; + for (var i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res + } + + /* eslint-disable no-unused-vars */ + + /** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). + */ + function noop (a, b, c) {} + + /** + * Always return false. + */ + var no = function (a, b, c) { return false; }; + + /* eslint-enable no-unused-vars */ + + /** + * Return the same value. + */ + var identity = function (_) { return _; }; + + /** + * Generate a string containing static keys from compiler modules. + */ + function genStaticKeys (modules) { + return modules.reduce(function (keys, m) { + return keys.concat(m.staticKeys || []) + }, []).join(',') + } + + /** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ + function looseEqual (a, b) { + if (a === b) { return true } + var isObjectA = isObject(a); + var isObjectB = isObject(b); + if (isObjectA && isObjectB) { + try { + var isArrayA = Array.isArray(a); + var isArrayB = Array.isArray(b); + if (isArrayA && isArrayB) { + return a.length === b.length && a.every(function (e, i) { + return looseEqual(e, b[i]) + }) + } else if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime() + } else if (!isArrayA && !isArrayB) { + var keysA = Object.keys(a); + var keysB = Object.keys(b); + return keysA.length === keysB.length && keysA.every(function (key) { + return looseEqual(a[key], b[key]) + }) + } else { + /* istanbul ignore next */ + return false + } + } catch (e) { + /* istanbul ignore next */ + return false + } + } else if (!isObjectA && !isObjectB) { + return String(a) === String(b) + } else { + return false + } + } + + /** + * Return the first index at which a loosely equal value can be + * found in the array (if value is a plain object, the array must + * contain an object of the same shape), or -1 if it is not present. + */ + function looseIndexOf (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { return i } + } + return -1 + } + + /** + * Ensure a function is called only once. + */ + function once (fn) { + var called = false; + return function () { + if (!called) { + called = true; + fn.apply(this, arguments); + } + } + } + + var SSR_ATTR = 'data-server-rendered'; + + var ASSET_TYPES = [ + 'component', + 'directive', + 'filter' + ]; + + var LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated', + 'errorCaptured', + 'serverPrefetch' + ]; + + /* */ + + + + var config = ({ + /** + * Option merge strategies (used in core/util/options) + */ + // $flow-disable-line + optionMergeStrategies: Object.create(null), + + /** + * Whether to suppress warnings. + */ + silent: false, + + /** + * Show production mode tip message on boot? + */ + productionTip: "development" !== 'production', + + /** + * Whether to enable devtools + */ + devtools: "development" !== 'production', + + /** + * Whether to record perf + */ + performance: false, + + /** + * Error handler for watcher errors + */ + errorHandler: null, + + /** + * Warn handler for watcher warns + */ + warnHandler: null, + + /** + * Ignore certain custom elements + */ + ignoredElements: [], + + /** + * Custom user key aliases for v-on + */ + // $flow-disable-line + keyCodes: Object.create(null), + + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, + + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, + + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, + + /** + * Get the namespace of an element + */ + getTagNamespace: noop, + + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity, + + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + + /** + * Perform updates asynchronously. Intended to be used by Vue Test Utils + * This will significantly reduce performance if set to false. + */ + async: true, + + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS + }); + + /* */ + + /** + * unicode letters used for parsing html tags, component names and property paths. + * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname + * skipping \u10000-\uEFFFF due to it freezing up PhantomJS + */ + var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/; + + /** + * Check if a string starts with $ or _ + */ + function isReserved (str) { + var c = (str + '').charCodeAt(0); + return c === 0x24 || c === 0x5F + } + + /** + * Define a property. + */ + function def (obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); + } + + /** + * Parse simple path. + */ + var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]")); + function parsePath (path) { + if (bailRE.test(path)) { + return + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) { return } + obj = obj[segments[i]]; + } + return obj + } + } + + /* */ + + // can we use __proto__? + var hasProto = '__proto__' in {}; + + // Browser environment sniffing + var inBrowser = typeof window !== 'undefined'; + var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform; + var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(); + var UA = inBrowser && window.navigator.userAgent.toLowerCase(); + var isIE = UA && /msie|trident/.test(UA); + var isIE9 = UA && UA.indexOf('msie 9.0') > 0; + var isEdge = UA && UA.indexOf('edge/') > 0; + var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android'); + var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios'); + var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; + var isPhantomJS = UA && /phantomjs/.test(UA); + var isFF = UA && UA.match(/firefox\/(\d+)/); + + // Firefox has a "watch" function on Object.prototype... + var nativeWatch = ({}).watch; + + var supportsPassive = false; + if (inBrowser) { + try { + var opts = {}; + Object.defineProperty(opts, 'passive', ({ + get: function get () { + /* istanbul ignore next */ + supportsPassive = true; + } + })); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } catch (e) {} + } + + // this needs to be lazy-evaled because vue may be required before + // vue-server-renderer can set VUE_ENV + var _isServer; + var isServerRendering = function () { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && !inWeex && typeof global !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = global['process'] && global['process'].env.VUE_ENV === 'server'; + } else { + _isServer = false; + } + } + return _isServer + }; + + // detect devtools + var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + + /* istanbul ignore next */ + function isNative (Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) + } + + var hasSymbol = + typeof Symbol !== 'undefined' && isNative(Symbol) && + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); + + var _Set; + /* istanbul ignore if */ // $flow-disable-line + if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; + } else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = /*@__PURE__*/(function () { + function Set () { + this.set = Object.create(null); + } + Set.prototype.has = function has (key) { + return this.set[key] === true + }; + Set.prototype.add = function add (key) { + this.set[key] = true; + }; + Set.prototype.clear = function clear () { + this.set = Object.create(null); + }; + + return Set; + }()); + } + + /* */ + + var warn = noop; + var tip = noop; + var generateComponentTrace = (noop); // work around flow check + var formatComponentName = (noop); + + { + var hasConsole = typeof console !== 'undefined'; + var classifyRE = /(?:^|[-_])(\w)/g; + var classify = function (str) { return str + .replace(classifyRE, function (c) { return c.toUpperCase(); }) + .replace(/[-_]/g, ''); }; + + warn = function (msg, vm) { + var trace = vm ? generateComponentTrace(vm) : ''; + + if (config.warnHandler) { + config.warnHandler.call(null, msg, vm, trace); + } else if (hasConsole && (!config.silent)) { + console.error(("[Vue warn]: " + msg + trace)); + } + }; + + tip = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.warn("[Vue tip]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; + + formatComponentName = function (vm, includeFile) { + if (vm.$root === vm) { + return '' + } + var options = typeof vm === 'function' && vm.cid != null + ? vm.options + : vm._isVue + ? vm.$options || vm.constructor.options + : vm; + var name = options.name || options._componentTag; + var file = options.__file; + if (!name && file) { + var match = file.match(/([^/\\]+)\.vue$/); + name = match && match[1]; + } + + return ( + (name ? ("<" + (classify(name)) + ">") : "") + + (file && includeFile !== false ? (" at " + file) : '') + ) + }; + + var repeat = function (str, n) { + var res = ''; + while (n) { + if (n % 2 === 1) { res += str; } + if (n > 1) { str += str; } + n >>= 1; + } + return res + }; + + generateComponentTrace = function (vm) { + if (vm._isVue && vm.$parent) { + var tree = []; + var currentRecursiveSequence = 0; + while (vm) { + if (tree.length > 0) { + var last = tree[tree.length - 1]; + if (last.constructor === vm.constructor) { + currentRecursiveSequence++; + vm = vm.$parent; + continue + } else if (currentRecursiveSequence > 0) { + tree[tree.length - 1] = [last, currentRecursiveSequence]; + currentRecursiveSequence = 0; + } + } + tree.push(vm); + vm = vm.$parent; + } + return '\n\nfound in\n\n' + tree + .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) + ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") + : formatComponentName(vm))); }) + .join('\n') + } else { + return ("\n\n(found in " + (formatComponentName(vm)) + ")") + } + }; + } + + /* */ + + var uid = 0; + + /** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ + var Dep = function Dep () { + this.id = uid++; + this.subs = []; + }; + + Dep.prototype.addSub = function addSub (sub) { + this.subs.push(sub); + }; + + Dep.prototype.removeSub = function removeSub (sub) { + remove(this.subs, sub); + }; + + Dep.prototype.depend = function depend () { + if (Dep.target) { + Dep.target.addDep(this); + } + }; + + Dep.prototype.notify = function notify () { + // stabilize the subscriber list first + var subs = this.subs.slice(); + if (!config.async) { + // subs aren't sorted in scheduler if not running async + // we need to sort them now to make sure they fire in correct + // order + subs.sort(function (a, b) { return a.id - b.id; }); + } + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } + }; + + // The current target watcher being evaluated. + // This is globally unique because only one watcher + // can be evaluated at a time. + Dep.target = null; + var targetStack = []; + + function pushTarget (target) { + targetStack.push(target); + Dep.target = target; + } + + function popTarget () { + targetStack.pop(); + Dep.target = targetStack[targetStack.length - 1]; + } + + /* */ + + var VNode = function VNode ( + tag, + data, + children, + text, + elm, + context, + componentOptions, + asyncFactory + ) { + this.tag = tag; + this.data = data; + this.children = children; + this.text = text; + this.elm = elm; + this.ns = undefined; + this.context = context; + this.fnContext = undefined; + this.fnOptions = undefined; + this.fnScopeId = undefined; + this.key = data && data.key; + this.componentOptions = componentOptions; + this.componentInstance = undefined; + this.parent = undefined; + this.raw = false; + this.isStatic = false; + this.isRootInsert = true; + this.isComment = false; + this.isCloned = false; + this.isOnce = false; + this.asyncFactory = asyncFactory; + this.asyncMeta = undefined; + this.isAsyncPlaceholder = false; + }; + + var prototypeAccessors = { child: { configurable: true } }; + + // DEPRECATED: alias for componentInstance for backwards compat. + /* istanbul ignore next */ + prototypeAccessors.child.get = function () { + return this.componentInstance + }; + + Object.defineProperties( VNode.prototype, prototypeAccessors ); + + var createEmptyVNode = function (text) { + if ( text === void 0 ) text = ''; + + var node = new VNode(); + node.text = text; + node.isComment = true; + return node + }; + + function createTextVNode (val) { + return new VNode(undefined, undefined, undefined, String(val)) + } + + // optimized shallow clone + // used for static nodes and slot nodes because they may be reused across + // multiple renders, cloning them avoids errors when DOM manipulations rely + // on their elm reference. + function cloneVNode (vnode) { + var cloned = new VNode( + vnode.tag, + vnode.data, + // #7975 + // clone children array to avoid mutating original in case of cloning + // a child. + vnode.children && vnode.children.slice(), + vnode.text, + vnode.elm, + vnode.context, + vnode.componentOptions, + vnode.asyncFactory + ); + cloned.ns = vnode.ns; + cloned.isStatic = vnode.isStatic; + cloned.key = vnode.key; + cloned.isComment = vnode.isComment; + cloned.fnContext = vnode.fnContext; + cloned.fnOptions = vnode.fnOptions; + cloned.fnScopeId = vnode.fnScopeId; + cloned.asyncMeta = vnode.asyncMeta; + cloned.isCloned = true; + return cloned + } + + /* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ + + var arrayProto = Array.prototype; + var arrayMethods = Object.create(arrayProto); + + var methodsToPatch = [ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' + ]; + + /** + * Intercept mutating methods and emit events + */ + methodsToPatch.forEach(function (method) { + // cache original method + var original = arrayProto[method]; + def(arrayMethods, method, function mutator () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var result = original.apply(this, args); + var ob = this.__ob__; + var inserted; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break + case 'splice': + inserted = args.slice(2); + break + } + if (inserted) { ob.observeArray(inserted); } + // notify change + ob.dep.notify(); + return result + }); + }); + + /* */ + + var arrayKeys = Object.getOwnPropertyNames(arrayMethods); + + /** + * In some cases we may want to disable observation inside a component's + * update computation. + */ + var shouldObserve = true; + + function toggleObserving (value) { + shouldObserve = value; + } + + /** + * Observer class that is attached to each observed + * object. Once attached, the observer converts the target + * object's property keys into getter/setters that + * collect dependencies and dispatch updates. + */ + var Observer = function Observer (value) { + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (Array.isArray(value)) { + if (hasProto) { + protoAugment(value, arrayMethods); + } else { + copyAugment(value, arrayMethods, arrayKeys); + } + this.observeArray(value); + } else { + this.walk(value); + } + }; + + /** + * Walk through all properties and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ + Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive$$1(obj, keys[i]); + } + }; + + /** + * Observe a list of Array items. + */ + Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); + } + }; + + // helpers + + /** + * Augment a target Object or Array by intercepting + * the prototype chain using __proto__ + */ + function protoAugment (target, src) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ + } + + /** + * Augment a target Object or Array by defining + * hidden properties. + */ + /* istanbul ignore next */ + function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); + } + } + + /** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ + function observe (value, asRootData) { + if (!isObject(value) || value instanceof VNode) { + return + } + var ob; + if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if ( + shouldObserve && + !isServerRendering() && + (Array.isArray(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value._isVue + ) { + ob = new Observer(value); + } + if (asRootData && ob) { + ob.vmCount++; + } + return ob + } + + /** + * Define a reactive property on an Object. + */ + function defineReactive$$1 ( + obj, + key, + val, + customSetter, + shallow + ) { + var dep = new Dep(); + + var property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return + } + + // cater for pre-defined getter/setters + var getter = property && property.get; + var setter = property && property.set; + if ((!getter || setter) && arguments.length === 2) { + val = obj[key]; + } + + var childOb = !shallow && observe(val); + Object.defineProperty(obj, key, { + enumerable: true, + configurable: true, + get: function reactiveGetter () { + var value = getter ? getter.call(obj) : val; + if (Dep.target) { + dep.depend(); + if (childOb) { + childOb.dep.depend(); + if (Array.isArray(value)) { + dependArray(value); + } + } + } + return value + }, + set: function reactiveSetter (newVal) { + var value = getter ? getter.call(obj) : val; + /* eslint-disable no-self-compare */ + if (newVal === value || (newVal !== newVal && value !== value)) { + return + } + /* eslint-enable no-self-compare */ + if (customSetter) { + customSetter(); + } + // #7981: for accessor properties without setter + if (getter && !setter) { return } + if (setter) { + setter.call(obj, newVal); + } else { + val = newVal; + } + childOb = !shallow && observe(newVal); + dep.notify(); + } + }); + } + + /** + * Set a property on an object. Adds the new property and + * triggers change notification if the property doesn't + * already exist. + */ + function set (target, key, val) { + if (isUndef(target) || isPrimitive(target) + ) { + warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target)))); + } + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val + } + if (key in target && !(key in Object.prototype)) { + target[key] = val; + return val + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + warn( + 'Avoid adding reactive properties to a Vue instance or its root $data ' + + 'at runtime - declare it upfront in the data option.' + ); + return val + } + if (!ob) { + target[key] = val; + return val + } + defineReactive$$1(ob.value, key, val); + ob.dep.notify(); + return val + } + + /** + * Delete a property and trigger change if necessary. + */ + function del (target, key) { + if (isUndef(target) || isPrimitive(target) + ) { + warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target)))); + } + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.splice(key, 1); + return + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + warn( + 'Avoid deleting properties on a Vue instance or its root $data ' + + '- just set it to null.' + ); + return + } + if (!hasOwn(target, key)) { + return + } + delete target[key]; + if (!ob) { + return + } + ob.dep.notify(); + } + + /** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ + function dependArray (value) { + for (var e = (void 0), i = 0, l = value.length; i < l; i++) { + e = value[i]; + e && e.__ob__ && e.__ob__.dep.depend(); + if (Array.isArray(e)) { + dependArray(e); + } + } + } + + /* */ + + /** + * Option overwriting strategies are functions that handle + * how to merge a parent option value and a child option + * value into the final value. + */ + var strats = config.optionMergeStrategies; + + /** + * Options with restrictions + */ + { + strats.el = strats.propsData = function (parent, child, vm, key) { + if (!vm) { + warn( + "option \"" + key + "\" can only be used during instance " + + 'creation with the `new` keyword.' + ); + } + return defaultStrat(parent, child) + }; + } + + /** + * Helper that recursively merges two data objects together. + */ + function mergeData (to, from) { + if (!from) { return to } + var key, toVal, fromVal; + + var keys = hasSymbol + ? Reflect.ownKeys(from) + : Object.keys(from); + + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + // in case the object is already observed... + if (key === '__ob__') { continue } + toVal = to[key]; + fromVal = from[key]; + if (!hasOwn(to, key)) { + set(to, key, fromVal); + } else if ( + toVal !== fromVal && + isPlainObject(toVal) && + isPlainObject(fromVal) + ) { + mergeData(toVal, fromVal); + } + } + return to + } + + /** + * Data + */ + function mergeDataOrFn ( + parentVal, + childVal, + vm + ) { + if (!vm) { + // in a Vue.extend merge, both should be functions + if (!childVal) { + return parentVal + } + if (!parentVal) { + return childVal + } + // when parentVal & childVal are both present, + // we need to return a function that returns the + // merged result of both functions... no need to + // check if parentVal is a function here because + // it has to be a function to pass previous merges. + return function mergedDataFn () { + return mergeData( + typeof childVal === 'function' ? childVal.call(this, this) : childVal, + typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal + ) + } + } else { + return function mergedInstanceDataFn () { + // instance merge + var instanceData = typeof childVal === 'function' + ? childVal.call(vm, vm) + : childVal; + var defaultData = typeof parentVal === 'function' + ? parentVal.call(vm, vm) + : parentVal; + if (instanceData) { + return mergeData(instanceData, defaultData) + } else { + return defaultData + } + } + } + } + + strats.data = function ( + parentVal, + childVal, + vm + ) { + if (!vm) { + if (childVal && typeof childVal !== 'function') { + warn( + 'The "data" option should be a function ' + + 'that returns a per-instance value in component ' + + 'definitions.', + vm + ); + + return parentVal + } + return mergeDataOrFn(parentVal, childVal) + } + + return mergeDataOrFn(parentVal, childVal, vm) + }; + + /** + * Hooks and props are merged as arrays. + */ + function mergeHook ( + parentVal, + childVal + ) { + var res = childVal + ? parentVal + ? parentVal.concat(childVal) + : Array.isArray(childVal) + ? childVal + : [childVal] + : parentVal; + return res + ? dedupeHooks(res) + : res + } + + function dedupeHooks (hooks) { + var res = []; + for (var i = 0; i < hooks.length; i++) { + if (res.indexOf(hooks[i]) === -1) { + res.push(hooks[i]); + } + } + return res + } + + LIFECYCLE_HOOKS.forEach(function (hook) { + strats[hook] = mergeHook; + }); + + /** + * Assets + * + * When a vm is present (instance creation), we need to do + * a three-way merge between constructor options, instance + * options and parent options. + */ + function mergeAssets ( + parentVal, + childVal, + vm, + key + ) { + var res = Object.create(parentVal || null); + if (childVal) { + assertObjectType(key, childVal, vm); + return extend(res, childVal) + } else { + return res + } + } + + ASSET_TYPES.forEach(function (type) { + strats[type + 's'] = mergeAssets; + }); + + /** + * Watchers. + * + * Watchers hashes should not overwrite one + * another, so we merge them as arrays. + */ + strats.watch = function ( + parentVal, + childVal, + vm, + key + ) { + // work around Firefox's Object.prototype.watch... + if (parentVal === nativeWatch) { parentVal = undefined; } + if (childVal === nativeWatch) { childVal = undefined; } + /* istanbul ignore if */ + if (!childVal) { return Object.create(parentVal || null) } + { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = {}; + extend(ret, parentVal); + for (var key$1 in childVal) { + var parent = ret[key$1]; + var child = childVal[key$1]; + if (parent && !Array.isArray(parent)) { + parent = [parent]; + } + ret[key$1] = parent + ? parent.concat(child) + : Array.isArray(child) ? child : [child]; + } + return ret + }; + + /** + * Other object hashes. + */ + strats.props = + strats.methods = + strats.inject = + strats.computed = function ( + parentVal, + childVal, + vm, + key + ) { + if (childVal && "development" !== 'production') { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = Object.create(null); + extend(ret, parentVal); + if (childVal) { extend(ret, childVal); } + return ret + }; + strats.provide = mergeDataOrFn; + + /** + * Default strategy. + */ + var defaultStrat = function (parentVal, childVal) { + return childVal === undefined + ? parentVal + : childVal + }; + + /** + * Validate component names + */ + function checkComponents (options) { + for (var key in options.components) { + validateComponentName(key); + } + } + + function validateComponentName (name) { + if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) { + warn( + 'Invalid component name: "' + name + '". Component names ' + + 'should conform to valid custom element name in html5 specification.' + ); + } + if (isBuiltInTag(name) || config.isReservedTag(name)) { + warn( + 'Do not use built-in or reserved HTML elements as component ' + + 'id: ' + name + ); + } + } + + /** + * Ensure all props option syntax are normalized into the + * Object-based format. + */ + function normalizeProps (options, vm) { + var props = options.props; + if (!props) { return } + var res = {}; + var i, val, name; + if (Array.isArray(props)) { + i = props.length; + while (i--) { + val = props[i]; + if (typeof val === 'string') { + name = camelize(val); + res[name] = { type: null }; + } else { + warn('props must be strings when using array syntax.'); + } + } + } else if (isPlainObject(props)) { + for (var key in props) { + val = props[key]; + name = camelize(key); + res[name] = isPlainObject(val) + ? val + : { type: val }; + } + } else { + warn( + "Invalid value for option \"props\": expected an Array or an Object, " + + "but got " + (toRawType(props)) + ".", + vm + ); + } + options.props = res; + } + + /** + * Normalize all injections into Object-based format + */ + function normalizeInject (options, vm) { + var inject = options.inject; + if (!inject) { return } + var normalized = options.inject = {}; + if (Array.isArray(inject)) { + for (var i = 0; i < inject.length; i++) { + normalized[inject[i]] = { from: inject[i] }; + } + } else if (isPlainObject(inject)) { + for (var key in inject) { + var val = inject[key]; + normalized[key] = isPlainObject(val) + ? extend({ from: key }, val) + : { from: val }; + } + } else { + warn( + "Invalid value for option \"inject\": expected an Array or an Object, " + + "but got " + (toRawType(inject)) + ".", + vm + ); + } + } + + /** + * Normalize raw function directives into object format. + */ + function normalizeDirectives (options) { + var dirs = options.directives; + if (dirs) { + for (var key in dirs) { + var def$$1 = dirs[key]; + if (typeof def$$1 === 'function') { + dirs[key] = { bind: def$$1, update: def$$1 }; + } + } + } + } + + function assertObjectType (name, value, vm) { + if (!isPlainObject(value)) { + warn( + "Invalid value for option \"" + name + "\": expected an Object, " + + "but got " + (toRawType(value)) + ".", + vm + ); + } + } + + /** + * Merge two option objects into a new one. + * Core utility used in both instantiation and inheritance. + */ + function mergeOptions ( + parent, + child, + vm + ) { + { + checkComponents(child); + } + + if (typeof child === 'function') { + child = child.options; + } + + normalizeProps(child, vm); + normalizeInject(child, vm); + normalizeDirectives(child); + + // Apply extends and mixins on the child options, + // but only if it is a raw options object that isn't + // the result of another mergeOptions call. + // Only merged options has the _base property. + if (!child._base) { + if (child.extends) { + parent = mergeOptions(parent, child.extends, vm); + } + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } + } + } + + var options = {}; + var key; + for (key in parent) { + mergeField(key); + } + for (key in child) { + if (!hasOwn(parent, key)) { + mergeField(key); + } + } + function mergeField (key) { + var strat = strats[key] || defaultStrat; + options[key] = strat(parent[key], child[key], vm, key); + } + return options + } + + /** + * Resolve an asset. + * This function is used because child instances need access + * to assets defined in its ancestor chain. + */ + function resolveAsset ( + options, + type, + id, + warnMissing + ) { + /* istanbul ignore if */ + if (typeof id !== 'string') { + return + } + var assets = options[type]; + // check local registration variations first + if (hasOwn(assets, id)) { return assets[id] } + var camelizedId = camelize(id); + if (hasOwn(assets, camelizedId)) { return assets[camelizedId] } + var PascalCaseId = capitalize(camelizedId); + if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] } + // fallback to prototype chain + var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; + if (warnMissing && !res) { + warn( + 'Failed to resolve ' + type.slice(0, -1) + ': ' + id, + options + ); + } + return res + } + + /* */ + + + + function validateProp ( + key, + propOptions, + propsData, + vm + ) { + var prop = propOptions[key]; + var absent = !hasOwn(propsData, key); + var value = propsData[key]; + // boolean casting + var booleanIndex = getTypeIndex(Boolean, prop.type); + if (booleanIndex > -1) { + if (absent && !hasOwn(prop, 'default')) { + value = false; + } else if (value === '' || value === hyphenate(key)) { + // only cast empty string / same name to boolean if + // boolean has higher priority + var stringIndex = getTypeIndex(String, prop.type); + if (stringIndex < 0 || booleanIndex < stringIndex) { + value = true; + } + } + } + // check default value + if (value === undefined) { + value = getPropDefaultValue(vm, prop, key); + // since the default value is a fresh copy, + // make sure to observe it. + var prevShouldObserve = shouldObserve; + toggleObserving(true); + observe(value); + toggleObserving(prevShouldObserve); + } + { + assertProp(prop, key, value, vm, absent); + } + return value + } + + /** + * Get the default value of a prop. + */ + function getPropDefaultValue (vm, prop, key) { + // no default, return undefined + if (!hasOwn(prop, 'default')) { + return undefined + } + var def = prop.default; + // warn against non-factory defaults for Object & Array + if (isObject(def)) { + warn( + 'Invalid default value for prop "' + key + '": ' + + 'Props with type Object/Array must use a factory function ' + + 'to return the default value.', + vm + ); + } + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined + ) { + return vm._props[key] + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return typeof def === 'function' && getType(prop.type) !== 'Function' + ? def.call(vm) + : def + } + + /** + * Assert whether a prop is valid. + */ + function assertProp ( + prop, + name, + value, + vm, + absent + ) { + if (prop.required && absent) { + warn( + 'Missing required prop: "' + name + '"', + vm + ); + return + } + if (value == null && !prop.required) { + return + } + var type = prop.type; + var valid = !type || type === true; + var expectedTypes = []; + if (type) { + if (!Array.isArray(type)) { + type = [type]; + } + for (var i = 0; i < type.length && !valid; i++) { + var assertedType = assertType(value, type[i]); + expectedTypes.push(assertedType.expectedType || ''); + valid = assertedType.valid; + } + } + + if (!valid) { + warn( + getInvalidTypeMessage(name, value, expectedTypes), + vm + ); + return + } + var validator = prop.validator; + if (validator) { + if (!validator(value)) { + warn( + 'Invalid prop: custom validator check failed for prop "' + name + '".', + vm + ); + } + } + } + + var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/; + + function assertType (value, type) { + var valid; + var expectedType = getType(type); + if (simpleCheckRE.test(expectedType)) { + var t = typeof value; + valid = t === expectedType.toLowerCase(); + // for primitive wrapper objects + if (!valid && t === 'object') { + valid = value instanceof type; + } + } else if (expectedType === 'Object') { + valid = isPlainObject(value); + } else if (expectedType === 'Array') { + valid = Array.isArray(value); + } else { + valid = value instanceof type; + } + return { + valid: valid, + expectedType: expectedType + } + } + + /** + * Use function string name to check built-in types, + * because a simple equality check will fail when running + * across different vms / iframes. + */ + function getType (fn) { + var match = fn && fn.toString().match(/^\s*function (\w+)/); + return match ? match[1] : '' + } + + function isSameType (a, b) { + return getType(a) === getType(b) + } + + function getTypeIndex (type, expectedTypes) { + if (!Array.isArray(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1 + } + for (var i = 0, len = expectedTypes.length; i < len; i++) { + if (isSameType(expectedTypes[i], type)) { + return i + } + } + return -1 + } + + function getInvalidTypeMessage (name, value, expectedTypes) { + var message = "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')); + var expectedType = expectedTypes[0]; + var receivedType = toRawType(value); + var expectedValue = styleValue(value, expectedType); + var receivedValue = styleValue(value, receivedType); + // check if we need to specify expected value + if (expectedTypes.length === 1 && + isExplicable(expectedType) && + !isBoolean(expectedType, receivedType)) { + message += " with value " + expectedValue; + } + message += ", got " + receivedType + " "; + // check if we need to specify received value + if (isExplicable(receivedType)) { + message += "with value " + receivedValue + "."; + } + return message + } + + function styleValue (value, type) { + if (type === 'String') { + return ("\"" + value + "\"") + } else if (type === 'Number') { + return ("" + (Number(value))) + } else { + return ("" + value) + } + } + + function isExplicable (value) { + var explicitTypes = ['string', 'number', 'boolean']; + return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; }) + } + + function isBoolean () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }) + } + + /* */ + + function handleError (err, vm, info) { + // Deactivate deps tracking while processing error handler to avoid possible infinite rendering. + // See: https://github.com/vuejs/vuex/issues/1505 + pushTarget(); + try { + if (vm) { + var cur = vm; + while ((cur = cur.$parent)) { + var hooks = cur.$options.errorCaptured; + if (hooks) { + for (var i = 0; i < hooks.length; i++) { + try { + var capture = hooks[i].call(cur, err, vm, info) === false; + if (capture) { return } + } catch (e) { + globalHandleError(e, cur, 'errorCaptured hook'); + } + } + } + } + } + globalHandleError(err, vm, info); + } finally { + popTarget(); + } + } + + function invokeWithErrorHandling ( + handler, + context, + args, + vm, + info + ) { + var res; + try { + res = args ? handler.apply(context, args) : handler.call(context); + if (res && !res._isVue && isPromise(res) && !res._handled) { + res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); }); + // issue #9511 + // avoid catch triggering multiple times when nested calls + res._handled = true; + } + } catch (e) { + handleError(e, vm, info); + } + return res + } + + function globalHandleError (err, vm, info) { + if (config.errorHandler) { + try { + return config.errorHandler.call(null, err, vm, info) + } catch (e) { + // if the user intentionally throws the original error in the handler, + // do not log it twice + if (e !== err) { + logError(e, null, 'config.errorHandler'); + } + } + } + logError(err, vm, info); + } + + function logError (err, vm, info) { + { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if ((inBrowser || inWeex) && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } + } + + /* */ + + var isUsingMicroTask = false; + + var callbacks = []; + var pending = false; + + function flushCallbacks () { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } + + // Here we have async deferring wrappers using microtasks. + // In 2.5 we used (macro) tasks (in combination with microtasks). + // However, it has subtle problems when state is changed right before repaint + // (e.g. #6813, out-in transitions). + // Also, using (macro) tasks in event handler would cause some weird behaviors + // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109). + // So we now use microtasks everywhere, again. + // A major drawback of this tradeoff is that there are some scenarios + // where microtasks have too high a priority and fire in between supposedly + // sequential events (e.g. #4521, #6690, which have workarounds) + // or even between bubbling of the same event (#6566). + var timerFunc; + + // The nextTick behavior leverages the microtask queue, which can be accessed + // via either native Promise.then or MutationObserver. + // MutationObserver has wider support, however it is seriously bugged in + // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It + // completely stops working after triggering a few times... so, if native + // Promise is available, we will use it: + /* istanbul ignore next, $flow-disable-line */ + if (typeof Promise !== 'undefined' && isNative(Promise)) { + var p = Promise.resolve(); + timerFunc = function () { + p.then(flushCallbacks); + // In problematic UIWebViews, Promise.then doesn't completely break, but + // it can get stuck in a weird state where callbacks are pushed into the + // microtask queue but the queue isn't being flushed, until the browser + // needs to do some other work, e.g. handle a timer. Therefore we can + // "force" the microtask queue to be flushed by adding an empty timer. + if (isIOS) { setTimeout(noop); } + }; + isUsingMicroTask = true; + } else if (!isIE && typeof MutationObserver !== 'undefined' && ( + isNative(MutationObserver) || + // PhantomJS and iOS 7.x + MutationObserver.toString() === '[object MutationObserverConstructor]' + )) { + // Use MutationObserver where native Promise is not available, + // e.g. PhantomJS, iOS7, Android 4.4 + // (#6466 MutationObserver is unreliable in IE11) + var counter = 1; + var observer = new MutationObserver(flushCallbacks); + var textNode = document.createTextNode(String(counter)); + observer.observe(textNode, { + characterData: true + }); + timerFunc = function () { + counter = (counter + 1) % 2; + textNode.data = String(counter); + }; + isUsingMicroTask = true; + } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { + // Fallback to setImmediate. + // Technically it leverages the (macro) task queue, + // but it is still a better choice than setTimeout. + timerFunc = function () { + setImmediate(flushCallbacks); + }; + } else { + // Fallback to setTimeout. + timerFunc = function () { + setTimeout(flushCallbacks, 0); + }; + } + + function nextTick (cb, ctx) { + var _resolve; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + handleError(e, ctx, 'nextTick'); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + timerFunc(); + } + // $flow-disable-line + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve) { + _resolve = resolve; + }) + } + } + + /* */ + + var mark; + var measure; + + { + var perf = inBrowser && window.performance; + /* istanbul ignore if */ + if ( + perf && + perf.mark && + perf.measure && + perf.clearMarks && + perf.clearMeasures + ) { + mark = function (tag) { return perf.mark(tag); }; + measure = function (name, startTag, endTag) { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + // perf.clearMeasures(name) + }; + } + } + + /* not type checking this file because flow doesn't play well with Proxy */ + + var initProxy; + + { + var allowedGlobals = makeMap( + 'Infinity,undefined,NaN,isFinite,isNaN,' + + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + + 'require' // for Webpack/Browserify + ); + + var warnNonPresent = function (target, key) { + warn( + "Property or method \"" + key + "\" is not defined on the instance but " + + 'referenced during render. Make sure that this property is reactive, ' + + 'either in the data option, or for class-based components, by ' + + 'initializing the property. ' + + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', + target + ); + }; + + var warnReservedPrefix = function (target, key) { + warn( + "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " + + 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + + 'prevent conflicts with Vue internals. ' + + 'See: https://vuejs.org/v2/api/#data', + target + ); + }; + + var hasProxy = + typeof Proxy !== 'undefined' && isNative(Proxy); + + if (hasProxy) { + var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); + config.keyCodes = new Proxy(config.keyCodes, { + set: function set (target, key, value) { + if (isBuiltInModifier(key)) { + warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key)); + return false + } else { + target[key] = value; + return true + } + } + }); + } + + var hasHandler = { + has: function has (target, key) { + var has = key in target; + var isAllowed = allowedGlobals(key) || + (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data)); + if (!has && !isAllowed) { + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } + } + return has || !isAllowed + } + }; + + var getHandler = { + get: function get (target, key) { + if (typeof key === 'string' && !(key in target)) { + if (key in target.$data) { warnReservedPrefix(target, key); } + else { warnNonPresent(target, key); } + } + return target[key] + } + }; + + initProxy = function initProxy (vm) { + if (hasProxy) { + // determine which proxy handler to use + var options = vm.$options; + var handlers = options.render && options.render._withStripped + ? getHandler + : hasHandler; + vm._renderProxy = new Proxy(vm, handlers); + } else { + vm._renderProxy = vm; + } + }; + } + + /* */ + + var seenObjects = new _Set(); + + /** + * Recursively traverse an object to evoke all converted + * getters, so that every nested property inside the object + * is collected as a "deep" dependency. + */ + function traverse (val) { + _traverse(val, seenObjects); + seenObjects.clear(); + } + + function _traverse (val, seen) { + var i, keys; + var isA = Array.isArray(val); + if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) { + return + } + if (val.__ob__) { + var depId = val.__ob__.dep.id; + if (seen.has(depId)) { + return + } + seen.add(depId); + } + if (isA) { + i = val.length; + while (i--) { _traverse(val[i], seen); } + } else { + keys = Object.keys(val); + i = keys.length; + while (i--) { _traverse(val[keys[i]], seen); } + } + } + + /* */ + + var normalizeEvent = cached(function (name) { + var passive = name.charAt(0) === '&'; + name = passive ? name.slice(1) : name; + var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first + name = once$$1 ? name.slice(1) : name; + var capture = name.charAt(0) === '!'; + name = capture ? name.slice(1) : name; + return { + name: name, + once: once$$1, + capture: capture, + passive: passive + } + }); + + function createFnInvoker (fns, vm) { + function invoker () { + var arguments$1 = arguments; + + var fns = invoker.fns; + if (Array.isArray(fns)) { + var cloned = fns.slice(); + for (var i = 0; i < cloned.length; i++) { + invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler"); + } + } else { + // return handler return value for single handlers + return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler") + } + } + invoker.fns = fns; + return invoker + } + + function updateListeners ( + on, + oldOn, + add, + remove$$1, + createOnceHandler, + vm + ) { + var name, def$$1, cur, old, event; + for (name in on) { + def$$1 = cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + if (isUndef(cur)) { + warn( + "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), + vm + ); + } else if (isUndef(old)) { + if (isUndef(cur.fns)) { + cur = on[name] = createFnInvoker(cur, vm); + } + if (isTrue(event.once)) { + cur = on[name] = createOnceHandler(event.name, cur, event.capture); + } + add(event.name, cur, event.capture, event.passive, event.params); + } else if (cur !== old) { + old.fns = cur; + on[name] = old; + } + } + for (name in oldOn) { + if (isUndef(on[name])) { + event = normalizeEvent(name); + remove$$1(event.name, oldOn[name], event.capture); + } + } + } + + /* */ + + function mergeVNodeHook (def, hookKey, hook) { + if (def instanceof VNode) { + def = def.data.hook || (def.data.hook = {}); + } + var invoker; + var oldHook = def[hookKey]; + + function wrappedHook () { + hook.apply(this, arguments); + // important: remove merged hook to ensure it's called only once + // and prevent memory leak + remove(invoker.fns, wrappedHook); + } + + if (isUndef(oldHook)) { + // no existing hook + invoker = createFnInvoker([wrappedHook]); + } else { + /* istanbul ignore if */ + if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { + // already a merged invoker + invoker = oldHook; + invoker.fns.push(wrappedHook); + } else { + // existing plain hook + invoker = createFnInvoker([oldHook, wrappedHook]); + } + } + + invoker.merged = true; + def[hookKey] = invoker; + } + + /* */ + + function extractPropsFromVNodeData ( + data, + Ctor, + tag + ) { + // we are only extracting raw values here. + // validation and default values are handled in the child + // component itself. + var propOptions = Ctor.options.props; + if (isUndef(propOptions)) { + return + } + var res = {}; + var attrs = data.attrs; + var props = data.props; + if (isDef(attrs) || isDef(props)) { + for (var key in propOptions) { + var altKey = hyphenate(key); + { + var keyInLowerCase = key.toLowerCase(); + if ( + key !== keyInLowerCase && + attrs && hasOwn(attrs, keyInLowerCase) + ) { + tip( + "Prop \"" + keyInLowerCase + "\" is passed to component " + + (formatComponentName(tag || Ctor)) + ", but the declared prop name is" + + " \"" + key + "\". " + + "Note that HTML attributes are case-insensitive and camelCased " + + "props need to use their kebab-case equivalents when using in-DOM " + + "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"." + ); + } + } + checkProp(res, props, key, altKey, true) || + checkProp(res, attrs, key, altKey, false); + } + } + return res + } + + function checkProp ( + res, + hash, + key, + altKey, + preserve + ) { + if (isDef(hash)) { + if (hasOwn(hash, key)) { + res[key] = hash[key]; + if (!preserve) { + delete hash[key]; + } + return true + } else if (hasOwn(hash, altKey)) { + res[key] = hash[altKey]; + if (!preserve) { + delete hash[altKey]; + } + return true + } + } + return false + } + + /* */ + + // The template compiler attempts to minimize the need for normalization by + // statically analyzing the template at compile time. + // + // For plain HTML markup, normalization can be completely skipped because the + // generated render function is guaranteed to return Array. There are + // two cases where extra normalization is needed: + + // 1. When the children contains components - because a functional component + // may return an Array instead of a single root. In this case, just a simple + // normalization is needed - if any child is an Array, we flatten the whole + // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep + // because functional components already normalize their own children. + function simpleNormalizeChildren (children) { + for (var i = 0; i < children.length; i++) { + if (Array.isArray(children[i])) { + return Array.prototype.concat.apply([], children) + } + } + return children + } + + // 2. When the children contains constructs that always generated nested Arrays, + // e.g.