From fcd0d8fa0a8e28f60b52ddab435cda431bf9b8c4 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Sat, 6 May 2017 14:34:28 -0700 Subject: [PATCH 01/93] Fix sped up animations --- interface/src/avatar/MySkeletonModel.cpp | 4 +--- .../src/avatars-renderer/SkeletonModel.cpp | 6 +++--- .../avatars-renderer/src/avatars-renderer/SkeletonModel.h | 1 + libraries/render-utils/src/CauterizedModel.h | 8 ++++---- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 639c9f003f..1b9aa4dc18 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -140,9 +140,6 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { auto orientation = myAvatar->getLocalOrientation(); _rig->computeMotionAnimationState(deltaTime, position, velocity, orientation, ccState); - // evaluate AnimGraph animation and update jointStates. - Model::updateRig(deltaTime, parentTransform); - Rig::EyeParameters eyeParams; eyeParams.eyeLookAt = lookAt; eyeParams.eyeSaccade = head->getSaccade(); @@ -153,6 +150,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { _rig->updateFromEyeParameters(eyeParams); + // evaluate AnimGraph animation and update jointStates. Parent::updateRig(deltaTime, parentTransform); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index 8fcc859b62..e1e5dc4282 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -120,7 +120,7 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } // evaluate AnimGraph animation and update jointStates. - Model::updateRig(deltaTime, parentTransform); + Parent::updateRig(deltaTime, parentTransform); } void SkeletonModel::updateAttitude() { @@ -136,7 +136,7 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { if (fullUpdate) { setBlendshapeCoefficients(_owningAvatar->getHead()->getSummedBlendshapeCoefficients()); - Model::simulate(deltaTime, fullUpdate); + Parent::simulate(deltaTime, fullUpdate); // let rig compute the model offset glm::vec3 registrationPoint; @@ -144,7 +144,7 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { setOffset(registrationPoint); } } else { - Model::simulate(deltaTime, fullUpdate); + Parent::simulate(deltaTime, fullUpdate); } if (!isActive() || !_owningAvatar->isMyAvatar()) { diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h index 23af04e964..059dd245fd 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h @@ -23,6 +23,7 @@ using SkeletonModelWeakPointer = std::weak_ptr; /// A skeleton loaded from a model. class SkeletonModel : public CauterizedModel { + using Parent = CauterizedModel; Q_OBJECT public: diff --git a/libraries/render-utils/src/CauterizedModel.h b/libraries/render-utils/src/CauterizedModel.h index 39bcedf639..dcff7bd12d 100644 --- a/libraries/render-utils/src/CauterizedModel.h +++ b/libraries/render-utils/src/CauterizedModel.h @@ -28,10 +28,10 @@ public: const std::unordered_set& getCauterizeBoneSet() const { return _cauterizeBoneSet; } void setCauterizeBoneSet(const std::unordered_set& boneSet) { _cauterizeBoneSet = boneSet; } - void deleteGeometry() override; - bool updateGeometry() override; + void deleteGeometry() override; + bool updateGeometry() override; - void createVisibleRenderItemSet() override; + void createVisibleRenderItemSet() override; void createCollisionRenderItemSet() override; virtual void updateClusterMatrices() override; @@ -41,7 +41,7 @@ public: protected: std::unordered_set _cauterizeBoneSet; - QVector _cauterizeMeshStates; + QVector _cauterizeMeshStates; bool _isCauterized { false }; bool _enableCauterization { false }; }; From 1a27dae884d86862f3923634eeb7fdb4f5b8606f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 4 May 2017 15:43:44 -0700 Subject: [PATCH 02/93] fix typos: RenderItemsMap not RenderItems --- libraries/render-utils/src/Model.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index eddda41d5e..acc84646c5 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -573,7 +573,7 @@ bool Model::addToScene(const render::ScenePointer& scene, bool somethingAdded = false; if (_collisionGeometry) { - if (_collisionRenderItems.empty()) { + if (_collisionRenderItemsMap.empty()) { foreach (auto renderItem, _collisionRenderItems) { auto item = scene->allocateID(); auto renderPayload = std::make_shared(renderItem); @@ -583,7 +583,7 @@ bool Model::addToScene(const render::ScenePointer& scene, transaction.resetItem(item, renderPayload); _collisionRenderItemsMap.insert(item, renderPayload); } - somethingAdded = !_collisionRenderItems.empty(); + somethingAdded = !_collisionRenderItemsMap.empty(); } } else { if (_modelMeshRenderItemsMap.empty()) { @@ -632,7 +632,7 @@ void Model::removeFromScene(const render::ScenePointer& scene, render::Transacti transaction.removeItem(item); } _collisionRenderItems.clear(); - _collisionRenderItems.clear(); + _collisionRenderItemsMap.clear(); _addedToScene = false; _renderInfoVertexCount = 0; From 5a11911e1d49bfa7e6b23ea3dd555b1f5c0c2aab Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 9 May 2017 19:38:52 -0400 Subject: [PATCH 03/93] close audio device when switching --- libraries/audio-client/src/AudioClient.cpp | 1 + libraries/audio-client/src/AudioClient.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index dae37ffc4b..440bfefe28 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1504,6 +1504,7 @@ bool AudioClient::switchOutputToAudioDevice(const QAudioDeviceInfo& outputDevice // cleanup any previously initialized device if (_audioOutput) { + _audioOutputIODevice.close(); _audioOutput->stop(); delete _audioOutput; diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 0e5363e0ff..9bdf55504c 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -94,7 +94,6 @@ public: _audio(audio), _unfulfilledReads(0) {} void start() { open(QIODevice::ReadOnly | QIODevice::Unbuffered); } - void stop() { close(); } qint64 readData(char * data, qint64 maxSize) override; qint64 writeData(const char * data, qint64 maxSize) override { return 0; } int getRecentUnfulfilledReads() { int unfulfilledReads = _unfulfilledReads; _unfulfilledReads = 0; return unfulfilledReads; } From 25f5fcb480e0bbc1f18feec38b04b2d619ea606a Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 8 May 2017 18:53:04 -0700 Subject: [PATCH 04/93] Fixing crash in texture transfer logic, again --- libraries/gpu-gl/CMakeLists.txt | 2 +- libraries/gpu-gl/src/gpu/gl/GLTexture.cpp | 355 +++++++++++++------- libraries/gpu-gl/src/gpu/gl/GLTexture.h | 34 +- libraries/gpu-gl/src/gpu/gl45/GL45Backend.h | 1 - 4 files changed, 247 insertions(+), 145 deletions(-) diff --git a/libraries/gpu-gl/CMakeLists.txt b/libraries/gpu-gl/CMakeLists.txt index 3e3853532a..65130d6d07 100644 --- a/libraries/gpu-gl/CMakeLists.txt +++ b/libraries/gpu-gl/CMakeLists.txt @@ -1,5 +1,5 @@ set(TARGET_NAME gpu-gl) -setup_hifi_library() +setup_hifi_library(Concurrent) link_hifi_libraries(shared gl gpu) if (UNIX) target_link_libraries(${TARGET_NAME} pthread) diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp index 5534419eaa..84dc49deba 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp @@ -160,8 +160,6 @@ const uvec3 GLVariableAllocationSupport::INITIAL_MIP_TRANSFER_DIMENSIONS { 64, 6 WorkQueue GLVariableAllocationSupport::_transferQueue; WorkQueue GLVariableAllocationSupport::_promoteQueue; WorkQueue GLVariableAllocationSupport::_demoteQueue; -TexturePointer GLVariableAllocationSupport::_currentTransferTexture; -TransferJobPointer GLVariableAllocationSupport::_currentTransferJob; size_t GLVariableAllocationSupport::_frameTexturesCreated { 0 }; #define OVERSUBSCRIBED_PRESSURE_VALUE 0.95f @@ -176,30 +174,19 @@ const uvec3 GLVariableAllocationSupport::MAX_TRANSFER_DIMENSIONS { 1024, 1024, 1 const size_t GLVariableAllocationSupport::MAX_TRANSFER_SIZE = GLVariableAllocationSupport::MAX_TRANSFER_DIMENSIONS.x * GLVariableAllocationSupport::MAX_TRANSFER_DIMENSIONS.y * 4; #if THREADED_TEXTURE_BUFFERING -std::shared_ptr TransferJob::_bufferThread { nullptr }; -std::atomic TransferJob::_shutdownBufferingThread { false }; -Mutex TransferJob::_mutex; -TransferJob::VoidLambdaQueue TransferJob::_bufferLambdaQueue; -void TransferJob::startTransferLoop() { - if (_bufferThread) { - return; - } - _shutdownBufferingThread = false; - _bufferThread = std::make_shared([] { - TransferJob::bufferLoop(); +TexturePointer GLVariableAllocationSupport::_currentTransferTexture; +TransferJobPointer GLVariableAllocationSupport::_currentTransferJob; +QThreadPool* TransferJob::_bufferThreadPool { nullptr }; + +void TransferJob::startBufferingThread() { + static std::once_flag once; + std::call_once(once, [&] { + _bufferThreadPool = new QThreadPool(qApp); + _bufferThreadPool->setMaxThreadCount(1); }); } -void TransferJob::stopTransferLoop() { - if (!_bufferThread) { - return; - } - _shutdownBufferingThread = true; - _bufferThread->join(); - _bufferThread.reset(); - _shutdownBufferingThread = false; -} #endif TransferJob::TransferJob(const GLTexture& parent, uint16_t sourceMip, uint16_t targetMip, uint8_t face, uint32_t lines, uint32_t lineOffset) @@ -233,7 +220,6 @@ TransferJob::TransferJob(const GLTexture& parent, uint16_t sourceMip, uint16_t t // Buffering can invoke disk IO, so it should be off of the main and render threads _bufferingLambda = [=] { _mipData = _parent._gpuObject.accessStoredMipFace(sourceMip, face)->createView(_transferSize, _transferOffset); - _bufferingCompleted = true; }; _transferLambda = [=] { @@ -243,65 +229,66 @@ TransferJob::TransferJob(const GLTexture& parent, uint16_t sourceMip, uint16_t t } TransferJob::TransferJob(const GLTexture& parent, std::function transferLambda) - : _parent(parent), _bufferingCompleted(true), _transferLambda(transferLambda) { + : _parent(parent), _bufferingRequired(false), _transferLambda(transferLambda) { } TransferJob::~TransferJob() { Backend::updateTextureTransferPendingSize(_transferSize, 0); } - bool TransferJob::tryTransfer() { - // Disable threaded texture transfer for now #if THREADED_TEXTURE_BUFFERING // Are we ready to transfer - if (_bufferingCompleted) { - _transferLambda(); + if (!bufferingCompleted()) { + startBuffering(); + return false; + } +#else + if (_bufferingRequired) { + _bufferingLambda(); + } +#endif + _transferLambda(); + return true; +} + +#if THREADED_TEXTURE_BUFFERING +bool TransferJob::bufferingRequired() const { + if (!_bufferingRequired) { + return false; + } + + // The default state of a QFuture is with status Canceled | Started | Finished, + // so we have to check isCancelled before we check the actual state + if (_bufferingStatus.isCanceled()) { return true; } - startBuffering(); - return false; -#else - if (!_bufferingCompleted) { - _bufferingLambda(); - _bufferingCompleted = true; - } - _transferLambda(); - return true; -#endif + return !_bufferingStatus.isStarted(); } -#if THREADED_TEXTURE_BUFFERING +bool TransferJob::bufferingCompleted() const { + if (!_bufferingRequired) { + return true; + } + + // The default state of a QFuture is with status Canceled | Started | Finished, + // so we have to check isCancelled before we check the actual state + if (_bufferingStatus.isCanceled()) { + return false; + } + + return _bufferingStatus.isFinished(); +} void TransferJob::startBuffering() { - if (_bufferingStarted) { - return; - } - _bufferingStarted = true; - { - Lock lock(_mutex); - _bufferLambdaQueue.push(_bufferingLambda); - } -} - -void TransferJob::bufferLoop() { - while (!_shutdownBufferingThread) { - VoidLambdaQueue workingQueue; - { - Lock lock(_mutex); - _bufferLambdaQueue.swap(workingQueue); - } - - if (workingQueue.empty()) { - QThread::msleep(5); - continue; - } - - while (!workingQueue.empty()) { - workingQueue.front()(); - workingQueue.pop(); - } + if (bufferingRequired()) { + assert(_bufferingStatus.isCanceled()); + _bufferingStatus = QtConcurrent::run(_bufferThreadPool, [=] { + _bufferingLambda(); + }); + assert(!_bufferingStatus.isCanceled()); + assert(_bufferingStatus.isStarted()); } } #endif @@ -316,7 +303,9 @@ GLVariableAllocationSupport::~GLVariableAllocationSupport() { void GLVariableAllocationSupport::addMemoryManagedTexture(const TexturePointer& texturePointer) { _memoryManagedTextures.push_back(texturePointer); - addToWorkQueue(texturePointer); + if (MemoryPressureState::Idle != _memoryPressureState) { + addToWorkQueue(texturePointer); + } } void GLVariableAllocationSupport::addToWorkQueue(const TexturePointer& texturePointer) { @@ -345,10 +334,8 @@ void GLVariableAllocationSupport::addToWorkQueue(const TexturePointer& texturePo break; case MemoryPressureState::Idle: - break; - - default: Q_UNREACHABLE(); + break; } } @@ -364,10 +351,10 @@ WorkQueue& GLVariableAllocationSupport::getActiveWorkQueue() { case MemoryPressureState::Transfer: return _transferQueue; - default: + case MemoryPressureState::Idle: + Q_UNREACHABLE(); break; } - Q_UNREACHABLE(); return empty; } @@ -460,16 +447,11 @@ void GLVariableAllocationSupport::updateMemoryPressure() { } if (newState != _memoryPressureState) { + _memoryPressureState = newState; #if THREADED_TEXTURE_BUFFERING if (MemoryPressureState::Transfer == _memoryPressureState) { - TransferJob::stopTransferLoop(); + TransferJob::startBufferingThread(); } - _memoryPressureState = newState; - if (MemoryPressureState::Transfer == _memoryPressureState) { - TransferJob::startTransferLoop(); - } -#else - _memoryPressureState = newState; #endif // Clear the existing queue _transferQueue = WorkQueue(); @@ -487,49 +469,111 @@ void GLVariableAllocationSupport::updateMemoryPressure() { } } +TexturePointer GLVariableAllocationSupport::getNextWorkQueueItem(WorkQueue& workQueue) { + while (!workQueue.empty()) { + auto workTarget = workQueue.top(); + + auto texture = workTarget.first.lock(); + if (!texture) { + workQueue.pop(); + continue; + } + + // Check whether the resulting texture can actually have work performed + GLTexture* gltexture = Backend::getGPUObject(*texture); + GLVariableAllocationSupport* vartexture = dynamic_cast(gltexture); + switch (_memoryPressureState) { + case MemoryPressureState::Oversubscribed: + if (vartexture->canDemote()) { + return texture; + } + break; + + case MemoryPressureState::Undersubscribed: + if (vartexture->canPromote()) { + return texture; + } + break; + + case MemoryPressureState::Transfer: + if (vartexture->hasPendingTransfers()) { + return texture; + } + break; + + case MemoryPressureState::Idle: + Q_UNREACHABLE(); + break; + } + + // If we got here, then the texture has no work to do in the current state, + // so pop it off the queue and continue + workQueue.pop(); + } + + return TexturePointer(); +} + +void GLVariableAllocationSupport::processWorkQueue(WorkQueue& workQueue) { + if (workQueue.empty()) { + return; + } + + // Get the front of the work queue to perform work + auto texture = getNextWorkQueueItem(workQueue); + if (!texture) { + return; + } + + // Grab the first item off the demote queue + PROFILE_RANGE(render_gpu_gl, __FUNCTION__); + + GLTexture* gltexture = Backend::getGPUObject(*texture); + GLVariableAllocationSupport* vartexture = dynamic_cast(gltexture); + switch (_memoryPressureState) { + case MemoryPressureState::Oversubscribed: + vartexture->demote(); + workQueue.pop(); + addToWorkQueue(texture); + break; + + case MemoryPressureState::Undersubscribed: + vartexture->promote(); + workQueue.pop(); + addToWorkQueue(texture); + break; + + case MemoryPressureState::Transfer: + if (vartexture->executeNextTransfer(texture)) { + workQueue.pop(); + addToWorkQueue(texture); + +#if THREADED_TEXTURE_BUFFERING + // Eagerly start the next buffering job if possible + texture = getNextWorkQueueItem(workQueue); + if (texture) { + gltexture = Backend::getGPUObject(*texture); + vartexture = dynamic_cast(gltexture); + vartexture->executeNextBuffer(texture); + } +#endif + } + break; + + case MemoryPressureState::Idle: + Q_UNREACHABLE(); + break; + } +} + void GLVariableAllocationSupport::processWorkQueues() { if (MemoryPressureState::Idle == _memoryPressureState) { return; } auto& workQueue = getActiveWorkQueue(); - PROFILE_RANGE(render_gpu_gl, __FUNCTION__); - while (!workQueue.empty()) { - auto workTarget = workQueue.top(); - workQueue.pop(); - auto texture = workTarget.first.lock(); - if (!texture) { - continue; - } - - // Grab the first item off the demote queue - GLTexture* gltexture = Backend::getGPUObject(*texture); - GLVariableAllocationSupport* vartexture = dynamic_cast(gltexture); - if (MemoryPressureState::Oversubscribed == _memoryPressureState) { - if (!vartexture->canDemote()) { - continue; - } - vartexture->demote(); - _memoryPressureStateStale = true; - } else if (MemoryPressureState::Undersubscribed == _memoryPressureState) { - if (!vartexture->canPromote()) { - continue; - } - vartexture->promote(); - _memoryPressureStateStale = true; - } else if (MemoryPressureState::Transfer == _memoryPressureState) { - if (!vartexture->hasPendingTransfers()) { - continue; - } - vartexture->executeNextTransfer(texture); - } else { - Q_UNREACHABLE(); - } - - // Reinject into the queue if more work to be done - addToWorkQueue(texture); - break; - } + // Do work on the front of the queue + processWorkQueue(workQueue); if (workQueue.empty()) { _memoryPressureState = MemoryPressureState::Idle; @@ -543,28 +587,83 @@ void GLVariableAllocationSupport::manageMemory() { processWorkQueues(); } +bool GLVariableAllocationSupport::executeNextTransfer(const TexturePointer& currentTexture) { +#if THREADED_TEXTURE_BUFFERING + // If a transfer job is active on the buffering thread, but has not completed it's buffering lambda, + // then we need to exit early, since we don't want to have the transfer job leave scope while it's + // being used in another thread -- See https://highfidelity.fogbugz.com/f/cases/4626 + if (_currentTransferJob && !_currentTransferJob->bufferingCompleted()) { + return false; + } +#endif -void GLVariableAllocationSupport::executeNextTransfer(const TexturePointer& currentTexture) { if (_populatedMip <= _allocatedMip) { +#if THREADED_TEXTURE_BUFFERING + _currentTransferJob.reset(); + _currentTransferTexture.reset(); +#endif + return true; + } + + // If the transfer queue is empty, rebuild it + if (_pendingTransfers.empty()) { + populateTransferQueue(); + } + + bool result = false; + if (!_pendingTransfers.empty()) { +#if THREADED_TEXTURE_BUFFERING + // If there is a current transfer, but it's not the top of the pending transfer queue, then it's an orphan, so we want to abandon it. + if (_currentTransferJob && _currentTransferJob != _pendingTransfers.front()) { + _currentTransferJob.reset(); + } + + if (!_currentTransferJob) { + // Keeping hold of a strong pointer to the transfer job ensures that if the pending transfer queue is rebuilt, the transfer job + // doesn't leave scope, causing a crash in the buffering thread + _currentTransferJob = _pendingTransfers.front(); + + // Keeping hold of a strong pointer during the transfer ensures that the transfer thread cannot try to access a destroyed texture + _currentTransferTexture = currentTexture; + } + + // transfer jobs use asynchronous buffering of the texture data because it may involve disk IO, so we execute a try here to determine if the buffering + // is complete + if (_currentTransferJob->tryTransfer()) { + _pendingTransfers.pop(); + // Once a given job is finished, release the shared pointers keeping them alive + _currentTransferTexture.reset(); + _currentTransferJob.reset(); + result = true; + } +#else + if (_pendingTransfers.front()->tryTransfer()) { + _pendingTransfers.pop(); + result = true; + } +#endif + } + return result; +} + +#if THREADED_TEXTURE_BUFFERING +void GLVariableAllocationSupport::executeNextBuffer(const TexturePointer& currentTexture) { + if (_currentTransferJob && !_currentTransferJob->bufferingCompleted()) { return; } + // If the transfer queue is empty, rebuild it if (_pendingTransfers.empty()) { populateTransferQueue(); } if (!_pendingTransfers.empty()) { - // Keeping hold of a strong pointer during the transfer ensures that the transfer thread cannot try to access a destroyed texture - _currentTransferTexture = currentTexture; - // Keeping hold of a strong pointer to the transfer job ensures that if the pending transfer queue is rebuilt, the transfer job - // doesn't leave scope, causing a crash in the buffering thread - _currentTransferJob = _pendingTransfers.front(); - // transfer jobs use asynchronous buffering of the texture data because it may involve disk IO, so we execute a try here to determine if the buffering - // is complete - if (_currentTransferJob->tryTransfer()) { - _pendingTransfers.pop(); - _currentTransferTexture.reset(); - _currentTransferJob.reset(); + if (!_currentTransferJob) { + _currentTransferJob = _pendingTransfers.front(); + _currentTransferTexture = currentTexture; } + + _currentTransferJob->startBuffering(); } } +#endif diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexture.h b/libraries/gpu-gl/src/gpu/gl/GLTexture.h index 877966f2d9..c6ce2a2495 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLTexture.h +++ b/libraries/gpu-gl/src/gpu/gl/GLTexture.h @@ -8,6 +8,9 @@ #ifndef hifi_gpu_gl_GLTexture_h #define hifi_gpu_gl_GLTexture_h +#include +#include + #include "GLShared.h" #include "GLBackend.h" #include "GLTexelFormat.h" @@ -47,24 +50,19 @@ public: class TransferJob { using VoidLambda = std::function; using VoidLambdaQueue = std::queue; - using ThreadPointer = std::shared_ptr; const GLTexture& _parent; Texture::PixelsPointer _mipData; size_t _transferOffset { 0 }; size_t _transferSize { 0 }; - // Indicates if a transfer from backing storage to interal storage has started - bool _bufferingStarted { false }; - bool _bufferingCompleted { false }; + bool _bufferingRequired { true }; VoidLambda _transferLambda; VoidLambda _bufferingLambda; #if THREADED_TEXTURE_BUFFERING - static Mutex _mutex; - static VoidLambdaQueue _bufferLambdaQueue; - static ThreadPointer _bufferThread; - static std::atomic _shutdownBufferingThread; - static void bufferLoop(); + // Indicates if a transfer from backing storage to interal storage has started + QFuture _bufferingStatus; + static QThreadPool* _bufferThreadPool; #endif public: @@ -75,14 +73,13 @@ public: bool tryTransfer(); #if THREADED_TEXTURE_BUFFERING - static void startTransferLoop(); - static void stopTransferLoop(); + void startBuffering(); + bool bufferingRequired() const; + bool bufferingCompleted() const; + static void startBufferingThread(); #endif private: -#if THREADED_TEXTURE_BUFFERING - void startBuffering(); -#endif void transfer(); }; @@ -100,8 +97,10 @@ protected: static WorkQueue _transferQueue; static WorkQueue _promoteQueue; static WorkQueue _demoteQueue; +#if THREADED_TEXTURE_BUFFERING static TexturePointer _currentTransferTexture; static TransferJobPointer _currentTransferJob; +#endif static const uvec3 INITIAL_MIP_TRANSFER_DIMENSIONS; static const uvec3 MAX_TRANSFER_DIMENSIONS; static const size_t MAX_TRANSFER_SIZE; @@ -109,6 +108,8 @@ protected: static void updateMemoryPressure(); static void processWorkQueues(); + static void processWorkQueue(WorkQueue& workQueue); + static TexturePointer getNextWorkQueueItem(WorkQueue& workQueue); static void addToWorkQueue(const TexturePointer& texture); static WorkQueue& getActiveWorkQueue(); @@ -118,7 +119,10 @@ protected: bool canPromote() const { return _allocatedMip > _minAllocatedMip; } bool canDemote() const { return _allocatedMip < _maxAllocatedMip; } bool hasPendingTransfers() const { return _populatedMip > _allocatedMip; } - void executeNextTransfer(const TexturePointer& currentTexture); +#if THREADED_TEXTURE_BUFFERING + void executeNextBuffer(const TexturePointer& currentTexture); +#endif + bool executeNextTransfer(const TexturePointer& currentTexture); virtual void populateTransferQueue() = 0; virtual void promote() = 0; virtual void demote() = 0; diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h index 8319e61382..fe2761b37d 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h +++ b/libraries/gpu-gl/src/gpu/gl45/GL45Backend.h @@ -17,7 +17,6 @@ #include #define INCREMENTAL_TRANSFER 0 -#define THREADED_TEXTURE_BUFFERING 1 #define GPU_SSBO_TRANSFORM_OBJECT 1 namespace gpu { namespace gl45 { From 3a20c47f397a62cdced2b11c751cbb89f7c41492 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 9 May 2017 11:09:39 -0700 Subject: [PATCH 05/93] fix a bug that could cause OBJ models with external mtl references to hang the loading thread --- libraries/fbx/src/OBJReader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/fbx/src/OBJReader.cpp b/libraries/fbx/src/OBJReader.cpp index 167cb8caac..1445d14d84 100644 --- a/libraries/fbx/src/OBJReader.cpp +++ b/libraries/fbx/src/OBJReader.cpp @@ -273,10 +273,9 @@ std::tuple requestData(QUrl& url) { return std::make_tuple(false, QByteArray()); } - request->send(); - QEventLoop loop; QObject::connect(request, &ResourceRequest::finished, &loop, &QEventLoop::quit); + request->send(); loop.exec(); if (request->getResult() == ResourceRequest::Success) { From a36565d5b2454c6fbcdd25033b82516bd06fe79d Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 May 2017 12:02:12 -0700 Subject: [PATCH 06/93] Fix possible corruption of ktx cache files When creating a file like this: 1. Create file 2. Write file 3. Close file there is an opening before the file is written and closed where, if the application were to crash (or not finish for any other reason), the file would be left in an undefined state. Instead, this change updates it to do this: 1. Create temp file 2. Write temp file 3. Close temp file 4. Move temp file to final path This ensures that at step 3 we have a valid file, before we rename it. We should never end up with a final file in an undefined state, but it is possible to end up with a temp file that is an undefined state if we, for instance, crash during step 2. --- libraries/networking/src/FileCache.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 0a859d511b..0ceda7a745 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -110,10 +110,16 @@ FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { return file; } - // write the new file - FILE* saveFile = fopen(filepath.c_str(), "wb"); + // write the data to a temporary file + std::string tmpFilepath = filepath + "_tmp"; + FILE* saveFile = fopen(tmpFilepath.c_str(), "wb"); if (saveFile != nullptr && fwrite(data, metadata.length, 1, saveFile) && fclose(saveFile) == 0) { - file = addFile(std::move(metadata), filepath); + int result = rename(tmpFilepath.c_str(), filepath.c_str()); + if (result == 0) { + file = addFile(std::move(metadata), filepath); + } else { + qCWarning(file_cache, "[%s] Failed to rename %s to %s (%s)", tmpFilepath.c_str(), filepath.c_str(), strerror(errno)); + } } else { qCWarning(file_cache, "[%s] Failed to write %s (%s)", _dirname.c_str(), metadata.key.c_str(), strerror(errno)); errno = 0; From c8e173e15922d7cc23e16ec47b71d7e8ea0671f2 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 May 2017 14:08:43 -0700 Subject: [PATCH 07/93] Update FileCache to use QSaveFile for atomic writes --- libraries/networking/src/FileCache.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 0ceda7a745..348206a863 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -17,6 +17,7 @@ #include #include +#include #include @@ -110,19 +111,13 @@ FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { return file; } - // write the data to a temporary file - std::string tmpFilepath = filepath + "_tmp"; - FILE* saveFile = fopen(tmpFilepath.c_str(), "wb"); - if (saveFile != nullptr && fwrite(data, metadata.length, 1, saveFile) && fclose(saveFile) == 0) { - int result = rename(tmpFilepath.c_str(), filepath.c_str()); - if (result == 0) { - file = addFile(std::move(metadata), filepath); - } else { - qCWarning(file_cache, "[%s] Failed to rename %s to %s (%s)", tmpFilepath.c_str(), filepath.c_str(), strerror(errno)); - } + QSaveFile saveFile(QString::fromStdString(filepath)); + saveFile.open(QIODevice::WriteOnly); + saveFile.write(data, metadata.length); + if (saveFile.commit()) { + file = addFile(std::move(metadata), filepath); } else { - qCWarning(file_cache, "[%s] Failed to write %s (%s)", _dirname.c_str(), metadata.key.c_str(), strerror(errno)); - errno = 0; + qCWarning(file_cache, "[%s] Failed to write %s", _dirname.c_str(), metadata.key.c_str()); } return file; From 99ee84bc311a9587e1bc7dc4c7036353e317bcb9 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 9 May 2017 16:27:02 -0700 Subject: [PATCH 08/93] Update FileCache writing to check QSaveFile::write return value --- libraries/networking/src/FileCache.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 348206a863..0f90807d08 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -112,9 +112,8 @@ FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { } QSaveFile saveFile(QString::fromStdString(filepath)); - saveFile.open(QIODevice::WriteOnly); - saveFile.write(data, metadata.length); - if (saveFile.commit()) { + if (saveFile.open(QIODevice::WriteOnly) && saveFile.write(data, metadata.length) == metadata.length + && saveFile.commit()) { file = addFile(std::move(metadata), filepath); } else { qCWarning(file_cache, "[%s] Failed to write %s", _dirname.c_str(), metadata.key.c_str()); From b517c9f7be10b93466083c664439082d3c5442fb Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 10 May 2017 09:43:55 -0700 Subject: [PATCH 09/93] Fix unsigned/signed comparision warning --- libraries/networking/src/FileCache.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 0f90807d08..43055e7ed6 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -112,8 +112,10 @@ FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { } QSaveFile saveFile(QString::fromStdString(filepath)); - if (saveFile.open(QIODevice::WriteOnly) && saveFile.write(data, metadata.length) == metadata.length + if (saveFile.open(QIODevice::WriteOnly) + && saveFile.write(data, metadata.length) == static_cast(metadata.length) && saveFile.commit()) { + file = addFile(std::move(metadata), filepath); } else { qCWarning(file_cache, "[%s] Failed to write %s", _dirname.c_str(), metadata.key.c_str()); From d1d3bd0fc1dbf668fe6a18b2d48899033532a20b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 9 May 2017 14:00:18 -0700 Subject: [PATCH 10/93] always call Head::simulate() for Avatar in view --- .../src/avatars-renderer/Avatar.cpp | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index be55653f64..664b0094f4 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -369,23 +369,25 @@ void Avatar::simulate(float deltaTime, bool inView) { PerformanceTimer perfTimer("simulate"); { PROFILE_RANGE(simulation, "updateJoints"); - if (inView && _hasNewJointData) { - _skeletonModel->getRig()->copyJointsFromJointData(_jointData); - glm::mat4 rootTransform = glm::scale(_skeletonModel->getScale()) * glm::translate(_skeletonModel->getOffset()); - _skeletonModel->getRig()->computeExternalPoses(rootTransform); - _jointDataSimulationRate.increment(); - - _skeletonModel->simulate(deltaTime, true); - - locationChanged(); // joints changed, so if there are any children, update them. - _hasNewJointData = false; - - glm::vec3 headPosition = getPosition(); - if (!_skeletonModel->getHeadPosition(headPosition)) { - headPosition = getPosition(); - } + if (inView) { Head* head = getHead(); - head->setPosition(headPosition); + if (_hasNewJointData) { + _skeletonModel->getRig()->copyJointsFromJointData(_jointData); + glm::mat4 rootTransform = glm::scale(_skeletonModel->getScale()) * glm::translate(_skeletonModel->getOffset()); + _skeletonModel->getRig()->computeExternalPoses(rootTransform); + _jointDataSimulationRate.increment(); + + _skeletonModel->simulate(deltaTime, true); + + locationChanged(); // joints changed, so if there are any children, update them. + _hasNewJointData = false; + + glm::vec3 headPosition = getPosition(); + if (!_skeletonModel->getHeadPosition(headPosition)) { + headPosition = getPosition(); + } + head->setPosition(headPosition); + } head->setScale(getUniformScale()); head->simulate(deltaTime); } else { From a5935b6fbc13d4cb27e920a98e0015a4b6a806e8 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 10 May 2017 11:40:42 +1200 Subject: [PATCH 11/93] Fix unreachable eye blink code --- libraries/avatars-renderer/src/avatars-renderer/Head.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index a90c9cd5f7..1c54ea269a 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -89,8 +89,7 @@ void Head::simulate(float deltaTime) { _timeWithoutTalking += deltaTime; if ((_averageLoudness - _longTermAverageLoudness) > TALKING_LOUDNESS) { _timeWithoutTalking = 0.0f; - - } else if (_timeWithoutTalking < BLINK_AFTER_TALKING && _timeWithoutTalking >= BLINK_AFTER_TALKING) { + } else if (_timeWithoutTalking - deltaTime < BLINK_AFTER_TALKING && _timeWithoutTalking >= BLINK_AFTER_TALKING) { forceBlink = true; } From 1414254fc29573f65f89f114e62b57a7159edfd4 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 8 May 2017 19:33:09 -0400 Subject: [PATCH 12/93] add launch.tester to user_actions --- interface/src/Application.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3be55e82cd..0d07c50e07 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -941,10 +941,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo // sessionRunTime will be reset soon by loadSettings. Grab it now to get previous session value. // The value will be 0 if the user blew away settings this session, which is both a feature and a bug. + static const QString TESTER = "HIFI_TESTER"; auto gpuIdent = GPUIdent::getInstance(); auto glContextData = getGLContextData(); QJsonObject properties = { { "version", applicationVersion() }, + { "tester", QProcessEnvironment::systemEnvironment().contains(TESTER) }, { "previousSessionCrashed", _previousSessionCrashed }, { "previousSessionRuntime", sessionRunTime.get() }, { "cpu_architecture", QSysInfo::currentCpuArchitecture() }, From 757b3be03ecb27781a87d68ece5ef9d544fa2417 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 10 May 2017 18:14:50 -0700 Subject: [PATCH 13/93] force data in MemoryStorage to be word aligned to avoid crash in glTextureSubImage2D --- .../src/avatars-renderer/OtherAvatar.h | 2 +- libraries/shared/src/SimpleMovingAverage.h | 2 +- libraries/shared/src/shared/Storage.cpp | 5 +++-- libraries/shared/src/shared/Storage.h | 13 ++++++++----- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h index 2f6c9a38aa..22a7e1863a 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h @@ -14,7 +14,7 @@ class OtherAvatar : public Avatar { public: explicit OtherAvatar(QThread* thread, RigPointer rig = nullptr); - void instantiableAvatar() {}; + virtual void instantiableAvatar() override {}; }; #endif // hifi_OtherAvatar_h diff --git a/libraries/shared/src/SimpleMovingAverage.h b/libraries/shared/src/SimpleMovingAverage.h index 0404ab9646..3855375f4c 100644 --- a/libraries/shared/src/SimpleMovingAverage.h +++ b/libraries/shared/src/SimpleMovingAverage.h @@ -71,7 +71,7 @@ public: void addSample(T sample) { if (numSamples > 0) { - average = (sample * WEIGHTING) + (average * ONE_MINUS_WEIGHTING); + average = (sample * (T)WEIGHTING) + (average * (T)ONE_MINUS_WEIGHTING); } else { average = sample; } diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index aae1f8455f..46c631c72a 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -38,8 +38,9 @@ StoragePointer Storage::toFileStorage(const QString& filename) const { return FileStorage::create(filename, size(), data()); } -MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) { - _data.resize(size); +MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) : _size(size) { + _data.resize((size + 3) / 4); // alloc smallest number of 4-byte chunks that will cover size bytes + if (data) { memcpy(_data.data(), data, size); } diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index da5b773d52..e0519c98f6 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -41,13 +41,16 @@ namespace storage { class MemoryStorage : public Storage { public: MemoryStorage(size_t size, const uint8_t* data = nullptr); - const uint8_t* data() const override { return _data.data(); } - uint8_t* data() { return _data.data(); } - uint8_t* mutableData() override { return _data.data(); } - size_t size() const override { return _data.size(); } + const uint8_t* data() const override { return reinterpret_cast(_data.data()); } + uint8_t* data() { return reinterpret_cast(_data.data()); } + uint8_t* mutableData() override { return reinterpret_cast(_data.data()); } + + size_t _size { 0 }; + size_t size() const override { return _size; } operator bool() const override { return true; } private: - std::vector _data; + // the vector is of uint32_t rather than uint8_t to force alignment + std::vector _data; }; class FileStorage : public Storage { From 0915c9ad9e3c8eb207e59f6b015902e8f4678e67 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 11 May 2017 07:11:40 -0700 Subject: [PATCH 14/93] pad MemoryStorage size to multiple of 4 rather than using a vector of uint32_t -- this gets the same alignment without needs casts --- libraries/shared/src/shared/Storage.cpp | 5 +++-- libraries/shared/src/shared/Storage.h | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index 46c631c72a..ec29a8d7f8 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -39,8 +39,9 @@ StoragePointer Storage::toFileStorage(const QString& filename) const { } MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) : _size(size) { - _data.resize((size + 3) / 4); // alloc smallest number of 4-byte chunks that will cover size bytes - + // alloc smallest number of 4-byte chunks that will cover size bytes. The buffer is padded out to a multiple + // of 4 to force an alignment that glTextureSubImage2D can later use. + _data.resize((size + 3) & ~0x3); if (data) { memcpy(_data.data(), data, size); } diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index e0519c98f6..f51d95a95a 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -41,16 +41,15 @@ namespace storage { class MemoryStorage : public Storage { public: MemoryStorage(size_t size, const uint8_t* data = nullptr); - const uint8_t* data() const override { return reinterpret_cast(_data.data()); } - uint8_t* data() { return reinterpret_cast(_data.data()); } - uint8_t* mutableData() override { return reinterpret_cast(_data.data()); } + const uint8_t* data() const override { return _data.data(); } + uint8_t* data() { return _data.data(); } + uint8_t* mutableData() override { return _data.data(); } size_t _size { 0 }; size_t size() const override { return _size; } operator bool() const override { return true; } private: - // the vector is of uint32_t rather than uint8_t to force alignment - std::vector _data; + std::vector _data; }; class FileStorage : public Storage { From 351ddc3b2af7da50dc0bd2028a0ae71de97e4a1c Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 11 May 2017 13:36:05 -0700 Subject: [PATCH 15/93] make _size const --- libraries/shared/src/shared/Storage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index f51d95a95a..ed1c1dd0f3 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -45,7 +45,7 @@ namespace storage { uint8_t* data() { return _data.data(); } uint8_t* mutableData() override { return _data.data(); } - size_t _size { 0 }; + const size_t _size; size_t size() const override { return _size; } operator bool() const override { return true; } private: From 3585edaa643da6117657ef122b1332c4ead1756e Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 11 May 2017 14:10:03 -0700 Subject: [PATCH 16/93] try, try again --- libraries/shared/src/shared/Storage.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index ec29a8d7f8..6a6393ff73 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -39,9 +39,11 @@ StoragePointer Storage::toFileStorage(const QString& filename) const { } MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) : _size(size) { - // alloc smallest number of 4-byte chunks that will cover size bytes. The buffer is padded out to a multiple - // of 4 to force an alignment that glTextureSubImage2D can later use. - _data.resize((size + 3) & ~0x3); + // we end up calling glCompressedTextureSubImage2D with this, and the rows of the image are expected + // to be word aligned. This is fine in all cases except for 1x1 images and 2x2 images. For 1x1, + // there is only one row, so the problem is avoided. For 2x2, we add 2 extra bytes so there's + // room for the second row. + _data.resize(size == 4 ? 6 : size); if (data) { memcpy(_data.data(), data, size); } From 9646569630f425f77f13b669ed1014934baebc85 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 11 May 2017 16:22:12 -0700 Subject: [PATCH 17/93] back out previous changes, do compressionOptions.setPitchAlignment(4) instead --- libraries/image/src/image/Image.cpp | 6 ++++++ libraries/shared/src/shared/Storage.cpp | 8 ++------ libraries/shared/src/shared/Storage.h | 4 +--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 68add428c1..32184dfe79 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -383,6 +383,7 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { } else if (mipFormat == gpu::Element::COLOR_RGBA_32) { compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(32, 0x000000FF, 0x0000FF00, @@ -393,6 +394,7 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { } else if (mipFormat == gpu::Element::COLOR_BGRA_32) { compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(32, 0x00FF0000, 0x0000FF00, @@ -403,6 +405,7 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { } else if (mipFormat == gpu::Element::COLOR_SRGBA_32) { compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(32, 0x000000FF, 0x0000FF00, @@ -411,6 +414,7 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { } else if (mipFormat == gpu::Element::COLOR_SBGRA_32) { compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(32, 0x00FF0000, 0x0000FF00, @@ -419,11 +423,13 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { } else if (mipFormat == gpu::Element::COLOR_R_8) { compressionOptions.setFormat(nvtt::Format_RGB); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(8, 0, 0, 0); } else if (mipFormat == gpu::Element::VEC2NU8_XY) { inputOptions.setNormalMap(true); compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); + compressionOptions.setPitchAlignment(4); compressionOptions.setPixelFormat(8, 8, 0, 0); } else { qCWarning(imagelogging) << "Unknown mip format"; diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index 6a6393ff73..aae1f8455f 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -38,12 +38,8 @@ StoragePointer Storage::toFileStorage(const QString& filename) const { return FileStorage::create(filename, size(), data()); } -MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) : _size(size) { - // we end up calling glCompressedTextureSubImage2D with this, and the rows of the image are expected - // to be word aligned. This is fine in all cases except for 1x1 images and 2x2 images. For 1x1, - // there is only one row, so the problem is avoided. For 2x2, we add 2 extra bytes so there's - // room for the second row. - _data.resize(size == 4 ? 6 : size); +MemoryStorage::MemoryStorage(size_t size, const uint8_t* data) { + _data.resize(size); if (data) { memcpy(_data.data(), data, size); } diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index ed1c1dd0f3..da5b773d52 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -44,9 +44,7 @@ namespace storage { const uint8_t* data() const override { return _data.data(); } uint8_t* data() { return _data.data(); } uint8_t* mutableData() override { return _data.data(); } - - const size_t _size; - size_t size() const override { return _size; } + size_t size() const override { return _data.size(); } operator bool() const override { return true; } private: std::vector _data; From aa4e100346405f7c1eff584949831353d608ffdb Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 5 May 2017 16:47:08 -0700 Subject: [PATCH 18/93] I think this is all that must be done. --- libraries/avatars/src/AvatarData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index cb819c6b20..c4d72efa43 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1497,7 +1497,7 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged) { - if (identity.updatedAt < _identityUpdatedAt) { + if (identity.updatedAt < _identityUpdatedAt && !(DependencyManager::get()->getRequestsDomainListData())) { qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() << "identity.updatedAt:" << identity.updatedAt << "_identityUpdatedAt:" << _identityUpdatedAt; return; From 97f67e27d1f8c317a40ba61a90ecf5d2a3cf9354 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 9 May 2017 12:23:40 -0700 Subject: [PATCH 19/93] This is a better method. --- assignment-client/src/avatars/AvatarMixer.cpp | 2 +- libraries/avatars/src/AvatarData.cpp | 6 +++--- libraries/avatars/src/AvatarData.h | 2 +- libraries/avatars/src/AvatarHashMap.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 05dbfee912..b4d0864581 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -402,7 +402,7 @@ void AvatarMixer::handleAvatarIdentityPacket(QSharedPointer mes AvatarData::parseAvatarIdentityPacket(message->getMessage(), identity); bool identityChanged = false; bool displayNameChanged = false; - avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged); + avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged, 0); if (identityChanged) { QMutexLocker nodeDataLocker(&nodeData->getMutex()); nodeData->flagIdentityChange(); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index c4d72efa43..5d5455327c 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1495,11 +1495,11 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { return _skeletonModelURL.scheme() == "file" ? emptyURL : _skeletonModelURL; } -void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged) { +void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { - if (identity.updatedAt < _identityUpdatedAt && !(DependencyManager::get()->getRequestsDomainListData())) { + if (identity.updatedAt < _identityUpdatedAt + clockSkew) { qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() - << "identity.updatedAt:" << identity.updatedAt << "_identityUpdatedAt:" << _identityUpdatedAt; + << "identity.updatedAt:" << identity.updatedAt << "_identityUpdatedAt:" << _identityUpdatedAt << "clockSkew:" << clockSkew; return; } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 6d801793b7..e6e0571878 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -538,7 +538,7 @@ public: // identityChanged returns true if identity has changed, false otherwise. // displayNameChanged returns true if displayName has changed, false otherwise. - void processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged); + void processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew); QByteArray identityByteArray() const; diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index 0d341c684e..f4dc30a10c 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -148,7 +148,7 @@ void AvatarHashMap::processAvatarIdentityPacket(QSharedPointer auto avatar = newOrExistingAvatar(identity.uuid, sendingNode); bool identityChanged = false; bool displayNameChanged = false; - avatar->processAvatarIdentity(identity, identityChanged, displayNameChanged); + avatar->processAvatarIdentity(identity, identityChanged, displayNameChanged, sendingNode->getClockSkewUsec()); } } From 81706c15020634aac5e320700cafd3da08b86b28 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 10 May 2017 14:46:14 -0700 Subject: [PATCH 20/93] Finally, the actual fix? --- assignment-client/src/avatars/AvatarMixer.cpp | 2 +- libraries/avatars/src/AvatarData.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index b4d0864581..998799f5e6 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -402,7 +402,7 @@ void AvatarMixer::handleAvatarIdentityPacket(QSharedPointer mes AvatarData::parseAvatarIdentityPacket(message->getMessage(), identity); bool identityChanged = false; bool displayNameChanged = false; - avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged, 0); + avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged, senderNode->getClockSkewUsec()); if (identityChanged) { QMutexLocker nodeDataLocker(&nodeData->getMutex()); nodeData->flagIdentityChange(); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 5d5455327c..ec36a81a43 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1497,9 +1497,9 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { - if (identity.updatedAt < _identityUpdatedAt + clockSkew) { + if ((_identityUpdatedAt > identity.updatedAt - clockSkew) && (_identityUpdatedAt != 0)) { qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() - << "identity.updatedAt:" << identity.updatedAt << "_identityUpdatedAt:" << _identityUpdatedAt << "clockSkew:" << clockSkew; + << "_identityUpdatedAt (" << _identityUpdatedAt << ") is greater than identity.updatedAt - clockSkew (" << identity.updatedAt << "-" << clockSkew << ")"; return; } @@ -1535,7 +1535,7 @@ void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityC // use the timestamp from this identity, since we want to honor the updated times in "server clock" // this will overwrite any changes we made locally to this AvatarData's _identityUpdatedAt - _identityUpdatedAt = identity.updatedAt; + _identityUpdatedAt = identity.updatedAt - clockSkew; } QByteArray AvatarData::identityByteArray() const { From 806b6e1acfed6576d2217729f59fabd2d5b5cb18 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 11 May 2017 11:45:07 -0700 Subject: [PATCH 21/93] Clarifying comments --- libraries/avatars/src/AvatarData.cpp | 3 +++ libraries/avatars/src/AvatarHashMap.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index ec36a81a43..392d3752e8 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1497,6 +1497,9 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { + // Consider the case where this packet is being processed on Client A, and Client A is connected to Sandbox B. + // If Client A's system clock is *ahead of* Sandbox B's system clock, "clockSkew" will be *negative*. + // If Client A's system clock is *behind* Sandbox B's system clock, "clockSkew" will be *positive*. if ((_identityUpdatedAt > identity.updatedAt - clockSkew) && (_identityUpdatedAt != 0)) { qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() << "_identityUpdatedAt (" << _identityUpdatedAt << ") is greater than identity.updatedAt - clockSkew (" << identity.updatedAt << "-" << clockSkew << ")"; diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index f4dc30a10c..155ef9a0a2 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -148,6 +148,7 @@ void AvatarHashMap::processAvatarIdentityPacket(QSharedPointer auto avatar = newOrExistingAvatar(identity.uuid, sendingNode); bool identityChanged = false; bool displayNameChanged = false; + // In this case, the "sendingNode" is the Avatar Mixer. avatar->processAvatarIdentity(identity, identityChanged, displayNameChanged, sendingNode->getClockSkewUsec()); } } From 6720c0c02b94184244692fb70f1d838d90599a39 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 12 May 2017 12:39:10 -0700 Subject: [PATCH 22/93] Fix the twitter mention --- scripts/system/html/js/SnapshotReview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 32a0956615..946e04beef 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -415,7 +415,7 @@ function updateShareInfo(containerID, storyID) { facebookButton.setAttribute("href", 'https://www.facebook.com/dialog/feed?app_id=1585088821786423&link=' + shareURL); twitterButton.setAttribute("target", "_blank"); - twitterButton.setAttribute("href", 'https://twitter.com/intent/tweet?text=I%20just%20took%20a%20snapshot!&url=' + shareURL + '&via=highfidelity&hashtags=VR,HiFi'); + twitterButton.setAttribute("href", 'https://twitter.com/intent/tweet?text=I%20just%20took%20a%20snapshot!&url=' + shareURL + '&via=highfidelityinc&hashtags=VR,HiFi'); hideUploadingMessageAndShare(containerID, storyID); } From 665316a5748660d3415b448cbd3e19205c0a1e28 Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:04:22 -0700 Subject: [PATCH 23/93] Adding a validation step at runtime for the cached KTX file in order to regenerate them if anything seems wrong --- libraries/gpu/src/gpu/Texture.cpp | 7 ++++++- libraries/gpu/src/gpu/Texture_ktx.cpp | 7 +++++++ libraries/ktx/src/ktx/KTX.cpp | 6 ++++++ libraries/ktx/src/ktx/Reader.cpp | 19 ++++++++++++++++++- libraries/ktx/src/ktx/Writer.cpp | 3 ++- .../src/model-networking/KTXCache.cpp | 2 +- .../src/model-networking/TextureCache.cpp | 4 +++- libraries/networking/src/FileCache.cpp | 11 ++++++++--- libraries/networking/src/FileCache.h | 2 +- libraries/shared/src/shared/Storage.cpp | 4 ++++ 10 files changed, 56 insertions(+), 9 deletions(-) diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp index 0f84d2a3c9..a94a0e1621 100755 --- a/libraries/gpu/src/gpu/Texture.cpp +++ b/libraries/gpu/src/gpu/Texture.cpp @@ -441,7 +441,10 @@ void Texture::assignStoredMip(uint16 level, storage::StoragePointer& storage) { // THen check that the mem texture passed make sense with its format Size expectedSize = evalStoredMipSize(level, getStoredMipFormat()); auto size = storage->size(); - if (storage->size() <= expectedSize) { + if (storage->size() < expectedSize) { + _storage->assignMipData(level, storage); + _stamp++; + } else if (size == expectedSize) { _storage->assignMipData(level, storage); _stamp++; } else if (size > expectedSize) { @@ -469,6 +472,8 @@ void Texture::assignStoredMipFace(uint16 level, uint8 face, storage::StoragePoin Size expectedSize = evalStoredMipFaceSize(level, getStoredMipFormat()); auto size = storage->size(); if (size <= expectedSize) { + _stamp++; + } else if (size == expectedSize) { _storage->assignMipFaceData(level, face, storage); _stamp++; } else if (size > expectedSize) { diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 3fc4e0d432..524fd0a88c 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -542,6 +542,13 @@ bool Texture::evalTextureFormat(const ktx::Header& header, Element& mipFormat, E } else { return false; } + } else if (header.getGLFormat() == ktx::GLFormat::RG && header.getGLType() == ktx::GLType::UNSIGNED_BYTE && header.getTypeSize() == 1) { + mipFormat = Format::VEC2NU8_XY; + if (header.getGLInternaFormat_Uncompressed() == ktx::GLInternalFormat_Uncompressed::RG8) { + texelFormat = Format::VEC2NU8_XY; + } else { + return false; + } } else if (header.getGLFormat() == ktx::GLFormat::COMPRESSED_FORMAT && header.getGLType() == ktx::GLType::COMPRESSED_TYPE) { if (header.getGLInternaFormat_Compressed() == ktx::GLInternalFormat_Compressed::COMPRESSED_SRGB_S3TC_DXT1_EXT) { mipFormat = Format::COLOR_COMPRESSED_SRGB; diff --git a/libraries/ktx/src/ktx/KTX.cpp b/libraries/ktx/src/ktx/KTX.cpp index 38bb91e5c2..ff80695280 100644 --- a/libraries/ktx/src/ktx/KTX.cpp +++ b/libraries/ktx/src/ktx/KTX.cpp @@ -114,6 +114,9 @@ size_t Header::evalFaceSize(uint32_t level) const { } size_t Header::evalImageSize(uint32_t level) const { auto faceSize = evalFaceSize(level); + if ((faceSize < 4) || ((faceSize & 0x3) != 0)) { + return 0; + } if (numberOfFaces == NUM_CUBEMAPFACES && numberOfArrayElements == 0) { return faceSize; } else { @@ -139,6 +142,9 @@ ImageDescriptors Header::generateImageDescriptors() const { size_t imageOffset = 0; for (uint32_t level = 0; level < numberOfMipmapLevels; ++level) { auto imageSize = static_cast(evalImageSize(level)); + if ((imageSize < 4) || ((imageSize & 0x3) != 0)) { + return ImageDescriptors(); + } if (imageSize == 0) { return ImageDescriptors(); } diff --git a/libraries/ktx/src/ktx/Reader.cpp b/libraries/ktx/src/ktx/Reader.cpp index 440e2f048c..49fc8bac70 100644 --- a/libraries/ktx/src/ktx/Reader.cpp +++ b/libraries/ktx/src/ktx/Reader.cpp @@ -148,12 +148,24 @@ namespace ktx { size_t imageSize = *reinterpret_cast(currentPtr); currentPtr += sizeof(uint32_t); + auto expectedImageSize = header.evalImageSize(images.size()); + if (imageSize != expectedImageSize) { + break; + } else if ((imageSize < 4) || (imageSize & 0x3)) { + break; + } + + // The image size is the face size, beware! + size_t faceSize = imageSize; + if (numFaces == NUM_CUBEMAPFACES) { + imageSize = NUM_CUBEMAPFACES * faceSize; + } + // If enough data ahead then capture the pointer if ((currentPtr - srcBytes) + imageSize <= (srcSize)) { auto padding = Header::evalPadding(imageSize); if (numFaces == NUM_CUBEMAPFACES) { - size_t faceSize = imageSize / NUM_CUBEMAPFACES; Image::FaceBytes faces(NUM_CUBEMAPFACES); for (uint32_t face = 0; face < NUM_CUBEMAPFACES; face++) { faces[face] = currentPtr; @@ -166,6 +178,7 @@ namespace ktx { currentPtr += imageSize + padding; } } else { + // Stop here break; } } @@ -190,6 +203,10 @@ namespace ktx { // populate image table result->_images = parseImages(result->getHeader(), result->getTexelsDataSize(), result->getTexelsData()); + if (result->_images.size() != result->getHeader().getNumberOfLevels()) { + // Fail if the number of images produced doesn't match the header number of levels + return nullptr; + } return result; } diff --git a/libraries/ktx/src/ktx/Writer.cpp b/libraries/ktx/src/ktx/Writer.cpp index 4226b8fa84..50f63767a0 100644 --- a/libraries/ktx/src/ktx/Writer.cpp +++ b/libraries/ktx/src/ktx/Writer.cpp @@ -210,7 +210,8 @@ namespace ktx { if (currentDataSize + sizeof(uint32_t) < allocatedImagesDataSize) { uint32_t imageOffset = currentPtr - destBytes; size_t imageSize = srcImages[l]._imageSize; - *(reinterpret_cast (currentPtr)) = (uint32_t) imageSize; + size_t imageFaceSize = srcImages[l]._faceSize; + *(reinterpret_cast (currentPtr)) = (uint32_t)imageFaceSize; // the imageSize written in the ktx is the FACE size currentPtr += sizeof(uint32_t); currentDataSize += sizeof(uint32_t); diff --git a/libraries/model-networking/src/model-networking/KTXCache.cpp b/libraries/model-networking/src/model-networking/KTXCache.cpp index 8ec1c4e41c..e0447af8e6 100644 --- a/libraries/model-networking/src/model-networking/KTXCache.cpp +++ b/libraries/model-networking/src/model-networking/KTXCache.cpp @@ -22,7 +22,7 @@ KTXCache::KTXCache(const std::string& dir, const std::string& ext) : } KTXFilePointer KTXCache::writeFile(const char* data, Metadata&& metadata) { - FilePointer file = FileCache::writeFile(data, std::move(metadata)); + FilePointer file = FileCache::writeFile(data, std::move(metadata), true); return std::static_pointer_cast(file); } diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index 9653cde7d8..47fc62a9b5 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -792,6 +792,8 @@ void ImageReader::read() { texture = gpu::Texture::unserialize(ktxFile->getFilepath()); if (texture) { texture = textureCache->cacheTextureByHash(hash, texture); + } else { + qCWarning(modelnetworking) << "Invalid cached KTX " << _url << " under hash " << hash.c_str() << ", recreating..."; } } } @@ -835,7 +837,7 @@ void ImageReader::read() { const char* data = reinterpret_cast(memKtx->_storage->data()); size_t length = memKtx->_storage->size(); auto& ktxCache = textureCache->_ktxCache; - networkTexture->_file = ktxCache.writeFile(data, KTXCache::Metadata(hash, length)); + networkTexture->_file = ktxCache.writeFile(data, KTXCache::Metadata(hash, length)); // if (!networkTexture->_file) { qCWarning(modelnetworking) << _url << "file cache failed"; } else { diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 43055e7ed6..8f3509d8f3 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -97,7 +97,7 @@ FilePointer FileCache::addFile(Metadata&& metadata, const std::string& filepath) return file; } -FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { +FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata, bool overwrite) { assert(_initialized); std::string filepath = getFilepath(metadata.key); @@ -107,8 +107,13 @@ FilePointer FileCache::writeFile(const char* data, File::Metadata&& metadata) { // if file already exists, return it FilePointer file = getFile(metadata.key); if (file) { - qCWarning(file_cache, "[%s] Attempted to overwrite %s", _dirname.c_str(), metadata.key.c_str()); - return file; + if (!overwrite) { + qCWarning(file_cache, "[%s] Attempted to overwrite %s", _dirname.c_str(), metadata.key.c_str()); + return file; + } else { + qCWarning(file_cache, "[%s] Overwriting %s", _dirname.c_str(), metadata.key.c_str()); + file.reset(); + } } QSaveFile saveFile(QString::fromStdString(filepath)); diff --git a/libraries/networking/src/FileCache.h b/libraries/networking/src/FileCache.h index f77db555bc..908ddcd285 100644 --- a/libraries/networking/src/FileCache.h +++ b/libraries/networking/src/FileCache.h @@ -80,7 +80,7 @@ protected: /// must be called after construction to create the cache on the fs and restore persisted files void initialize(); - FilePointer writeFile(const char* data, Metadata&& metadata); + FilePointer writeFile(const char* data, Metadata&& metadata, bool overwrite = false); FilePointer getFile(const Key& key); /// create a file diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index aae1f8455f..d78c124349 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -21,6 +21,10 @@ ViewStorage::ViewStorage(const storage::StoragePointer& owner, size_t size, cons StoragePointer Storage::createView(size_t viewSize, size_t offset) const { auto selfSize = size(); + if ((viewSize < 4) || ((viewSize & 0x3) != 0)) { + throw std::runtime_error("Invalid mapping range"); + } + if (0 == viewSize) { viewSize = selfSize; } From 833eb0b5277460761f98ca9887fff5b8d05bf15f Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:10:48 -0700 Subject: [PATCH 24/93] Fixing the test... --- libraries/gpu/src/gpu/Texture.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp index a94a0e1621..b027c25907 100755 --- a/libraries/gpu/src/gpu/Texture.cpp +++ b/libraries/gpu/src/gpu/Texture.cpp @@ -471,7 +471,8 @@ void Texture::assignStoredMipFace(uint16 level, uint8 face, storage::StoragePoin // THen check that the mem texture passed make sense with its format Size expectedSize = evalStoredMipFaceSize(level, getStoredMipFormat()); auto size = storage->size(); - if (size <= expectedSize) { + if (size < expectedSize) { + _storage->assignMipFaceData(level, face, storage); _stamp++; } else if (size == expectedSize) { _storage->assignMipFaceData(level, face, storage); From 62f2bf722d96e27f4c82d8a75ed92e088436b68f Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:15:00 -0700 Subject: [PATCH 25/93] Adding a comment for debug sake --- libraries/gpu/src/gpu/Texture.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp index b027c25907..a545be9088 100755 --- a/libraries/gpu/src/gpu/Texture.cpp +++ b/libraries/gpu/src/gpu/Texture.cpp @@ -441,6 +441,7 @@ void Texture::assignStoredMip(uint16 level, storage::StoragePointer& storage) { // THen check that the mem texture passed make sense with its format Size expectedSize = evalStoredMipSize(level, getStoredMipFormat()); auto size = storage->size(); + // NOTE: doing the same thing in all the next block but beeing able to breakpoint with more accuracy if (storage->size() < expectedSize) { _storage->assignMipData(level, storage); _stamp++; @@ -471,6 +472,7 @@ void Texture::assignStoredMipFace(uint16 level, uint8 face, storage::StoragePoin // THen check that the mem texture passed make sense with its format Size expectedSize = evalStoredMipFaceSize(level, getStoredMipFormat()); auto size = storage->size(); + // NOTE: doing the same thing in all the next block but beeing able to breakpoint with more accuracy if (size < expectedSize) { _storage->assignMipFaceData(level, face, storage); _stamp++; From 05ad4b13a5b474d7e5471118dbe338f03feea00a Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:25:07 -0700 Subject: [PATCH 26/93] Replace the alignment test by a nice function --- libraries/ktx/src/ktx/KTX.cpp | 7 +++++-- libraries/ktx/src/ktx/KTX.h | 1 + libraries/ktx/src/ktx/Reader.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/ktx/src/ktx/KTX.cpp b/libraries/ktx/src/ktx/KTX.cpp index ff80695280..b43d015d65 100644 --- a/libraries/ktx/src/ktx/KTX.cpp +++ b/libraries/ktx/src/ktx/KTX.cpp @@ -22,6 +22,9 @@ uint32_t Header::evalPadding(size_t byteSize) { return (uint32_t) (3 - (byteSize + 3) % PACKING_SIZE);// padding ? PACKING_SIZE - padding : 0); } +bool Header::checkAlignment(size_t byteSize) { + return ((byteSize & 0x3) == 0); +} const Header::Identifier ktx::Header::IDENTIFIER {{ 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A @@ -114,7 +117,7 @@ size_t Header::evalFaceSize(uint32_t level) const { } size_t Header::evalImageSize(uint32_t level) const { auto faceSize = evalFaceSize(level); - if ((faceSize < 4) || ((faceSize & 0x3) != 0)) { + if (!checkAlignment(faceSize)) { return 0; } if (numberOfFaces == NUM_CUBEMAPFACES && numberOfArrayElements == 0) { @@ -142,7 +145,7 @@ ImageDescriptors Header::generateImageDescriptors() const { size_t imageOffset = 0; for (uint32_t level = 0; level < numberOfMipmapLevels; ++level) { auto imageSize = static_cast(evalImageSize(level)); - if ((imageSize < 4) || ((imageSize & 0x3) != 0)) { + if (!checkAlignment(imageSize)) { return ImageDescriptors(); } if (imageSize == 0) { diff --git a/libraries/ktx/src/ktx/KTX.h b/libraries/ktx/src/ktx/KTX.h index e8fa019a07..656cf93f34 100644 --- a/libraries/ktx/src/ktx/KTX.h +++ b/libraries/ktx/src/ktx/KTX.h @@ -309,6 +309,7 @@ namespace ktx { static const uint32_t REVERSE_ENDIAN_TEST = 0x01020304; static uint32_t evalPadding(size_t byteSize); + static bool checkAlignment(size_t byteSize); Header(); diff --git a/libraries/ktx/src/ktx/Reader.cpp b/libraries/ktx/src/ktx/Reader.cpp index 49fc8bac70..e69ce53551 100644 --- a/libraries/ktx/src/ktx/Reader.cpp +++ b/libraries/ktx/src/ktx/Reader.cpp @@ -151,7 +151,7 @@ namespace ktx { auto expectedImageSize = header.evalImageSize(images.size()); if (imageSize != expectedImageSize) { break; - } else if ((imageSize < 4) || (imageSize & 0x3)) { + } else if (!Header::checkAlignment(imageSize)) { break; } From 9d6cf5b7f8dc112c4715d37c418c50e1bff7a56d Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:27:58 -0700 Subject: [PATCH 27/93] not testing in storage for alignment --- libraries/shared/src/shared/Storage.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index d78c124349..aae1f8455f 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -21,10 +21,6 @@ ViewStorage::ViewStorage(const storage::StoragePointer& owner, size_t size, cons StoragePointer Storage::createView(size_t viewSize, size_t offset) const { auto selfSize = size(); - if ((viewSize < 4) || ((viewSize & 0x3) != 0)) { - throw std::runtime_error("Invalid mapping range"); - } - if (0 == viewSize) { viewSize = selfSize; } From 91d439442d5089ff5697912790d02ff1f77add0c Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Fri, 12 May 2017 20:20:03 -0700 Subject: [PATCH 28/93] warning -1 --- libraries/ktx/src/ktx/Reader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ktx/src/ktx/Reader.cpp b/libraries/ktx/src/ktx/Reader.cpp index e69ce53551..1b63af5262 100644 --- a/libraries/ktx/src/ktx/Reader.cpp +++ b/libraries/ktx/src/ktx/Reader.cpp @@ -148,7 +148,7 @@ namespace ktx { size_t imageSize = *reinterpret_cast(currentPtr); currentPtr += sizeof(uint32_t); - auto expectedImageSize = header.evalImageSize(images.size()); + auto expectedImageSize = header.evalImageSize((uint32_t) images.size()); if (imageSize != expectedImageSize) { break; } else if (!Header::checkAlignment(imageSize)) { From cde7d6857018846c2b74b37faf12b3e48000cab7 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 15 May 2017 18:11:30 -0700 Subject: [PATCH 29/93] Fix domain settings not getting cleared on re-assignment --- assignment-client/src/audio/AudioMixer.cpp | 22 +++++++++++++++++++--- assignment-client/src/audio/AudioMixer.h | 1 + 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index b95c429b2d..98eca60e85 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -38,13 +38,14 @@ #include "AudioMixer.h" static const float DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE = 0.5f; // attenuation = -6dB * log2(distance) +static const int DEFAULT_NUM_STATIC_JITTER_FRAMES = -1; static const float DEFAULT_NOISE_MUTING_THRESHOLD = 1.0f; static const QString AUDIO_MIXER_LOGGING_TARGET_NAME = "audio-mixer"; static const QString AUDIO_ENV_GROUP_KEY = "audio_env"; static const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer"; static const QString AUDIO_THREADING_GROUP_KEY = "audio_threading"; -int AudioMixer::_numStaticJitterFrames{ -1 }; +int AudioMixer::_numStaticJitterFrames{ DEFAULT_NUM_STATIC_JITTER_FRAMES }; float AudioMixer::_noiseMutingThreshold{ DEFAULT_NOISE_MUTING_THRESHOLD }; float AudioMixer::_attenuationPerDoublingInDistance{ DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE }; std::map> AudioMixer::_availableCodecs{ }; @@ -56,7 +57,12 @@ QVector AudioMixer::_zoneReverbSettings; AudioMixer::AudioMixer(ReceivedMessage& message) : ThreadedAssignment(message) { + // Always clear settings first + // This prevents previous assignment settings from sticking around + clearDomainSettings(); + // hash the available codecs (on the mixer) + _availableCodecs.clear(); // Make sure struct is clean auto codecPlugins = PluginManager::getInstance()->getCodecPlugins(); std::for_each(codecPlugins.cbegin(), codecPlugins.cend(), [&](const CodecPluginPointer& codec) { @@ -232,7 +238,7 @@ void AudioMixer::sendStatsPacket() { } // general stats - statsObject["useDynamicJitterBuffers"] = _numStaticJitterFrames == -1; + statsObject["useDynamicJitterBuffers"] = _numStaticJitterFrames == DEFAULT_NUM_STATIC_JITTER_FRAMES; statsObject["threads"] = _slavePool.numThreads(); @@ -490,6 +496,16 @@ int AudioMixer::prepareFrame(const SharedNodePointer& node, unsigned int frame) return data->checkBuffersBeforeFrameSend(); } +void AudioMixer::clearDomainSettings() { + _numStaticJitterFrames = DEFAULT_NUM_STATIC_JITTER_FRAMES; + _attenuationPerDoublingInDistance = DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE; + _noiseMutingThreshold = DEFAULT_NOISE_MUTING_THRESHOLD; + _codecPreferenceOrder.clear(); + _audioZones.clear(); + _zoneSettings.clear(); + _zoneReverbSettings.clear(); +} + void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) { qDebug() << "AVX2 Support:" << (cpuSupportsAVX2() ? "enabled" : "disabled"); @@ -525,7 +541,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) { qDebug() << "Static desired jitter buffer frames:" << _numStaticJitterFrames; } else { qDebug() << "Disabling dynamic jitter buffers."; - _numStaticJitterFrames = -1; + _numStaticJitterFrames = DEFAULT_NUM_STATIC_JITTER_FRAMES; } // check for deprecated audio settings diff --git a/assignment-client/src/audio/AudioMixer.h b/assignment-client/src/audio/AudioMixer.h index 0641c04a6c..18e754016e 100644 --- a/assignment-client/src/audio/AudioMixer.h +++ b/assignment-client/src/audio/AudioMixer.h @@ -79,6 +79,7 @@ private: QString percentageForMixStats(int counter); void parseSettingsObject(const QJsonObject& settingsObject); + void clearDomainSettings(); float _trailingMixRatio { 0.0f }; float _throttlingRatio { 0.0f }; From a2950be5e73918b3d3842d90ae5a0534d3456df9 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 15 May 2017 14:12:48 -0700 Subject: [PATCH 30/93] Force _identityUpdatedAt to stay above 0 --- libraries/avatars/src/AvatarData.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 392d3752e8..1990903650 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1538,7 +1538,14 @@ void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityC // use the timestamp from this identity, since we want to honor the updated times in "server clock" // this will overwrite any changes we made locally to this AvatarData's _identityUpdatedAt - _identityUpdatedAt = identity.updatedAt - clockSkew; + // Additionally, ensure that the timestamp that we try to record isn't negative, as + // "_identityUpdatedAt" is an *unsigned* 64-bit integer. Furthermore, negative timestamps + // wouldn't make sense. + if (identity.updatedAt - clockSkew >= 0) { + _identityUpdatedAt = identity.updatedAt - clockSkew; + } else { + _identityUpdatedAt = 0; + } } QByteArray AvatarData::identityByteArray() const { From 0738c7fce7c5ab83938e303b3759b09fdde4243d Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 15 May 2017 14:55:05 -0700 Subject: [PATCH 31/93] Improve the test - thanks Dave! --- libraries/avatars/src/AvatarData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 1990903650..5d5f3bcd6e 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1541,7 +1541,7 @@ void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityC // Additionally, ensure that the timestamp that we try to record isn't negative, as // "_identityUpdatedAt" is an *unsigned* 64-bit integer. Furthermore, negative timestamps // wouldn't make sense. - if (identity.updatedAt - clockSkew >= 0) { + if (identity.updatedAt > clockSkew) { _identityUpdatedAt = identity.updatedAt - clockSkew; } else { _identityUpdatedAt = 0; From 0510572a2fc60f005c6a9ddc7ce8957b92d59a93 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 15 May 2017 17:39:19 -0700 Subject: [PATCH 32/93] Thanks to Andrew! --- libraries/avatars/src/AvatarData.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 5d5f3bcd6e..9a01934b5b 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1496,13 +1496,18 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { } void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { + quint64 identityPacketUpdatedAt = identity.updatedAt; + + if (identityPacketUpdatedAt <= (uint64_t)(abs(clockSkew))) { // Incoming timestamp is bad - compute our own timestamp + identityPacketUpdatedAt = usecTimestampNow() + clockSkew; + } // Consider the case where this packet is being processed on Client A, and Client A is connected to Sandbox B. // If Client A's system clock is *ahead of* Sandbox B's system clock, "clockSkew" will be *negative*. // If Client A's system clock is *behind* Sandbox B's system clock, "clockSkew" will be *positive*. - if ((_identityUpdatedAt > identity.updatedAt - clockSkew) && (_identityUpdatedAt != 0)) { + if ((_identityUpdatedAt > identityPacketUpdatedAt - clockSkew) && (_identityUpdatedAt != 0)) { qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() - << "_identityUpdatedAt (" << _identityUpdatedAt << ") is greater than identity.updatedAt - clockSkew (" << identity.updatedAt << "-" << clockSkew << ")"; + << "_identityUpdatedAt (" << _identityUpdatedAt << ") is greater than identityPacketUpdatedAt - clockSkew (" << identityPacketUpdatedAt << "-" << clockSkew << ")"; return; } @@ -1538,14 +1543,7 @@ void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityC // use the timestamp from this identity, since we want to honor the updated times in "server clock" // this will overwrite any changes we made locally to this AvatarData's _identityUpdatedAt - // Additionally, ensure that the timestamp that we try to record isn't negative, as - // "_identityUpdatedAt" is an *unsigned* 64-bit integer. Furthermore, negative timestamps - // wouldn't make sense. - if (identity.updatedAt > clockSkew) { - _identityUpdatedAt = identity.updatedAt - clockSkew; - } else { - _identityUpdatedAt = 0; - } + _identityUpdatedAt = identityPacketUpdatedAt - clockSkew; } QByteArray AvatarData::identityByteArray() const { From c799ddc9276b207d14e778d12920076c1ebf349f Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 16 May 2017 14:53:54 -0700 Subject: [PATCH 33/93] CR --- assignment-client/src/audio/AudioMixer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index 98eca60e85..bb03a6ec93 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -38,14 +38,14 @@ #include "AudioMixer.h" static const float DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE = 0.5f; // attenuation = -6dB * log2(distance) -static const int DEFAULT_NUM_STATIC_JITTER_FRAMES = -1; +static const int DISABLE_STATIC_JITTER_FRAMES = -1; static const float DEFAULT_NOISE_MUTING_THRESHOLD = 1.0f; static const QString AUDIO_MIXER_LOGGING_TARGET_NAME = "audio-mixer"; static const QString AUDIO_ENV_GROUP_KEY = "audio_env"; static const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer"; static const QString AUDIO_THREADING_GROUP_KEY = "audio_threading"; -int AudioMixer::_numStaticJitterFrames{ DEFAULT_NUM_STATIC_JITTER_FRAMES }; +int AudioMixer::_numStaticJitterFrames{ DISABLE_STATIC_JITTER_FRAMES }; float AudioMixer::_noiseMutingThreshold{ DEFAULT_NOISE_MUTING_THRESHOLD }; float AudioMixer::_attenuationPerDoublingInDistance{ DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE }; std::map> AudioMixer::_availableCodecs{ }; @@ -238,7 +238,7 @@ void AudioMixer::sendStatsPacket() { } // general stats - statsObject["useDynamicJitterBuffers"] = _numStaticJitterFrames == DEFAULT_NUM_STATIC_JITTER_FRAMES; + statsObject["useDynamicJitterBuffers"] = _numStaticJitterFrames == DISABLE_STATIC_JITTER_FRAMES; statsObject["threads"] = _slavePool.numThreads(); @@ -497,7 +497,7 @@ int AudioMixer::prepareFrame(const SharedNodePointer& node, unsigned int frame) } void AudioMixer::clearDomainSettings() { - _numStaticJitterFrames = DEFAULT_NUM_STATIC_JITTER_FRAMES; + _numStaticJitterFrames = DISABLE_STATIC_JITTER_FRAMES; _attenuationPerDoublingInDistance = DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE; _noiseMutingThreshold = DEFAULT_NOISE_MUTING_THRESHOLD; _codecPreferenceOrder.clear(); @@ -541,7 +541,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) { qDebug() << "Static desired jitter buffer frames:" << _numStaticJitterFrames; } else { qDebug() << "Disabling dynamic jitter buffers."; - _numStaticJitterFrames = DEFAULT_NUM_STATIC_JITTER_FRAMES; + _numStaticJitterFrames = DISABLE_STATIC_JITTER_FRAMES; } // check for deprecated audio settings From e69c322fd39bd3d38e04df2d3cbe2894833d1091 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 17 May 2017 14:30:32 +1200 Subject: [PATCH 34/93] Get UserActivityLogger working in AC scripts --- libraries/networking/src/AccountManager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 83f1504f00..c614c8537f 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -28,6 +28,7 @@ #include +#include "NetworkingConstants.h" #include "NetworkLogging.h" #include "NodeList.h" #include "udt/PacketHeaders.h" @@ -225,6 +226,10 @@ void AccountManager::sendRequest(const QString& path, uuidStringWithoutCurlyBraces(_sessionID).toLocal8Bit()); QUrl requestURL = _authURL; + + if (requestURL.isEmpty()) { // Assignment client doesn't set _authURL. + requestURL = NetworkingConstants::METAVERSE_SERVER_URL; + } if (path.startsWith("/")) { requestURL.setPath(path); From 223b1a858b8a75b1454f688ab0f5a392db2b0216 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 18 May 2017 12:27:31 +1200 Subject: [PATCH 35/93] Fix avatar eye look-at in recording playback --- libraries/avatars/src/AvatarData.cpp | 22 +++++++++++----------- libraries/avatars/src/HeadData.cpp | 9 +++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index eebb9c2633..c5942ae614 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -2039,17 +2039,6 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) { version = JSON_AVATAR_JOINT_ROTATIONS_IN_RELATIVE_FRAME_VERSION; } - // The head setOrientation likes to overwrite the avatar orientation, - // so lets do the head first - // Most head data is relative to the avatar, and needs no basis correction, - // but the lookat vector does need correction - if (json.contains(JSON_AVATAR_HEAD)) { - if (!_headData) { - _headData = new HeadData(this); - } - _headData->fromJson(json[JSON_AVATAR_HEAD].toObject()); - } - if (json.contains(JSON_AVATAR_BODY_MODEL)) { auto bodyModelURL = json[JSON_AVATAR_BODY_MODEL].toString(); if (useFrameSkeleton && bodyModelURL != getSkeletonModelURL().toString()) { @@ -2088,6 +2077,17 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) { setOrientation(currentBasis->getRotation()); } + // Do after avatar orientation because head look-at needs avatar orientation. + // But the head setOrientation() overwrites avatar orientation so reset the correct orientation after. + if (json.contains(JSON_AVATAR_HEAD)) { + auto avatarOrientation = getOrientation(); + if (!_headData) { + _headData = new HeadData(this); + } + _headData->fromJson(json[JSON_AVATAR_HEAD].toObject()); + setOrientation(avatarOrientation); + } + if (json.contains(JSON_AVATAR_SCALE)) { setTargetScale((float)json[JSON_AVATAR_SCALE].toDouble()); } diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index 2704b6539c..0f2ae8a9a7 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -173,14 +173,15 @@ void HeadData::fromJson(const QJsonObject& json) { } } - if (json.contains(JSON_AVATAR_HEAD_ROTATION)) { - setOrientation(quatFromJsonValue(json[JSON_AVATAR_HEAD_ROTATION])); - } - if (json.contains(JSON_AVATAR_HEAD_LOOKAT)) { auto relativeLookAt = vec3FromJsonValue(json[JSON_AVATAR_HEAD_LOOKAT]); if (glm::length2(relativeLookAt) > 0.01f) { setLookAtPosition((_owningAvatar->getOrientation() * relativeLookAt) + _owningAvatar->getPosition()); } } + + // Do after look-at because look-at requires original avatar orientation and setOrientation() may change the value. + if (json.contains(JSON_AVATAR_HEAD_ROTATION)) { + setOrientation(quatFromJsonValue(json[JSON_AVATAR_HEAD_ROTATION])); + } } From f00232ab6da4a77991e5a81209a266b727b86496 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 18 May 2017 13:30:29 +1200 Subject: [PATCH 36/93] Fix avatar eyelids and blinking in recording playback Reinstates conditions to not calculate eye movements if face / eye trackers are connected; they're considered connected for recording playback. --- .../src/avatars-renderer/Head.cpp | 120 ++++++++++-------- 1 file changed, 64 insertions(+), 56 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index b4b0929c0c..a268d8b616 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -65,69 +65,77 @@ void Head::computeAudioLoudness(float deltaTime) { } void Head::computeEyeMovement(float deltaTime) { - // Update eye saccades - const float AVERAGE_MICROSACCADE_INTERVAL = 1.0f; - const float AVERAGE_SACCADE_INTERVAL = 6.0f; - const float MICROSACCADE_MAGNITUDE = 0.002f; - const float SACCADE_MAGNITUDE = 0.04f; - const float NOMINAL_FRAME_RATE = 60.0f; + if (!_isFaceTrackerConnected) { + if (!_isEyeTrackerConnected) { + // Update eye saccades + const float AVERAGE_MICROSACCADE_INTERVAL = 1.0f; + const float AVERAGE_SACCADE_INTERVAL = 6.0f; + const float MICROSACCADE_MAGNITUDE = 0.002f; + const float SACCADE_MAGNITUDE = 0.04f; + const float NOMINAL_FRAME_RATE = 60.0f; - if (randFloat() < deltaTime / AVERAGE_MICROSACCADE_INTERVAL) { - _saccadeTarget = MICROSACCADE_MAGNITUDE * randVector(); - } else if (randFloat() < deltaTime / AVERAGE_SACCADE_INTERVAL) { - _saccadeTarget = SACCADE_MAGNITUDE * randVector(); - } - _saccade += (_saccadeTarget - _saccade) * pow(0.5f, NOMINAL_FRAME_RATE * deltaTime); + if (randFloat() < deltaTime / AVERAGE_MICROSACCADE_INTERVAL) { + _saccadeTarget = MICROSACCADE_MAGNITUDE * randVector(); + } else if (randFloat() < deltaTime / AVERAGE_SACCADE_INTERVAL) { + _saccadeTarget = SACCADE_MAGNITUDE * randVector(); + } + _saccade += (_saccadeTarget - _saccade) * pow(0.5f, NOMINAL_FRAME_RATE * deltaTime); + } else { + _saccade = glm::vec3(); + } - // Detect transition from talking to not; force blink after that and a delay - bool forceBlink = false; - const float TALKING_LOUDNESS = 100.0f; - const float BLINK_AFTER_TALKING = 0.25f; - _timeWithoutTalking += deltaTime; - if ((_averageLoudness - _longTermAverageLoudness) > TALKING_LOUDNESS) { - _timeWithoutTalking = 0.0f; - } else if (_timeWithoutTalking - deltaTime < BLINK_AFTER_TALKING && _timeWithoutTalking >= BLINK_AFTER_TALKING) { - forceBlink = true; - } + // Detect transition from talking to not; force blink after that and a delay + bool forceBlink = false; + const float TALKING_LOUDNESS = 100.0f; + const float BLINK_AFTER_TALKING = 0.25f; + _timeWithoutTalking += deltaTime; + if ((_averageLoudness - _longTermAverageLoudness) > TALKING_LOUDNESS) { + _timeWithoutTalking = 0.0f; + } else if (_timeWithoutTalking - deltaTime < BLINK_AFTER_TALKING && _timeWithoutTalking >= BLINK_AFTER_TALKING) { + forceBlink = true; + } - const float BLINK_SPEED = 10.0f; - const float BLINK_SPEED_VARIABILITY = 1.0f; - const float BLINK_START_VARIABILITY = 0.25f; - const float FULLY_OPEN = 0.0f; - const float FULLY_CLOSED = 1.0f; - if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { - // no blinking when brows are raised; blink less with increasing loudness - const float BASE_BLINK_RATE = 15.0f / 60.0f; - const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.25f; - if (forceBlink || (_browAudioLift < EPSILON && shouldDo(glm::max(1.0f, sqrt(fabs(_averageLoudness - _longTermAverageLoudness)) * - ROOT_LOUDNESS_TO_BLINK_INTERVAL) / BASE_BLINK_RATE, deltaTime))) { - _leftEyeBlinkVelocity = BLINK_SPEED + randFloat() * BLINK_SPEED_VARIABILITY; - _rightEyeBlinkVelocity = BLINK_SPEED + randFloat() * BLINK_SPEED_VARIABILITY; - if (randFloat() < 0.5f) { - _leftEyeBlink = BLINK_START_VARIABILITY; - } else { - _rightEyeBlink = BLINK_START_VARIABILITY; + const float BLINK_SPEED = 10.0f; + const float BLINK_SPEED_VARIABILITY = 1.0f; + const float BLINK_START_VARIABILITY = 0.25f; + const float FULLY_OPEN = 0.0f; + const float FULLY_CLOSED = 1.0f; + if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { + // no blinking when brows are raised; blink less with increasing loudness + const float BASE_BLINK_RATE = 15.0f / 60.0f; + const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.25f; + if (forceBlink || (_browAudioLift < EPSILON && shouldDo(glm::max(1.0f, sqrt(fabs(_averageLoudness - _longTermAverageLoudness)) * + ROOT_LOUDNESS_TO_BLINK_INTERVAL) / BASE_BLINK_RATE, deltaTime))) { + _leftEyeBlinkVelocity = BLINK_SPEED + randFloat() * BLINK_SPEED_VARIABILITY; + _rightEyeBlinkVelocity = BLINK_SPEED + randFloat() * BLINK_SPEED_VARIABILITY; + if (randFloat() < 0.5f) { + _leftEyeBlink = BLINK_START_VARIABILITY; + } else { + _rightEyeBlink = BLINK_START_VARIABILITY; + } + } + } else { + _leftEyeBlink = glm::clamp(_leftEyeBlink + _leftEyeBlinkVelocity * deltaTime, FULLY_OPEN, FULLY_CLOSED); + _rightEyeBlink = glm::clamp(_rightEyeBlink + _rightEyeBlinkVelocity * deltaTime, FULLY_OPEN, FULLY_CLOSED); + + if (_leftEyeBlink == FULLY_CLOSED) { + _leftEyeBlinkVelocity = -BLINK_SPEED; + + } else if (_leftEyeBlink == FULLY_OPEN) { + _leftEyeBlinkVelocity = 0.0f; + } + if (_rightEyeBlink == FULLY_CLOSED) { + _rightEyeBlinkVelocity = -BLINK_SPEED; + + } else if (_rightEyeBlink == FULLY_OPEN) { + _rightEyeBlinkVelocity = 0.0f; } } + + applyEyelidOffset(getOrientation()); } else { - _leftEyeBlink = glm::clamp(_leftEyeBlink + _leftEyeBlinkVelocity * deltaTime, FULLY_OPEN, FULLY_CLOSED); - _rightEyeBlink = glm::clamp(_rightEyeBlink + _rightEyeBlinkVelocity * deltaTime, FULLY_OPEN, FULLY_CLOSED); - - if (_leftEyeBlink == FULLY_CLOSED) { - _leftEyeBlinkVelocity = -BLINK_SPEED; - - } else if (_leftEyeBlink == FULLY_OPEN) { - _leftEyeBlinkVelocity = 0.0f; - } - if (_rightEyeBlink == FULLY_CLOSED) { - _rightEyeBlinkVelocity = -BLINK_SPEED; - - } else if (_rightEyeBlink == FULLY_OPEN) { - _rightEyeBlinkVelocity = 0.0f; - } + _saccade = glm::vec3(); } - - applyEyelidOffset(getOrientation()); } void Head::computeFaceMovement(float deltaTime) { From 26e390fa89b5b8f23e3c9f7f6cbc6eac936e0f4a Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 18 May 2017 13:55:06 +1200 Subject: [PATCH 37/93] Tidy code setting head orientation --- libraries/avatars/src/AvatarData.cpp | 3 --- libraries/avatars/src/HeadData.cpp | 15 +++++++++------ libraries/avatars/src/HeadData.h | 2 ++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index c5942ae614..7e2d8e4385 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -2078,14 +2078,11 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) { } // Do after avatar orientation because head look-at needs avatar orientation. - // But the head setOrientation() overwrites avatar orientation so reset the correct orientation after. if (json.contains(JSON_AVATAR_HEAD)) { - auto avatarOrientation = getOrientation(); if (!_headData) { _headData = new HeadData(this); } _headData->fromJson(json[JSON_AVATAR_HEAD].toObject()); - setOrientation(avatarOrientation); } if (json.contains(JSON_AVATAR_SCALE)) { diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index 0f2ae8a9a7..8ae33a1b4f 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -52,6 +52,13 @@ glm::quat HeadData::getOrientation() const { return _owningAvatar->getOrientation() * getRawOrientation(); } +void HeadData::setHeadOrientation(const glm::quat& orientation) { + glm::quat bodyOrientation = _owningAvatar->getOrientation(); + glm::vec3 eulers = glm::degrees(safeEulerAngles(glm::inverse(bodyOrientation) * orientation)); + _basePitch = eulers.x; + _baseYaw = eulers.y; + _baseRoll = eulers.z; +} void HeadData::setOrientation(const glm::quat& orientation) { // rotate body about vertical axis @@ -61,10 +68,7 @@ void HeadData::setOrientation(const glm::quat& orientation) { _owningAvatar->setOrientation(bodyOrientation); // the rest goes to the head - glm::vec3 eulers = glm::degrees(safeEulerAngles(glm::inverse(bodyOrientation) * orientation)); - _basePitch = eulers.x; - _baseYaw = eulers.y; - _baseRoll = eulers.z; + setHeadOrientation(orientation); } //Lazily construct a lookup map from the blendshapes @@ -180,8 +184,7 @@ void HeadData::fromJson(const QJsonObject& json) { } } - // Do after look-at because look-at requires original avatar orientation and setOrientation() may change the value. if (json.contains(JSON_AVATAR_HEAD_ROTATION)) { - setOrientation(quatFromJsonValue(json[JSON_AVATAR_HEAD_ROTATION])); + setHeadOrientation(quatFromJsonValue(json[JSON_AVATAR_HEAD_ROTATION])); } } diff --git a/libraries/avatars/src/HeadData.h b/libraries/avatars/src/HeadData.h index be9d54e93e..0bb38c1dad 100644 --- a/libraries/avatars/src/HeadData.h +++ b/libraries/avatars/src/HeadData.h @@ -101,6 +101,8 @@ private: // privatize copy ctor and assignment operator so copies of this object cannot be made HeadData(const HeadData&); HeadData& operator= (const HeadData&); + + void setHeadOrientation(const glm::quat& orientation); }; #endif // hifi_HeadData_h From 00fb328f2fc129d135fce6df8cb4c2ae15912096 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 17 May 2017 15:26:29 -0700 Subject: [PATCH 38/93] set wireless scan interval to -1 --- libraries/shared/src/SharedUtil.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 81a0eed9f3..a68d27e620 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -768,9 +768,10 @@ bool similarStrings(const QString& stringA, const QString& stringB) { } void disableQtBearerPoll() { - // to work around the Qt constant wireless scanning, set the env for polling interval very high - const QByteArray EXTREME_BEARER_POLL_TIMEOUT = QString::number(INT16_MAX).toLocal8Bit(); - qputenv("QT_BEARER_POLL_TIMEOUT", EXTREME_BEARER_POLL_TIMEOUT); + // to disable the Qt constant wireless scanning, set the env for polling interval + qDebug() << "Disabling Qt wireless polling by using a negative value for QTimer::setInterval"; + const QByteArray DISABLE_BEARER_POLL_TIMEOUT = QString::number(-1).toLocal8Bit(); + qputenv("QT_BEARER_POLL_TIMEOUT", DISABLE_BEARER_POLL_TIMEOUT); } void printSystemInformation() { From 017f5f57817dc421dd03b230361cd698c95b5f3d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 18 May 2017 16:54:32 +1200 Subject: [PATCH 39/93] Temporary fix for recordings not playing back properly --- assignment-client/src/avatars/AvatarMixerClientData.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index 76519466b5..1449005246 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -145,7 +145,7 @@ private: std::unordered_map> _lastOtherAvatarSentJoints; uint64_t _identityChangeTimestamp; - bool _avatarSessionDisplayNameMustChange{ true }; + bool _avatarSessionDisplayNameMustChange{ false }; int _numAvatarsSentLastFrame = 0; int _numFramesSinceAdjustment = 0; From 8d3285f733461515e43f33abd3ef0b2d44893c4f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 18 May 2017 11:11:50 -0700 Subject: [PATCH 40/93] verify _rig is valid in Model::deleteGeometry() --- libraries/render-utils/src/Model.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index e09afa3f31..8b26db4a0a 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1153,7 +1153,9 @@ void Model::deleteGeometry() { _deleteGeometryCounter++; _blendedVertexBuffers.clear(); _meshStates.clear(); - _rig->destroyAnimGraph(); + if (_rig) { + _rig->destroyAnimGraph(); + } _blendedBlendshapeCoefficients.clear(); _renderGeometry.reset(); _collisionGeometry.reset(); From abe19310da55400b615f9d36284fb47eb3a0d988 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 17 May 2017 18:33:49 -0700 Subject: [PATCH 41/93] WIP: checkpoint of ik changes --- .../resources/avatar/avatar-animation.json | 6 +- .../animation/src/AnimInverseKinematics.cpp | 165 ++++++++++++++---- .../animation/src/AnimInverseKinematics.h | 13 +- 3 files changed, 146 insertions(+), 38 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index b18599d8a9..56d761ed53 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -68,7 +68,7 @@ "typeVar": "rightHandType", "weightVar": "rightHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.25, 0.1, 0.05, 0.01, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.00, 0.00, 0.00, 0.0, 0.0] }, { "jointName": "LeftHand", @@ -77,7 +77,7 @@ "typeVar": "leftHandType", "weightVar": "leftHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.25, 0.1, 0.05, 0.01, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0] }, { "jointName": "RightFoot", @@ -113,7 +113,7 @@ "typeVar": "headType", "weightVar": "headWeight", "weight": 4.0, - "flexCoefficients": [1, 0.5, 0.5, 0.5, 0.5] + "flexCoefficients": [1, 0.35, 0.5, 0.35, 0.25] } ] }, diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 4471f11857..5ef1a168e7 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -175,7 +175,7 @@ void AnimInverseKinematics::computeTargets(const AnimVariantMap& animVars, std:: } } -void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const std::vector& targets) { +void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& context, const std::vector& targets) { // compute absolute poses that correspond to relative target poses AnimPoseVec absolutePoses; absolutePoses.resize(_relativePoses.size()); @@ -194,24 +194,21 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const std::vector 0) { _relativePoses[i].rot() = _accumulators[i].getAverage(); _accumulators[i].clear(); } } - // update the absolutePoses that need it (from lowestMovedIndex to _maxTargetIndex) - for (auto i = lowestMovedIndex; i <= _maxTargetIndex; ++i) { + // update the absolutePoses + for (int i = 0; i < (int)_relativePoses.size(); ++i) { auto parentIndex = _skeleton->getParentIndex((int)i); if (parentIndex != -1) { absolutePoses[i] = absolutePoses[parentIndex] * _relativePoses[i]; @@ -236,7 +233,9 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const std::vectorgetParentIndex(tipIndex); - if (parentIndex != -1) { + + // update rotationOnly targets that don't lie on the ik chain of other ik targets. + if (parentIndex != -1 && !_accumulators[tipIndex].isDirty() && target.getType() == IKTarget::Type::RotationOnly) { const glm::quat& targetRotation = target.getRotation(); // compute tip's new parent-relative rotation // Q = Qp * q --> q' = Qp^ * Q @@ -254,24 +253,23 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const std::vectorgetParentIndex(tipIndex); if (pivotIndex == -1 || pivotIndex == _hipsIndex) { - return lowestMovedIndex; + return; } int pivotsParentIndex = _skeleton->getParentIndex(pivotIndex); if (pivotsParentIndex == -1) { // TODO?: handle case where tip's parent is root? - return lowestMovedIndex; + return; } // cache tip's absolute orientation @@ -281,9 +279,13 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe // the tip's parent-relative as we proceed up the chain glm::quat tipParentOrientation = absolutePoses[pivotIndex].rot(); + std::map debugJointMap; + // NOTE: if this code is removed, the head will remain rigid, causing the spine/hips to thrust forward backward // as the head is nodded. - if (targetType == IKTarget::Type::HmdHead) { + if (targetType == IKTarget::Type::HmdHead || + targetType == IKTarget::Type::RotationAndPosition || + targetType == IKTarget::Type::HipsRelativeRotationAndPosition) { // rotate tip directly to target orientation tipOrientation = target.getRotation(); @@ -291,8 +293,9 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe // then enforce tip's constraint RotationConstraint* constraint = getConstraint(tipIndex); + bool constrained = false; if (constraint) { - bool constrained = constraint->apply(tipRelativeRotation); + constrained = constraint->apply(tipRelativeRotation); if (constrained) { tipOrientation = tipParentOrientation * tipRelativeRotation; tipRelativeRotation = tipRelativeRotation; @@ -300,6 +303,10 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe } // store the relative rotation change in the accumulator _accumulators[tipIndex].add(tipRelativeRotation, target.getWeight()); + + if (debug) { + debugJointMap[tipIndex] = DebugJoint(tipRelativeRotation, constrained); + } } // cache tip absolute position @@ -388,15 +395,15 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe // compute joint's new parent-relative rotation after swing // Q' = dQ * Q and Q = Qp * q --> q' = Qp^ * dQ * Q - glm::quat newRot = glm::normalize(glm::inverse( - absolutePoses[pivotsParentIndex].rot()) * - deltaRotation * - absolutePoses[pivotIndex].rot()); + glm::quat newRot = glm::normalize(glm::inverse(absolutePoses[pivotsParentIndex].rot()) * + deltaRotation * + absolutePoses[pivotIndex].rot()); // enforce pivot's constraint RotationConstraint* constraint = getConstraint(pivotIndex); + bool constrained = false; if (constraint) { - bool constrained = constraint->apply(newRot); + constrained = constraint->apply(newRot); if (constrained) { // the constraint will modify the local rotation of the tip so we must // compute the corresponding model-frame deltaRotation @@ -408,9 +415,8 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe // store the relative rotation change in the accumulator _accumulators[pivotIndex].add(newRot, target.getWeight()); - // this joint has been changed so we check to see if it has the lowest index - if (pivotIndex < lowestMovedIndex) { - lowestMovedIndex = pivotIndex; + if (debug) { + debugJointMap[pivotIndex] = DebugJoint(newRot, constrained); } // keep track of tip's new transform as we descend towards root @@ -423,7 +429,10 @@ int AnimInverseKinematics::solveTargetWithCCD(const IKTarget& target, AnimPoseVe chainDepth++; } - return lowestMovedIndex; + + if (debug) { + debugDrawIKChain(debugJointMap, context); + } } //virtual @@ -551,7 +560,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars { PROFILE_RANGE_EX(simulation_animation, "ik/ccd", 0xffff00ff, 0); - solveWithCyclicCoordinateDescent(targets); + solveWithCyclicCoordinateDescent(context, targets); } if (_hipsTargetIndex < 0) { @@ -562,6 +571,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars } } } + return _relativePoses; } @@ -843,7 +853,7 @@ void AnimInverseKinematics::initConstraints() { stConstraint->setTwistLimits(-MAX_SHOULDER_TWIST, MAX_SHOULDER_TWIST); std::vector minDots; - const float MAX_SHOULDER_SWING = PI / 16.0f; + const float MAX_SHOULDER_SWING = PI / 12.0f; minDots.push_back(cosf(MAX_SHOULDER_SWING)); stConstraint->setSwingLimits(minDots); @@ -855,8 +865,8 @@ void AnimInverseKinematics::initConstraints() { stConstraint->setTwistLimits(-MAX_SPINE_TWIST, MAX_SPINE_TWIST); // limit lateral swings more then forward-backward swings - const float MAX_SPINE_LATERAL_SWING = PI / 30.0f; - const float MAX_SPINE_ANTERIOR_SWING = PI / 20.0f; + const float MAX_SPINE_LATERAL_SWING = PI / 15.0f; + const float MAX_SPINE_ANTERIOR_SWING = PI / 10.0f; setEllipticalSwingLimits(stConstraint, MAX_SPINE_LATERAL_SWING, MAX_SPINE_ANTERIOR_SWING); if (0 == baseName.compare("Spine1", Qt::CaseSensitive) @@ -869,12 +879,12 @@ void AnimInverseKinematics::initConstraints() { } else if (0 == baseName.compare("Neck", Qt::CaseSensitive)) { SwingTwistConstraint* stConstraint = new SwingTwistConstraint(); stConstraint->setReferenceRotation(_defaultRelativePoses[i].rot()); - const float MAX_NECK_TWIST = PI / 10.0f; + const float MAX_NECK_TWIST = PI / 8.0f; stConstraint->setTwistLimits(-MAX_NECK_TWIST, MAX_NECK_TWIST); // limit lateral swings more then forward-backward swings - const float MAX_NECK_LATERAL_SWING = PI / 10.0f; - const float MAX_NECK_ANTERIOR_SWING = PI / 8.0f; + const float MAX_NECK_LATERAL_SWING = PI / 8.0f; + const float MAX_NECK_ANTERIOR_SWING = PI / 6.0f; setEllipticalSwingLimits(stConstraint, MAX_NECK_LATERAL_SWING, MAX_NECK_ANTERIOR_SWING); constraint = static_cast(stConstraint); @@ -1047,6 +1057,95 @@ static glm::vec3 sphericalToCartesian(float phi, float theta) { return glm::vec3(sin_phi * cosf(theta), cos_phi, -sin_phi * sinf(theta)); } +void AnimInverseKinematics::debugDrawRelativePoses(const AnimContext& context) const { + AnimPoseVec poses = _relativePoses; + + // convert relative poses to absolute + _skeleton->convertRelativePosesToAbsolute(poses); + + mat4 geomToWorldMatrix = context.getRigToWorldMatrix() * context.getGeometryToRigMatrix(); + + const vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); + const vec4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); + const vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); + const vec4 GRAY(0.2f, 0.2f, 0.2f, 1.0f); + const float AXIS_LENGTH = 2.0f; // cm + + // draw each pose + for (int i = 0; i < (int)poses.size(); i++) { + + // transform local axes into world space. + auto pose = poses[i]; + glm::vec3 xAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_X); + glm::vec3 yAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_Y); + glm::vec3 zAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_Z); + glm::vec3 pos = transformPoint(geomToWorldMatrix, pose.trans()); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * xAxis, RED); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * yAxis, GREEN); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * zAxis, BLUE); + + // draw line to parent + int parentIndex = _skeleton->getParentIndex(i); + if (parentIndex != -1) { + glm::vec3 parentPos = transformPoint(geomToWorldMatrix, poses[parentIndex].trans()); + DebugDraw::getInstance().drawRay(pos, parentPos, GRAY); + } + } +} + +void AnimInverseKinematics::debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const { + AnimPoseVec poses = _relativePoses; + + // copy debug joint rotations into the relative poses + for (auto& debugJoint : debugJointMap) { + poses[debugJoint.first].rot() = debugJoint.second.relRot; + } + + // convert relative poses to absolute + _skeleton->convertRelativePosesToAbsolute(poses); + + mat4 geomToWorldMatrix = context.getRigToWorldMatrix() * context.getGeometryToRigMatrix(); + + const vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); + const vec4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); + const vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); + const vec4 GRAY(0.2f, 0.2f, 0.2f, 1.0f); + const float AXIS_LENGTH = 2.0f; // cm + + // draw each pose + for (int i = 0; i < (int)poses.size(); i++) { + + // only draw joints that are actually in debugJointMap, or their parents + auto iter = debugJointMap.find(i); + auto parentIter = debugJointMap.find(_skeleton->getParentIndex(i)); + if (iter != debugJointMap.end() || parentIter != debugJointMap.end()) { + + // transform local axes into world space. + auto pose = poses[i]; + glm::vec3 xAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_X); + glm::vec3 yAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_Y); + glm::vec3 zAxis = transformVectorFast(geomToWorldMatrix, pose.rot() * Vectors::UNIT_Z); + glm::vec3 pos = transformPoint(geomToWorldMatrix, pose.trans()); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * xAxis, RED); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * yAxis, GREEN); + DebugDraw::getInstance().drawRay(pos, pos + AXIS_LENGTH * zAxis, BLUE); + + // draw line to parent + int parentIndex = _skeleton->getParentIndex(i); + if (parentIndex != -1) { + glm::vec3 parentPos = transformPoint(geomToWorldMatrix, poses[parentIndex].trans()); + glm::vec4 color = GRAY; + + // draw constrained joints with a RED link to their parent. + if (parentIter != debugJointMap.end() && parentIter->second.constrained) { + color = RED; + } + DebugDraw::getInstance().drawRay(pos, parentPos, color); + } + } + } +} + void AnimInverseKinematics::debugDrawConstraints(const AnimContext& context) const { if (_skeleton) { const vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 74face6d0b..0267f14650 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -58,13 +58,22 @@ public: protected: void computeTargets(const AnimVariantMap& animVars, std::vector& targets, const AnimPoseVec& underPoses); - void solveWithCyclicCoordinateDescent(const std::vector& targets); - int solveTargetWithCCD(const IKTarget& target, AnimPoseVec& absolutePoses); + void solveWithCyclicCoordinateDescent(const AnimContext& context, const std::vector& targets); + void solveTargetWithCCD(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug); virtual void setSkeletonInternal(AnimSkeleton::ConstPointer skeleton) override; + struct DebugJoint { + DebugJoint() : relRot(), constrained(false) {} + DebugJoint(const glm::quat& relRotIn, bool constrainedIn) : relRot(relRotIn), constrained(constrainedIn) {} + glm::quat relRot; + bool constrained; + }; + void debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const; + void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); + // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override { return _relativePoses; } From 87adeb0565d7133cd506cfb6ca88c09e11d2b389 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 18 May 2017 11:24:30 -0700 Subject: [PATCH 42/93] apply flexCoeff to tip of joint chain as well. --- .../resources/avatar/avatar-animation.json | 6 ++--- .../animation/src/AnimInverseKinematics.cpp | 22 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 56d761ed53..55f86f7f44 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -68,7 +68,7 @@ "typeVar": "rightHandType", "weightVar": "rightHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.00, 0.00, 0.00, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.25, 0.1, 0.05, 0.01, 0.0, 0.0] }, { "jointName": "LeftHand", @@ -77,7 +77,7 @@ "typeVar": "leftHandType", "weightVar": "leftHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.00, 0.00, 0.00, 0.0, 0.0] }, { "jointName": "RightFoot", @@ -104,7 +104,7 @@ "typeVar": "spine2Type", "weightVar": "spine2Weight", "weight": 1.0, - "flexCoefficients": [0.45, 0.45] + "flexCoefficients": [1.0, 0.5, 0.5] }, { "jointName": "Head", diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 5ef1a168e7..70c47c6609 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -195,7 +195,7 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& // solve all targets for (auto& target: targets) { - bool debug = numLoops == MAX_IK_LOOPS; + bool debug = false; solveTargetWithCCD(context, target, absolutePoses, debug); } @@ -254,6 +254,8 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& } void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug) { + size_t chainDepth = 0; + IKTarget::Type targetType = target.getType(); if (targetType == IKTarget::Type::RotationOnly) { // the final rotation will be enforced after the iterations @@ -287,9 +289,18 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const targetType == IKTarget::Type::RotationAndPosition || targetType == IKTarget::Type::HipsRelativeRotationAndPosition) { - // rotate tip directly to target orientation - tipOrientation = target.getRotation(); - glm::quat tipRelativeRotation = glm::inverse(tipParentOrientation) * tipOrientation; + // rotate tip toward target orientation + glm::quat deltaRot = target.getRotation() * glm::inverse(tipOrientation); + + // decompose deltaRot into axis angle + glm::vec3 axis = glm::axis(deltaRot); + float angle = glm::angle(deltaRot); + + // apply flexCoefficent and re-compose quat + glm::quat deltaRotation = glm::angleAxis(angle * target.getFlexCoefficient(chainDepth), axis); + + // compute parent relative rotation + glm::quat tipRelativeRotation = glm::inverse(tipParentOrientation) * deltaRotation * tipOrientation; // then enforce tip's constraint RotationConstraint* constraint = getConstraint(tipIndex); @@ -301,6 +312,7 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const tipRelativeRotation = tipRelativeRotation; } } + // store the relative rotation change in the accumulator _accumulators[tipIndex].add(tipRelativeRotation, target.getWeight()); @@ -312,7 +324,7 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const // cache tip absolute position glm::vec3 tipPosition = absolutePoses[tipIndex].trans(); - size_t chainDepth = 1; + chainDepth++; // descend toward root, pivoting each joint to get tip closer to target position while (pivotIndex != _hipsIndex && pivotsParentIndex != -1) { From 6d2d838510e1ee6f10d4126ddac7a951ec379def Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 18 May 2017 11:46:14 -0700 Subject: [PATCH 43/93] Fix ktx image size in progrssively loaded cubemaps The size being written was the full image size (size of all faces), when it should have been the face size. --- libraries/ktx/src/ktx/Writer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/ktx/src/ktx/Writer.cpp b/libraries/ktx/src/ktx/Writer.cpp index 2dcd0ea583..23f9d05596 100644 --- a/libraries/ktx/src/ktx/Writer.cpp +++ b/libraries/ktx/src/ktx/Writer.cpp @@ -149,7 +149,8 @@ namespace ktx { for (size_t i = 0; i < descriptors.size(); ++i) { auto ptr = reinterpret_cast(currentDestPtr); - *ptr = descriptors[i]._imageSize; + uint32_t imageFaceSize = descriptors[i]._faceSize; + *ptr = imageFaceSize; // the imageSize written in the ktx is the FACE size #ifdef DEBUG ptr++; From 7ec073dce4536b47d6943786725823773a962039 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Wed, 17 May 2017 13:47:24 -0700 Subject: [PATCH 44/93] Ensure avatar identity packet at mixer. --- assignment-client/src/avatars/AvatarMixerClientData.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index 1449005246..76519466b5 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -145,7 +145,7 @@ private: std::unordered_map> _lastOtherAvatarSentJoints; uint64_t _identityChangeTimestamp; - bool _avatarSessionDisplayNameMustChange{ false }; + bool _avatarSessionDisplayNameMustChange{ true }; int _numAvatarsSentLastFrame = 0; int _numFramesSinceAdjustment = 0; From 8213a1b280814b4c3407846e95beb73d534e257e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 17 May 2017 13:11:37 -0700 Subject: [PATCH 45/93] First pass - checking performance --- interface/src/Application.cpp | 3 +-- libraries/avatars/src/AvatarData.cpp | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0d07c50e07..11467c27f9 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5284,9 +5284,8 @@ void Application::nodeActivated(SharedNodePointer node) { } if (node->getType() == NodeType::AvatarMixer) { - // new avatar mixer, send off our identity packet right away + // new avatar mixer, send off our identity packet on next update loop getMyAvatar()->markIdentityDataChanged(); - getMyAvatar()->sendIdentityPacket(); getMyAvatar()->resetLastSent(); } } diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 9a01934b5b..0f9f4ebfe4 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1584,8 +1584,6 @@ void AvatarData::setDisplayName(const QString& displayName) { _displayName = displayName; _sessionDisplayName = ""; - sendIdentityPacket(); - qCDebug(avatars) << "Changing display name for avatar to" << displayName; markIdentityDataChanged(); } From 1fcf3b3a5f2a876225cca0eb2e34eba8651a9271 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Wed, 17 May 2017 14:22:36 -0700 Subject: [PATCH 46/93] Switch from timestamp to sequence id for avatar identity --- libraries/avatars/src/AvatarData.cpp | 45 ++++++++------------ libraries/avatars/src/AvatarData.h | 36 ++++++++-------- libraries/networking/src/udt/PacketHeaders.h | 3 +- 3 files changed, 38 insertions(+), 46 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 0f9f4ebfe4..94d27a6922 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -170,13 +170,13 @@ QByteArray AvatarData::toByteArrayStateful(AvatarDataDetail dataDetail) { AvatarDataPacket::HasFlags hasFlagsOut; auto lastSentTime = _lastToByteArray; _lastToByteArray = usecTimestampNow(); - return AvatarData::toByteArray(dataDetail, lastSentTime, getLastSentJointData(), + return AvatarData::toByteArray(dataDetail, lastSentTime, getLastSentJointData(), hasFlagsOut, false, false, glm::vec3(0), nullptr, &_outboundDataRate); } QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSentTime, const QVector& lastSentJointData, - AvatarDataPacket::HasFlags& hasFlagsOut, bool dropFaceTracking, bool distanceAdjust, + AvatarDataPacket::HasFlags& hasFlagsOut, bool dropFaceTracking, bool distanceAdjust, glm::vec3 viewerPosition, QVector* sentJointDataOut, AvatarDataRate* outboundDataRateOut) const { bool cullSmallChanges = (dataDetail == CullSmallData); @@ -199,7 +199,7 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent // FIXME - // - // BUG -- if you enter a space bubble, and then back away, the avatar has wrong orientation until "send all" happens... + // BUG -- if you enter a space bubble, and then back away, the avatar has wrong orientation until "send all" happens... // this is an iFrame issue... what to do about that? // // BUG -- Resizing avatar seems to "take too long"... the avatar doesn't redraw at smaller size right away @@ -1471,13 +1471,13 @@ QStringList AvatarData::getJointNames() const { void AvatarData::parseAvatarIdentityPacket(const QByteArray& data, Identity& identityOut) { QDataStream packetStream(data); - packetStream >> identityOut.uuid - >> identityOut.skeletonModelURL + packetStream >> identityOut.uuid + >> identityOut.skeletonModelURL >> identityOut.attachmentData >> identityOut.displayName >> identityOut.sessionDisplayName >> identityOut.avatarEntityData - >> identityOut.updatedAt; + >> identityOut.sequenceId; #ifdef WANT_DEBUG qCDebug(avatars) << __FUNCTION__ @@ -1496,20 +1496,14 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { } void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { - quint64 identityPacketUpdatedAt = identity.updatedAt; - if (identityPacketUpdatedAt <= (uint64_t)(abs(clockSkew))) { // Incoming timestamp is bad - compute our own timestamp - identityPacketUpdatedAt = usecTimestampNow() + clockSkew; - } - - // Consider the case where this packet is being processed on Client A, and Client A is connected to Sandbox B. - // If Client A's system clock is *ahead of* Sandbox B's system clock, "clockSkew" will be *negative*. - // If Client A's system clock is *behind* Sandbox B's system clock, "clockSkew" will be *positive*. - if ((_identityUpdatedAt > identityPacketUpdatedAt - clockSkew) && (_identityUpdatedAt != 0)) { - qCDebug(avatars) << "Ignoring late identity packet for avatar " << getSessionUUID() - << "_identityUpdatedAt (" << _identityUpdatedAt << ") is greater than identityPacketUpdatedAt - clockSkew (" << identityPacketUpdatedAt << "-" << clockSkew << ")"; + if (identity.sequenceId < _identitySequenceId) { + qCDebug(avatars) << "Ignoring older identity packet for avatar" << getSessionUUID() + << "_identitySequenceId (" << _identitySequenceId << ") is greater than" << identity.sequenceId; return; } + // otherwise, set the identitySequenceId to match the incoming identity + _identitySequenceId = identity.sequenceId; if (_firstSkeletonCheck || (identity.skeletonModelURL != cannonicalSkeletonModelURL(emptyURL))) { setSkeletonModelURL(identity.skeletonModelURL); @@ -1541,9 +1535,6 @@ void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityC identityChanged = true; } - // use the timestamp from this identity, since we want to honor the updated times in "server clock" - // this will overwrite any changes we made locally to this AvatarData's _identityUpdatedAt - _identityUpdatedAt = identityPacketUpdatedAt - clockSkew; } QByteArray AvatarData::identityByteArray() const { @@ -1552,13 +1543,13 @@ QByteArray AvatarData::identityByteArray() const { const QUrl& urlToSend = cannonicalSkeletonModelURL(emptyURL); // depends on _skeletonModelURL _avatarEntitiesLock.withReadLock([&] { - identityStream << getSessionUUID() - << urlToSend + identityStream << getSessionUUID() + << urlToSend << _attachmentData << _displayName << getSessionDisplayNameForTransport() // depends on _sessionDisplayName << _avatarEntityData - << _identityUpdatedAt; + << _identitySequenceId; }); return identityData; @@ -2467,11 +2458,11 @@ QScriptValue AvatarEntityMapToScriptValue(QScriptEngine* engine, const AvatarEnt if (!jsonEntityProperties.isObject()) { qCDebug(avatars) << "bad AvatarEntityData in AvatarEntityMap" << QString(entityProperties.toHex()); } - + QVariant variantEntityProperties = jsonEntityProperties.toVariant(); QVariantMap entityPropertiesMap = variantEntityProperties.toMap(); QScriptValue scriptEntityProperties = variantMapToScriptValue(entityPropertiesMap, *engine); - + QString key = entityID.toString(); obj.setProperty(key, scriptEntityProperties); } @@ -2483,12 +2474,12 @@ void AvatarEntityMapFromScriptValue(const QScriptValue& object, AvatarEntityMap& while (itr.hasNext()) { itr.next(); QUuid EntityID = QUuid(itr.name()); - + QScriptValue scriptEntityProperties = itr.value(); QVariant variantEntityProperties = scriptEntityProperties.toVariant(); QJsonDocument jsonEntityProperties = QJsonDocument::fromVariant(variantEntityProperties); QByteArray binaryEntityProperties = jsonEntityProperties.toBinaryData(); - + value[EntityID] = binaryEntityProperties; } } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index e6e0571878..875ab3abae 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -165,15 +165,15 @@ namespace AvatarDataPacket { const size_t AVATAR_ORIENTATION_SIZE = 6; PACKED_BEGIN struct AvatarScale { - SmallFloat scale; // avatar's scale, compressed by packFloatRatioToTwoByte() + SmallFloat scale; // avatar's scale, compressed by packFloatRatioToTwoByte() } PACKED_END; const size_t AVATAR_SCALE_SIZE = 2; PACKED_BEGIN struct LookAtPosition { float lookAtPosition[3]; // world space position that eyes are focusing on. - // FIXME - unless the person has an eye tracker, this is simulated... + // FIXME - unless the person has an eye tracker, this is simulated... // a) maybe we can just have the client calculate this - // b) at distance this will be hard to discern and can likely be + // b) at distance this will be hard to discern and can likely be // descimated or dropped completely // // POTENTIAL SAVINGS - 12 bytes @@ -376,10 +376,10 @@ public: glm::vec3 getHandPosition() const; void setHandPosition(const glm::vec3& handPosition); - typedef enum { + typedef enum { NoData, PALMinimum, - MinimumData, + MinimumData, CullSmallData, IncludeSmallData, SendAllData @@ -388,7 +388,7 @@ public: virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail); virtual QByteArray toByteArray(AvatarDataDetail dataDetail, quint64 lastSentTime, const QVector& lastSentJointData, - AvatarDataPacket::HasFlags& hasFlagsOut, bool dropFaceTracking, bool distanceAdjust, glm::vec3 viewerPosition, + AvatarDataPacket::HasFlags& hasFlagsOut, bool dropFaceTracking, bool distanceAdjust, glm::vec3 viewerPosition, QVector* sentJointDataOut, AvatarDataRate* outboundDataRateOut = nullptr) const; virtual void doneEncoding(bool cullSmallChanges); @@ -417,23 +417,23 @@ public: void nextAttitude(glm::vec3 position, glm::quat orientation); // Can be safely called at any time. virtual void updateAttitude() {} // Tell skeleton mesh about changes - glm::quat getHeadOrientation() const { + glm::quat getHeadOrientation() const { lazyInitHeadData(); - return _headData->getOrientation(); + return _headData->getOrientation(); } - void setHeadOrientation(const glm::quat& orientation) { + void setHeadOrientation(const glm::quat& orientation) { if (_headData) { _headData->setOrientation(orientation); } } - void setLookAtPosition(const glm::vec3& lookAtPosition) { + void setLookAtPosition(const glm::vec3& lookAtPosition) { if (_headData) { - _headData->setLookAtPosition(lookAtPosition); + _headData->setLookAtPosition(lookAtPosition); } } - void setBlendshapeCoefficients(const QVector& blendshapeCoefficients) { + void setBlendshapeCoefficients(const QVector& blendshapeCoefficients) { if (_headData) { _headData->setBlendshapeCoefficients(blendshapeCoefficients); } @@ -470,7 +470,7 @@ public: void setDomainMinimumScale(float domainMinimumScale) { _domainMinimumScale = glm::clamp(domainMinimumScale, MIN_AVATAR_SCALE, MAX_AVATAR_SCALE); _scaleChanged = usecTimestampNow(); } - void setDomainMaximumScale(float domainMaximumScale) + void setDomainMaximumScale(float domainMaximumScale) { _domainMaximumScale = glm::clamp(domainMaximumScale, MIN_AVATAR_SCALE, MAX_AVATAR_SCALE); _scaleChanged = usecTimestampNow(); } // Hand State @@ -531,7 +531,7 @@ public: QString displayName; QString sessionDisplayName; AvatarEntityMap avatarEntityData; - quint64 updatedAt; + quint64 sequenceId; }; static void parseAvatarIdentityPacket(const QByteArray& data, Identity& identityOut); @@ -548,8 +548,8 @@ public: virtual void setSkeletonModelURL(const QUrl& skeletonModelURL); virtual void setDisplayName(const QString& displayName); - virtual void setSessionDisplayName(const QString& sessionDisplayName) { - _sessionDisplayName = sessionDisplayName; + virtual void setSessionDisplayName(const QString& sessionDisplayName) { + _sessionDisplayName = sessionDisplayName; markIdentityDataChanged(); } @@ -623,7 +623,7 @@ public: bool getIdentityDataChanged() const { return _identityDataChanged; } // has the identity data changed since the last time sendIdentityPacket() was called void markIdentityDataChanged() { _identityDataChanged = true; - _identityUpdatedAt = usecTimestampNow(); + _identitySequenceId++; } signals: @@ -781,7 +781,7 @@ protected: float _audioAverageLoudness { 0.0f }; bool _identityDataChanged { false }; - quint64 _identityUpdatedAt { 0 }; + quint64 _identitySequenceId { 0 }; private: friend void avatarStateFromFrame(const QByteArray& frameData, AvatarData* _avatar); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 746ae80361..f88015a4e4 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -234,7 +234,8 @@ enum class AvatarMixerPacketVersion : PacketVersion { VariableAvatarData, AvatarAsChildFixes, StickAndBallDefaultAvatar, - IdentityPacketsIncludeUpdateTime + IdentityPacketsIncludeUpdateTime, + AvatarIdentitySequenceId }; enum class DomainConnectRequestVersion : PacketVersion { From df5928c04a9f5c08eb3401a08377169e4c227eb9 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Wed, 17 May 2017 15:14:56 -0700 Subject: [PATCH 47/93] remove clockSkew, reference new version for Avatar packets --- assignment-client/src/avatars/AvatarMixer.cpp | 10 +++++----- libraries/avatars/src/AvatarData.cpp | 2 +- libraries/avatars/src/AvatarData.h | 2 +- libraries/avatars/src/AvatarHashMap.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.cpp | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 998799f5e6..870149f1bc 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -402,7 +402,7 @@ void AvatarMixer::handleAvatarIdentityPacket(QSharedPointer mes AvatarData::parseAvatarIdentityPacket(message->getMessage(), identity); bool identityChanged = false; bool displayNameChanged = false; - avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged, senderNode->getClockSkewUsec()); + avatar.processAvatarIdentity(identity, identityChanged, displayNameChanged); if (identityChanged) { QMutexLocker nodeDataLocker(&nodeData->getMutex()); nodeData->flagIdentityChange(); @@ -665,12 +665,12 @@ void AvatarMixer::sendStatsPacket() { void AvatarMixer::run() { qCDebug(avatars) << "Waiting for connection to domain to request settings from domain-server."; - + // wait until we have the domain-server settings, otherwise we bail DomainHandler& domainHandler = DependencyManager::get()->getDomainHandler(); connect(&domainHandler, &DomainHandler::settingsReceived, this, &AvatarMixer::domainSettingsRequestComplete); connect(&domainHandler, &DomainHandler::settingsReceiveFail, this, &AvatarMixer::domainSettingsRequestFailed); - + ThreadedAssignment::commonInit(AVATAR_MIXER_LOGGING_NAME, NodeType::AvatarMixer); } @@ -695,7 +695,7 @@ void AvatarMixer::domainSettingsRequestComplete() { // parse the settings to pull out the values we need parseDomainServerSettings(nodeList->getDomainHandler().getSettingsObject()); - + // start our tight loop... start(); } @@ -745,7 +745,7 @@ void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) { } else { qCDebug(avatars) << "Avatar mixer will automatically determine number of threads to use. Using:" << _slavePool.numThreads() << "threads."; } - + const QString AVATARS_SETTINGS_KEY = "avatars"; static const QString MIN_SCALE_OPTION = "min_avatar_scale"; diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 94d27a6922..ed17e049b8 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1495,7 +1495,7 @@ QUrl AvatarData::cannonicalSkeletonModelURL(const QUrl& emptyURL) const { return _skeletonModelURL.scheme() == "file" ? emptyURL : _skeletonModelURL; } -void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew) { +void AvatarData::processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged) { if (identity.sequenceId < _identitySequenceId) { qCDebug(avatars) << "Ignoring older identity packet for avatar" << getSessionUUID() diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 875ab3abae..a587dced3f 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -538,7 +538,7 @@ public: // identityChanged returns true if identity has changed, false otherwise. // displayNameChanged returns true if displayName has changed, false otherwise. - void processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged, const qint64 clockSkew); + void processAvatarIdentity(const Identity& identity, bool& identityChanged, bool& displayNameChanged); QByteArray identityByteArray() const; diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index 155ef9a0a2..2ccc64fee2 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -149,7 +149,7 @@ void AvatarHashMap::processAvatarIdentityPacket(QSharedPointer bool identityChanged = false; bool displayNameChanged = false; // In this case, the "sendingNode" is the Avatar Mixer. - avatar->processAvatarIdentity(identity, identityChanged, displayNameChanged, sendingNode->getClockSkewUsec()); + avatar->processAvatarIdentity(identity, identityChanged, displayNameChanged); } } diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 82b4bf703d..9d970fa318 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -56,7 +56,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::AvatarData: case PacketType::BulkAvatarData: case PacketType::KillAvatar: - return static_cast(AvatarMixerPacketVersion::IdentityPacketsIncludeUpdateTime); + return static_cast(AvatarMixerPacketVersion::AvatarIdentitySequenceId); case PacketType::MessagesData: return static_cast(MessageDataVersion::TextOrBinaryData); case PacketType::ICEServerHeartbeat: From a8b1a29a4ab3b3a20012d39b6a328753f9ee83c5 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 18 May 2017 13:11:41 -0700 Subject: [PATCH 48/93] Add support for BC7 compression --- libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp | 13 +++++++++++-- .../gpu-gl/src/gpu/gl41/GL41BackendTexture.cpp | 2 ++ .../gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp | 2 ++ libraries/gpu/src/gpu/Format.cpp | 1 + libraries/gpu/src/gpu/Format.h | 2 ++ libraries/gpu/src/gpu/Texture_ktx.cpp | 5 +++++ libraries/image/src/image/Image.cpp | 9 ++++++--- libraries/ktx/src/ktx/KTX.cpp | 3 +++ 8 files changed, 32 insertions(+), 5 deletions(-) diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp b/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp index 12bfb8e70b..c57926feb4 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp @@ -18,11 +18,10 @@ bool GLTexelFormat::isCompressed() const { case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: return true; - break; default: return false; - break; } } @@ -238,6 +237,9 @@ GLenum GLTexelFormat::evalGLTexelFormatInternal(const gpu::Element& dstFormat) { case gpu::COMPRESSED_BC5_XY: result = GL_COMPRESSED_RG_RGTC2; break; + case gpu::COMPRESSED_BC7_SRGBA: + result = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; + break; default: qCWarning(gpugllogging) << "Unknown combination of texel format"; @@ -364,6 +366,9 @@ GLTexelFormat GLTexelFormat::evalGLTexelFormat(const Element& dstFormat, const E case gpu::COMPRESSED_BC5_XY: texel.internalFormat = GL_COMPRESSED_RG_RGTC2; break; + case gpu::COMPRESSED_BC7_SRGBA: + texel.internalFormat = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; + break; default: qCWarning(gpugllogging) << "Unknown combination of texel format"; @@ -634,6 +639,10 @@ GLTexelFormat GLTexelFormat::evalGLTexelFormat(const Element& dstFormat, const E case gpu::COMPRESSED_BC5_XY: texel.internalFormat = GL_COMPRESSED_RG_RGTC2; break; + case gpu::COMPRESSED_BC7_SRGBA: + texel.internalFormat = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; + break; + default: qCWarning(gpugllogging) << "Unknown combination of texel format"; } diff --git a/libraries/gpu-gl/src/gpu/gl41/GL41BackendTexture.cpp b/libraries/gpu-gl/src/gpu/gl41/GL41BackendTexture.cpp index 146554952e..968cc0e116 100644 --- a/libraries/gpu-gl/src/gpu/gl41/GL41BackendTexture.cpp +++ b/libraries/gpu-gl/src/gpu/gl41/GL41BackendTexture.cpp @@ -112,6 +112,7 @@ void GL41Texture::copyMipFaceLinesFromTexture(uint16_t mip, uint8_t face, const case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: glCompressedTexSubImage2D(_target, mip, 0, yOffset, size.x, size.y, internalFormat, static_cast(sourceSize), sourcePointer); break; @@ -128,6 +129,7 @@ void GL41Texture::copyMipFaceLinesFromTexture(uint16_t mip, uint8_t face, const case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: glCompressedTexSubImage2D(target, mip, 0, yOffset, size.x, size.y, internalFormat, static_cast(sourceSize), sourcePointer); break; diff --git a/libraries/gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp b/libraries/gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp index 120be923f5..442d456af9 100644 --- a/libraries/gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp +++ b/libraries/gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp @@ -142,6 +142,7 @@ void GL45Texture::copyMipFaceLinesFromTexture(uint16_t mip, uint8_t face, const case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: glCompressedTextureSubImage2D(_id, mip, 0, yOffset, size.x, size.y, internalFormat, static_cast(sourceSize), sourcePointer); break; @@ -156,6 +157,7 @@ void GL45Texture::copyMipFaceLinesFromTexture(uint16_t mip, uint8_t face, const case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: if (glCompressedTextureSubImage2DEXT) { auto target = GLTexture::CUBE_FACE_LAYOUT[face]; glCompressedTextureSubImage2DEXT(_id, target, mip, 0, yOffset, size.x, size.y, internalFormat, diff --git a/libraries/gpu/src/gpu/Format.cpp b/libraries/gpu/src/gpu/Format.cpp index 43bcd35b88..a4b7411599 100644 --- a/libraries/gpu/src/gpu/Format.cpp +++ b/libraries/gpu/src/gpu/Format.cpp @@ -24,6 +24,7 @@ const Element Element::COLOR_COMPRESSED_SRGB{ VEC4, NUINT8, COMPRESSED_BC1_SRGB const Element Element::COLOR_COMPRESSED_SRGBA_MASK{ VEC4, NUINT8, COMPRESSED_BC1_SRGBA }; const Element Element::COLOR_COMPRESSED_SRGBA{ VEC4, NUINT8, COMPRESSED_BC3_SRGBA }; const Element Element::COLOR_COMPRESSED_XY{ VEC4, NUINT8, COMPRESSED_BC5_XY }; +const Element Element::COLOR_COMPRESSED_SRGBA_HIGH{ VEC4, NUINT8, COMPRESSED_BC7_SRGBA }; const Element Element::VEC2NU8_XY{ VEC2, NUINT8, XY }; diff --git a/libraries/gpu/src/gpu/Format.h b/libraries/gpu/src/gpu/Format.h index 8b7bbdcbed..250d705e18 100644 --- a/libraries/gpu/src/gpu/Format.h +++ b/libraries/gpu/src/gpu/Format.h @@ -163,6 +163,7 @@ enum Semantic { COMPRESSED_BC3_SRGBA, COMPRESSED_BC4_RED, COMPRESSED_BC5_XY, + COMPRESSED_BC7_SRGBA, _LAST_COMPRESSED, @@ -234,6 +235,7 @@ public: static const Element COLOR_COMPRESSED_SRGBA_MASK; static const Element COLOR_COMPRESSED_SRGBA; static const Element COLOR_COMPRESSED_XY; + static const Element COLOR_COMPRESSED_SRGBA_HIGH; static const Element VEC2NU8_XY; static const Element VEC4F_COLOR_RGBA; static const Element VEC2F_UV; diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 92ead5f616..8c65b63624 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -517,6 +517,8 @@ bool Texture::evalKTXFormat(const Element& mipFormat, const Element& texelFormat header.setCompressed(ktx::GLInternalFormat_Compressed::COMPRESSED_RED_RGTC1, ktx::GLBaseInternalFormat::RED); } else if (texelFormat == Format::COLOR_COMPRESSED_XY && mipFormat == Format::COLOR_COMPRESSED_XY) { header.setCompressed(ktx::GLInternalFormat_Compressed::COMPRESSED_RG_RGTC2, ktx::GLBaseInternalFormat::RG); + } else if (texelFormat == Format::COLOR_COMPRESSED_SRGBA_HIGH && mipFormat == Format::COLOR_COMPRESSED_SRGBA_HIGH) { + header.setCompressed(ktx::GLInternalFormat_Compressed::COMPRESSED_SRGB_ALPHA_BPTC_UNORM, ktx::GLBaseInternalFormat::RGBA); } else { return false; } @@ -575,6 +577,9 @@ bool Texture::evalTextureFormat(const ktx::Header& header, Element& mipFormat, E } else if (header.getGLInternaFormat_Compressed() == ktx::GLInternalFormat_Compressed::COMPRESSED_RG_RGTC2) { mipFormat = Format::COLOR_COMPRESSED_XY; texelFormat = Format::COLOR_COMPRESSED_XY; + } else if (header.getGLInternaFormat_Compressed() == ktx::GLInternalFormat_Compressed::COMPRESSED_SRGB_ALPHA_BPTC_UNORM) { + mipFormat = Format::COLOR_COMPRESSED_SRGBA_HIGH; + texelFormat = Format::COLOR_COMPRESSED_SRGBA_HIGH; } else { return false; } diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 32184dfe79..7f0674b17d 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -344,7 +344,7 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { nvtt::TextureType textureType = nvtt::TextureType_2D; nvtt::InputFormat inputFormat = nvtt::InputFormat_BGRA_8UB; - nvtt::WrapMode wrapMode = nvtt::WrapMode_Repeat; + nvtt::WrapMode wrapMode = nvtt::WrapMode_Mirror; nvtt::RoundMode roundMode = nvtt::RoundMode_None; nvtt::AlphaMode alphaMode = nvtt::AlphaMode_None; @@ -380,6 +380,9 @@ void generateMips(gpu::Texture* texture, QImage& image, int face = -1) { compressionOptions.setFormat(nvtt::Format_BC4); } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_XY) { compressionOptions.setFormat(nvtt::Format_BC5); + } else if (mipFormat == gpu::Element::COLOR_COMPRESSED_SRGBA_HIGH) { + alphaMode = nvtt::AlphaMode_Transparency; + compressionOptions.setFormat(nvtt::Format_BC7); } else if (mipFormat == gpu::Element::COLOR_RGBA_32) { compressionOptions.setFormat(nvtt::Format_RGBA); compressionOptions.setPixelType(nvtt::PixelType_UnsignedNorm); @@ -934,8 +937,8 @@ gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(const QImage& gpu::Element formatMip; gpu::Element formatGPU; if (isCubeTexturesCompressionEnabled()) { - formatMip = gpu::Element::COLOR_COMPRESSED_SRGBA; - formatGPU = gpu::Element::COLOR_COMPRESSED_SRGBA; + formatMip = gpu::Element::COLOR_COMPRESSED_SRGBA_HIGH; + formatGPU = gpu::Element::COLOR_COMPRESSED_SRGBA_HIGH; } else { formatMip = gpu::Element::COLOR_SRGBA_32; formatGPU = gpu::Element::COLOR_SRGBA_32; diff --git a/libraries/ktx/src/ktx/KTX.cpp b/libraries/ktx/src/ktx/KTX.cpp index b43d015d65..c366daf7ed 100644 --- a/libraries/ktx/src/ktx/KTX.cpp +++ b/libraries/ktx/src/ktx/KTX.cpp @@ -56,6 +56,7 @@ uint32_t Header::evalPixelOrBlockHeight(uint32_t level) const { case GLInternalFormat_Compressed::COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: // BC3 case GLInternalFormat_Compressed::COMPRESSED_RED_RGTC1: // BC4 case GLInternalFormat_Compressed::COMPRESSED_RG_RGTC2: // BC5 + case GLInternalFormat_Compressed::COMPRESSED_SRGB_ALPHA_BPTC_UNORM: // BC7 return (pixelWidth + 3) / 4; default: throw std::runtime_error("Unknown format"); @@ -81,6 +82,8 @@ size_t Header::evalPixelOrBlockSize() const { return 8; } else if (format == GLInternalFormat_Compressed::COMPRESSED_RG_RGTC2) { return 16; + } else if (format == GLInternalFormat_Compressed::COMPRESSED_SRGB_ALPHA_BPTC_UNORM) { + return 16; } } else { auto baseFormat = getGLBaseInternalFormat(); From 9044cb40d506fdba20ab0f26e6b81e1e75a0488b Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 18 May 2017 13:13:40 -0700 Subject: [PATCH 49/93] Compress Default Skybox with BC7 --- .../images/Default-Sky-9-cubemap.ktx | Bin 33554792 -> 8389136 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/interface/resources/images/Default-Sky-9-cubemap.ktx b/interface/resources/images/Default-Sky-9-cubemap.ktx index 476d381a8c00b8bc5934354e319e365c3cefa5e5..70f495c3abf9aae0827b6bd4afd6607d5d3b85fd 100644 GIT binary patch literal 8389136 zcmeF)4R}=Lxi9>+)~pPZFbR_oaf}g%Fwg-49YahbQo3dsae{mdVJ1XMagwH-;6_j2 zuo1gGI%^U_A|Oc&kSJ;bXp_kYL{YJzW(c^U#%e0GQ<0VwyHC2`Zm-hfe%brrtoOQ~ zHGyPBjqJAP-Mi=C>uRs--!+p==4<_)`@Ww=+kM_b%N=(dO-x8j;02w?aU93f|8N|) z<0+0a+`@4j{lDyp`X4>VabxNK;yG?6$8n`=*Q}lO-^%`;?il#a(Epm~mSY4#;5dcu ztN!Gd2Jf?W!-k@gwM7qq{|C$69GCR3FW#NmuxIXbaew#iLp;a*`@b%m^L*v$yON&V zc{gSLm-qcRn45ky-M}BCT=?$YbC$hw;m4cHxjB?yTvwF)&-U-Vv9k8e5z2q`KaqRk z%(1&pTzrZh-}QReoCo-2bF&wmpG(L0W;L%gf4|}TKX4cQk5ca6Bmd9uZuWoUUkbaf{_lp}3sN}F#0de;AaSDT zFdcj7+-nb=L&o!g_X9o;_&&h*Azyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm z01vzyt6AJOB^C1MmPm01vzyt6AJOB^C z1MmPm01vzyt6AJOB^C1MmPm01vzyt6A zJOB^C1MmPm01vzyt6AJOB^C1MmPm01v zzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MmPm01vzyt6AJOB^C1MtA#pa)!z)M4N6 zf3ZAo@ck0|`8S&X+Ml;M0nQNM#QB5gcWwS_|9<>@e4qRcexJb0@G`s%FXQ}%^Bc}@ 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 zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+AIO)@hqX+zdo-IZQ$JXIdVle0X8Pdk zf$s+%4|qJ}=K((t*$3DM*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L*az4L z*az4L*az4L*az4L*az4L*a!X}d+#6D#F_T{-!mCvK(GO+Mx-`ibP>@;r4(J)outtQ zMU8ZV*t#~dDU1DT4|;sm?zgAS1f;TR3y2D8TOw*9Bp?;7R@x?_t#;{dsn}wvt<-kc z_PfWkw)XXSp3^4Z*L6=>5?iclYe`?Dgm8HTg9&_uTjUx~|W42YCQ_0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; z0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m;0C@m; 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 zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9;c>s9; zc>s9;c>s9;c>s9;c>s9;c>s9;c>sCf{}vv&A>$;hL7`9yWf=|AU9J?nf-^9@$td{h zxj@?0yb#{Y)L_l27i651F(`N;d|`Sci6u@0qu^Dc3tJ(+!Am4YwL(xS=leCdthdF< z-T6W3yM9k`vq8=1HJ#o8(I(T>sV*1hSIn=NUopS_-;!T3UtzxbXZcE8-^6iG^-7ym3@;P}At@&D8K5a&m6y}Q#`Tpz`;xIW$uHD$BsMi#y|>jrAy6WLcD2yU)ZntR9!};ksMWkS zSZ-=$T#Pst0wqp^LC339!5LdSbLzX!7gVZ+WetqAUhtDR7&bv`PEusgIOXy-8|?P7 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 QuQ@YnrB?5KFkX%OPn@}0mi8A|?>5_+ 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%0D&2RQ(dc5@wOQwChkN*6UlnSxn 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�Aw->d)b>&W@c*}yuzRGMgo;izhlQ%!^X?&;h zVKm;tmD8ROi|>4@@4mh0{DlwhdO|F|_o=>*A4cnCe{lN$vfZ)jsgsp!we@^(x@p24 ztDZgCzZcmH9}F$by5o^&Pgdr@`J}mvUs<^4+5dR9uW~KYGe=CU&hR^X(>5MuW54@D zG*1jxWi&XCS;p5gF*X#PX$n>g4X((PC+oOHF#i;x%GuzIq>a~eF*YR45^Eh9e%GP2 zC+0!D`wcuXZVxp;l(ZA#?kt1R@Vb2cci%H!ukfBmy9b-YmRdUaW{^Lw5!)1Q}y zc&9g67|svfl`OpI2{X}|CV?0Hu2-jQI?BbCsQr1CI=;VZ==f+}ioSQA-`SZq&dJ6+ z;r`hceecIr&d#M9=l!SZ2@l!jaRS(3{(*T7N@v=pBQXD2by?y&1?FEZw}w}p+0HZl zd6vZ9>$kXeFMA?!TP(~(^TfKt^BSC;X~~IP%rlPQyHNX&tID8#n;Yh1N$fqU@nm9`x>0Pwf@8Xd1)~IvfX7*Bz~aTYY*S& zckWIzCbF?F#zk*6)%9NAP_|o278rM;Iyj!)X~v^W%+uVT2lM}lYj@ekd7pnD`Zv|W z_;*{3M_H)PW||U?T<KI$PXV=D$15IFE^a!S>IV5_o5| zt8?jw#AeWQrYRBDyHiRQST_snlgK-_xH^|^Ol*yL*!~<#BA5A|n5LHl?8`RRWr7{`=P&D&o|wm8UZP5~ObOtBotDRsBLB)I_#9J0wPr{9LjQ-I z4SAgwQ?(BHw=uCdquJFdnd-Q^kpJj=VSHs9=Z$xJSZS6?-<#3kdet%x^$&XLiW;1+ zT8wpEOdZ#sCnxgtTU>|kGA4cx#%DJLb<>)iha^)S%Pdy=6*-aLwZ(O4xiRrYnD1<@ zePpTWs0s1(I>)Xpu88-E#CGtH+3AVE4|$)Mm#=!7qjrFm7_!d`W`4jUBR1e$lNY_^JSrqiyBS-0-s3Ao>2tl=(r^K4Sm+-=~mlChe* z;I-MLy22K?UnUux=BY^KCFK(AM)==D9#zKl%M#>1Q^1mmgZT5L+DS)ag#+~HXT zqERi*dA|2W=hgwbpKB>RBz8Q`_Hw^K{Z(^ZXl~A@~=` zQGfCM*3@+NY*aEP6mSo@Y^iX5y}|BDbW&4y|_ zYnQF&Alm`^F;%F__bVAzQ>_E;e>qcy8oS>mTTMv?aK9#M7IgW|ifk2Y3pkkHRr-W{ zzbnIP3?62GuByNTp z;$i6G#Vfq2>BNbVJSyq~tluWVGNAbk;}DM&&L`&a@cTw~w#QRZLGtJXp3Aq}WLZc! zjN;$ed6hkWJo4B4ZE~Kd#mgp$m!jU!`en&tsLn_GX%wymw#f<{kNjO#(Rj*jvTR7u zwOwAKMvcPId^zw>g7+H*F5hpHEvAHmg;38V^Bh-hlP!jX0?6-V`&r#G(&-tQIAR4P>@u}r!ob~)pQO^a+ zZL-x+eYow^l5kWMs{FA2#stm3i~{l>*_coT>ysOhnF5*bwFzeL8AfSTdLlNb8R^w@ z;-IPu6ZCO5+PluzTzRKRLNV2ImpLMgHgY9q5Ugv@Rdxd+@e)g)b`#0OH z(zcLWWj&XcMnypvXm-i6m{`#6ZZ=2FdY!)+_E%z6vYYKh<84+lWKr*E?{tTwW}(X8 ztz=lmx`K9yXNbFG;B9w>I|s}H-_xwvfWz-8uzv#Gt_-V~=s@u{?tc(AhWn$&yFyW; zo@2{p3Bqdod{{rde~=^p7;cArJ&6g}r`jZoz9zrDb8)EOXh8l1X}8VY73v?>exWBE ziW+&g+bfG^0}to#%I#)&mKE|@ar(5PeG3{jyC|6rYyq6F->7H1x5=W}6yRXI18_f7 zkwvpmWjD_E!0(@&#&rel?r{wK9vV?Z(JXNJ9qwYV54A`6ddMEIceuj_f-{QUD`p7r zdskBh>}Scq`6IF@N?ah&(dmZ!#eSbx6pdnl?f3=5!0%<yIDbHfZ;XjM2dPIv8f#NIM#jU^H;-Le@PA=Hv5e zyp3VZgXc5qIr~D72YzoIvbQsM`*z0tjrI-(=8KMp@h}|>gY+9bpJvzQ2j_$NRciW3 zBF_bG=+Y0(chDZ6k1QHFt}UeL>4){>1NJtzogEm`E1t?1(X0eKEW!$je;`^_P zV?vjQ?LWVcH6VL@KXPb)TxnmOZ|b}pj*9SuqzwBnkpBlY939W=Si4t}gu0%)A^&Q6 ziX!;`{4j(0cS!SZw14yg_Iu$N3;um&Jv?k)+}}k$;J?9hjoz!iF55(-$S`gXtF0gM zZi4tIrr~ghw%;a z{4dmS5S}NJMFAc=Y7NC+m-L(up8o+3_wSGmM{u=QR=;R$)YjXE=s|dW2{{Xcrikx%&%M zoyalJl4F=@MU7i{#;g9A5g7sGR@qQUB{|tX86M&UD4rQbjXXozNlx}h@;7{pp#96( zYAxcJ!SR0We8~AF4C>)y;C|H=eSAK2|LcmLK7|dz^976|gPuM{r>LN(ww@f*-Fz9= zTd&!9AJf6a*emN9h%n40^$OS4dze4ib?&fvAl|=`W0j83UDuHQ1kXok{uWSLL$OJ@ zK8EozOoZWo0nZy3qy41$tG_*_Hf#Gq6kvUtLm`#)cj#}>|Kax@DS`9*Wmz=xRoyGU zufp$>SN6}REaObz0=~F?)mBvrq zL(DUS{?7#>jBD3lhxFjsZr1I&rhjn%aEv_}uBYOh*E9YF<1UZG)&o6{F>HMdF;?J* z_M87)@$0`J)_2l5R$(rw<2C>Fgw$CK!!ry#;N@0faX+?_| zhRIcs|M(bYr?rR~vNKHFK2bZKVU&y{`0r?Z@=*I}=zr`WkArd?|LS^NH8k9Wzia(T z|A_k^_*0S#^EdOfVgAMq`Wxo2K7J@33Jk~G9fJL=#XHz0?eKgS9{;~TY`?JQizk@} z^GnFR73Cjtzvbz*{2?%$PZwI;F}Ob=|3E#mb8!FitiA2AB@l0h@)K)zH%H_8@Qg2V zPE}bX5T@4xzb(DC7* zdf=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX z;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZo zpnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk- zdf=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX z;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZopnBk-df=dX;GlZo zpnBk-df=dX;GlZo_@Ax^=VJtg;d#4w2)>j7F1 z(0YK@1GFBX^#H90Xgxsd0a_2xdVtmgv>u@K0IdgTJwWRLS`W~AfYt-F9-#FAtp{j5 zKj7F1(0YK@1GFBX^#H90Xgxsd0a_2xdVtmgv>u@K z0IdgTJwWRLS`W~AfYt-F9-#FAtp{j5Kj7F1(0YK@ z1GFBX^#H90Xgxsd0a_2xdVtmgv>u@K0IdgTJwWRLS`W~AfYt-F9-#FAtp{j5KFMd&*%h8SK9N@#fwxPV zKLvT-ugHvGG1pghgr;}R8O%3k%|5{E1BxsPvY43A8VYsNd`$B(&By93uB~M3H^2ZHc?7Vp4;YDoBPpx zWI+};@@+8>JAmSiELzOQgbp}f;8?pX3l{T6zRmqb7{Q=8o=T{WTGNlprQ@9`YqgN3#%nb=0F%P>_-~x)`5@pN8 z+V)dR*!2mV-`BIK^w9@zdguQXcRiMozy*{*`mWWLZNK3{JJpE7*!$j%sXE5vdA8|~ z7b6Ojb^KUNWf_m7sY$&UQO?QxBZwDjJR)>K_L=>VN&kv#=h1-)388`t$P{x5}dUR|)+&vYYB* ze6kNX%VfiNemfWsStdQZKB%JgvHMorGSZ(e=0dTq0iI(Ouh(Xkx4xwd#k!(sJyuIr z>6yCmZZ#ZD;{3`sn_$g&vPKsxh5lVm7xbT=UQq$@6|GN()zVm`3&kcK8^`;Vh$2{R zDG9n*@uY~tD2fx}ad!5)br&xl8^;BdZHi!>o>Ifb?Y5GbdULwN0saK>R*`L@#XO<5 z!>zI!S44}sv8DsYgW@l6v8L7S0Xu6S1BdbC!FbZM9TgQP;^%|-KC!mlt%83e`?bTy zqxtIu@K+Yrla={-o25ew8drXcLG4SR-i(hQ^ph3QYHqCUh^cHpnvWvLDUCJXQ$4U= zDBr;PfF7`4>|U2_P1^$bX&lN|URQ=SZOfaWr?wt0Nw!Q1!ucbL>~$?e`e)a{@d6j{ z`BvL9)1`4-D0Wjci4XYBd8JI7IgyDiQ3nLB%D2szXS?oMBNvMOD&kXoUgRG$vV%>k z8s*{m%{E*5^YgjOpf|_)w{5fKSg(GIL;7=^-?uF<)0%doHHOxM>)y6ov0e8wBXCL2 z`y=w6jM+Kzd>yiLTz4emoISne?QJoYjre?#;KrEBPH=ddLKoFMo)0koKG`|fdc3N* zOCRxVJNL{Mu)96GLNV2uz_a%AyTi$y9gW{Ji&9RHdwM zqVXg+j-T3`{aZ91f#cYOi5E`%U|us5Q~gna3v_?Tz1h3wjTe}hhjqeuKK%Bc$j0_N zIBom^rT0Q#=Yzd>ahiSsX8U``TkkJGJfcMUijvX!JmJtEFGBy__w;mcySw|R4Ctq9 z+mpqrD$7)O4u;Tr`I&F`?Ag4m=Zr3IOFc@nK3#Lo-q zD^{^3uPlc40?+v)&G|DcS9YC%{_}wQ^Jgx< z|E3eLzR?7Z>-PV-%zJ??pZ7*H6C}%Uw7tP;pe`wj9 zy<6g(^-s-uXxZ$Sx1jTbzfaA2sBHF(Et;Mj2llerGftuQNxa`z{+_e!?(4@x{}8`? zcEq35&c_FQ-C0FtuB`Fs_;~wegY5;azh$$t;^*f%zdh@rWpiejp}jMS=ltbsT+8l$ zW;~;-*^Q1*;JI#pz`K0;lu|f;mLl@i z+sw&7vA@>4@0Dccn80)PK&gG@+!-eSk}x9xZ&_5dx?->Cd~sKrWZ*e}`rRwmmUT8l zf0BXM`Sb67X#LWhi7@|X1is4G^HAyflCF0yED1Bm67;%m?%{IZ{ar5KZBKu>EzqrA z^YWd&OvtUWo{$RXV|9V@;G(XEswH8@nWX3J-#!`KywW;JcRHkc)z=GdJ21fl?LD4d zpXLdCmA_!`54Sw{%1K{wmtIQJ2fC|t&CjpCehJLS3H(Lfu5D{}E`j|5@iO>l+o{v{ zR(+`c`yEBVkNw$Z{^h+_?b`QwF3eBo|L`wOJJ%jO4gM1q_^NJx;)T}bhwjkD)Nz8K zuVSw?hj#zy&|;Xs(!DMH{x2Y2cs!wl7gfn*9GCy;fBruUx|gp)>u=N>bZ>sNw`lJ@ zyOF;nr_`{aB@YxGy{i@ZgHd?AXV>X);hqn_tF;&Ed+LuoXYcsnM&u7heK4@1>$zLo zF0`ZLlf)W((e=08bmZ)(T#Qw7{fe;Yqw*b7UU}-=>+1I#qsd|oJ1wyw>+qRrV3!O+ zU3Y&?!3|yBPoRIvAk_MgJ#x#my}#>6{*h#=wjcZDjB8&ntAzGZL9gd_y6>6#v)}$f z^KameJFfoOoeuz)41&JBV1LQGZDW9edPcNZ9l4b{36?uj$r*IGt^X zeysVIKB0TZDUSWwlI=(@IN$G2PXF7cUtS;Q)&AcfPXF8gW$$gEo2v4?|9wtQlhcrf z(-QE=gnFncrdXH=1uKek(xx=!&43B5iZvkCGQM0K9dYK)<0NVNhNaS4)H=Sjya=2$ zEsjM|7)?rfQBkadPaI?h5HZXsmvP{^z23Pw&)Pd_>8>-6_pW)K|9{rHzwdI^;RA&%C@j>+8CuxkKxVZrz-9F8I+ZGJl>6Mr)tS z`XVrJCe^++TDw{QMPMMAPvMM zr6b7)Kc9R0%!{Q`a=%jTA5XTA8Ms=eZgbWbkAJWkx8Ke4wb8V#S*M;~{5h)})x~%& zjeU9Z#8Z#I|2g4h&~imDZ_fGR@xz;w^VOym9e6e8)Z>Sf`E-4ay{hD!GtVBlD>+|n zt^e$+IbZk|UY%U8HZ5>=-_$RB?~(SRk*|%u+|QnCnlIrzi4XL%Uo_44CSz?HyRBb; zZe3Xi881U0WVYR-Ki4|%B&k;;Uu*yJXx6!=L()**ez11p*Ubk`vI(6UGibGedrb@e z6fE0}@cSmi5R87gG3QSk=1tZlG^%Li>lkO+wU?TlE6DtC`$LXf|E;bJ^9aQZyfzSb z-0^P>Wq0HERouYWMH^P#_#eKqoRI1XjbkOBa{7?zhb=$5qZP@mqLJ4Y?U=QIS$}X7 z;gzAUwXZ%qhk0_|Y1YlCxWA&ZSr7lmy3(tA62D|(&N;6i8`u%vG*I13_Os-{sm)97 z`00xS)fWlBvf;QFzkkGe?$_79qCD{8Ky?9`uRQy8(uUhk;nc=^LtMie;%8RB?fob6yd;G`XgX;5@o(-L z%1=Agbm+5te)IbW$$BSOOghwb!)N#WX8H7F|H~#d+<(K-6?^XNCVVC@d%pDkyu)|y zx#I!CTgq0}=WjDr?)of@pBHmx?iQx@gd8J8P0 zOST=aQk={O-c?zs!1R;9lImdh!g@*!6=q&UopAxJKFjEiV;Z$%UO;uG@U% z9`e4OYz5`zo4%-=oBFFGXL0{0`Gw&@^^Rti_yv!0vSC4ZP`xWa z;xtc>m}7Z*UPi^yy!H?7A@iA(pE)ngf0p;cdtW5$A!lPk)Hu#@A&y zKg(-hoSR&qIKKXY@~?6?e((j8@Gvp_htB)uf0?}TgD>#kAJ)lJH@q9>^K*W+;9ds% z)hRh`+UXT%a-Ug5o{u}s_5FDpD-Ny9;5*$R6q5yA|LPW3fA$zBlkkM%1ygkW@3grh ztJas|zrW&+99?inTSdRu;GA~M!^C8vp}4Hm8OeTfKT0sYF}ty`IIq(cF+W+#zO_t^ zJF<0-9c`{i<@$r?FL}nqZ<2J5#x~d9N@M+El{~L=l(o1b=JoX~p8ri*I&O7~Yp>Z@ zisN{pq~msw_BztOP|$L#{jS~Srcw=_-%VyM*BEp~ZqLB^P`uEr?XPZg?Y`Ym8oG#| zpFrZ?WlaY+yK$V%_ug(OeH)KoDAezBwm5suPvG%G@xqDPerwRRbJY{|og_AEgAGB~ z?&VMD!U<0Zx33w|K2{*q7boL``1#l@qb_J|arKJpb&R`QjTcPRI;=rgZ^aX(i_~P^ zVQq2k6pf|q#d0-vgOS9&qEW~G1-H+}?JIUJH}E~~5Q-Ow$@q3dL$N1>V%HgUob{pV zE^&P+?muP|>NV9Z&aP}jDN1<8#0rEu9Pi9F=tw=-jCFW^JI#jrR7~cJW0df8#-eOX1G!3{I0^lvuu?OU|dc1lL16pRB)P zXT^FQUeD0;JF^XVe>>y033U!WnaAsk=TFpe&SV_M>(8I48_H+k=cgHU4!*^;bK?4X zy#6`+uM;*nOi$kSLcPZ6uh^cQQL0Jc=S_rv*RqV#5Ac3k#rhg&(A9N& zhOQgOmI*qtKkkf!i`508xYbne;M*#8F3oTn@OXK{<0bjz8S8`mL*Cwr&1C$z#iVmM zgB88Eudlxa&);g&1)V`xZ)FC51jiP!z8}X`>vb845QCp2X&{I(9yz;yjnvvSxR7Gmn%6BTg0SxIDjW zZ}xhf#;u0LDFV;swYc_XHv38!`;ZIgJKQ0(-K^(o zPP?21riR+^(em#+FJ|j&i%z?owk%%D;{JZX*A;ErP-qhjCG1vJ85H%wqSI?^HdCXc z+pX@3P12{;^m&~HS?fx=aJ^s2*B14yk!^y$mUZjY*d%>zpwHzj$ink0S7V|+$g(SJ zwygTpe3Nm3K*u&yeMvW2FU~J1%%4zSLO!oe#W)|nh}WOY5632bkUi}x%s18VXWnv? ze9>vI&1Px{c3<>_=Ipa^K|8m9CD&#tv#dT&p5NrP<(nEfR&kGsiTWCLlZ>C|H2Cvl z61!|TW|Rbp1IfIjhw#>?+55cK0wKM)%grc*BG0j#T!r~rd=TO1F^^5&LYvT7(v5kT z^fhdsT$rC#-%p;$@o6$%|7LtY{q4Mi?DysN$?=oxwdI?1C1Lj^Cb=G)oNv;mvB~)d z*%5K|m3)xdNL_{(z4|-qzpEYfbf6Sdc~buQMj< z(~|AA^YHoy$#{5w_!5La4;KZEhFwxvFtI)j-{)TSN1Hyh6_}BtxEcI@u4gt~Q15dl zV?~Xb^}(V(S7E_~^!=nhNbI%YxZ8axG`l!caAbhXUtZZE6(-cj*H%?|JTo1GCatE1uQYdyFxL6$FU>{b;aG^i9I2?FJg0=$oC&> z+uQe?xE!xt+unX+M2zz%PKa52jo)vxN`^E}EY62FHA+mJO`1Nfv!@UwGNE z(4$2HUo7B~e0tUKwxh4bGPRn(3R$w~wHkcCc-3F7SYwq;`171{*H--ZU4ZGdiDFi5 zUpI1x;wEjt-YH3Dfzx0=GTSd0SV5?fOpM%W$t#N)_yFU#iFlim^U>1rh&;I;GudE- zkwptvSJZ`;DUqTMsZdC$*LyIp^XFrN*3bAQ(QF77k^5>W)(4A7y=HQ3k)80_7sh@> z;2Ab5NoFIb>2ZgY(fPkOmRX-r$R*UQ%$YMio~o)?YJC1D^JFMZxP&?yuRHR^09OFms9oJ|Gy1Ckvrf$1Uk7 zCTLj}@4q%}AA|3!QE^=0S+>(AN&4Wv417Ok;^SwtN_<^0<1SZXCT)$~FN+pKU7*v= z^u|nhJQ5d$@p&}ynj$~0cP$1&Ek$ySR&>&U?GXEBu*>T0_2_vaJ%nj$|rUyjdr&A%#U(sM=lyb1Ni zq&@^ahtHcOtHIub{g){jTZIPy*aV}96ZqPw-z8ZEeqR_RcEtn(7l_KXd}9Nd|7=z; z6p{MOYy8ZTS2k2%cckjetNzIDmCOR_P~2%19$fE!W`!i;*EFuL1_Q_7A0UW)O+eG( ze*1FXU%bfU3B?Q?8}&+}NzWE{&G&@FEY{E1B~j#A4XIB9$3(r7VA2PY=V4SlR8M3+ z%AP$jo@1i2B;akp>-Vav>=H!-`8-xpdXllpfRu|WqkOB#cCTRN@%Kw>*B(B6`0$9h z{qW)Q=kf0qBC;TeT)8NN&>m z6(obevS9@w{C%uH+1?&@+wte~q`g7Q+I!p#Iy8p$M-%Zq>HST`9Ygy)B4#6`zBI+% z?hv|MPj4j{rAHYYQGXr17vGNa+M)UlEKb%t6ZHzBNzWAH`koy{9K-NMj4(B?48QLU zTp&W~ohu5vL%nf>mW}!((PRh)7JEWU+@L4-xo8No$@8IQht3n7Yw>+r zu3SEEsr!Cp`(AS2k@pL>@!jqP`2I`2Z}iFgc&L6!Jkfi*PzAq zo67qH0p~IAXH(|^=X<&k!rwRJ^MI$(^AVvdr{M`vP`TedW;IHNE2)RSEeF*swiXiSS{Cm#@qL%gH z-zV}MW5?eg4{|J$C4>yDPwr7JUKK$S5)k>lfJ3P|e>j$g{4x@F9x-;5C|5?rQIzh9HRthJ3pUiFtG zJH+ez;yHL|{F5BsKdr2lLm4O~*)s#j-}n6J{OI`%&6mTo#Qu5odPc{ic?_?YMXX0v zNAn!HANITO_va(_2Y>&rL#&J>#G`<3WrwO>-cL4)5E>CD_j|ZrSY&4smvDWh>V=Ve zl*+4y^Qn5G>uuVn`1^ZV7I^(eSLIfU>}jyEov-^!u! z$?{~8JgsbL78()fl`TaG&6Y`jK7_Vg%Fu8gAvv#%MF@=>u5W8P{^$3_R}Qz&BmZKC z;*=n!^^eZuis9*|{ipVSbbX}i57$$=i>fzM-iUf*alPSsr0Uhjq5tJW9Qlvm{)`jf z|Ec>AUo-gcm7y5l|KUXFEuKr=X9zK;7K}Gtz7GSwl^*i@6>>k3^K}v5f2s4yB8Iux z*%2Q)uPm~Y&##AL#-8E!FitM@zGImviX3}8mg2)96gjCfh(N-Ut!1rnUjE_h`yc)M z!Tf0by*&P__u1(4Japa>iy|i(sPDgbKj3*panc=0S{WhgBI|h1w3d04_d&3 z7Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$A zTEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`e zXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia> zpanc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{Wh zgBI|h1w3d04_d&37Vw}2JZSxQ=fV2${}~*|*@eCM|3B|I#J~gU0nP*52XG(4`vBgD z;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih z2fz=29{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4D zfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=2 z9{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4DfFA%q z0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9 zegOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1KFIU=S^cX#o#fz=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`e zXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia> zpanc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{Wh zgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d0 z4_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2 zJZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A z@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNse zz=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc= z0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h z1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&3 z7Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$A zTEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`e zXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@SyeIjR)&Pyo@-` zF6@2a_-hXwhZuN3J-~T@`vC4kcpt#~5c~l60q_Ih2fz=29{@i9egOOc_yO<(;0M4D zfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=2 z9{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K|(NBZXSAnnErYk=fvSb(q5L#;*$;CZZ(5EFUf+%G`5a? zE72L_IKM2}1WQ(PZI4^+JT!(4Ag_%VC$8tZ6P~L?EgL|xjTa|8+25V;ga$dzZLo7QQ1dKEOtu`Gl0Sx@wL zDehe{P8*QP{q%$;thhs7^_Q}*+8`i=6#T#M-gor35E@BiQX z@B7Zf_vh*TA6*}VJj>c8K{T5h)A0N5a(y*&xV~aMOX|&RY8g2qo{)%$1<`_G>aQb!*2EM7|*eGSr#l4TD4u3YG{sK z;CvES(jxBtT0JqF!SjpSC$C;!xP3sAP#J4F$3~ft8Y&iV8mCdVtMPP>^`BbdbI&(D z#d;L=u{16qpZb$^;ruP{e7j)RmY|q$BwL5w$EE zJ-O3bkpFxGlTh(|8NV-5Xp>%iSCddfxVWFs!W{Y04tj4GIFH${B@;>#7X0df1 zzE2}E^4b1+5b%mH8;oMsH!@z;`alRWzjrg zY<<|RP97RhGCfJ=6C=D_yhRX77BX%evv$cP;`Mjo^(SLNGG*3wUGy-6xPE;$r^Vco zjubcEZ@=B^vRcgJ$omQ3|3zM})iUv^caV}8L(Ze@6(!MB-;Mjj=U4U$7SUAK>Gm); z+XaKqX3}hu_pZ07KPrp(q%}@l51EdcYa7m=pKTX7zs%S6Nl0$J|3)$&zjuu_-z+vV zq(4sM_inJ}o1bqSn@~eH+XXHv^9Mf4XXW4CexDECt0tfq5Z@OXNH#bm$(P^{ycmob4*bSd9B7?Vo`d3zIT~# z!7goey0(TXIg|d%W7k)*%64_TUaMhp9qHjmLwDl)z?s3ZQA@!aU615Ft2w5q&l)&Q z^h{RkmdZEVPM3#}GefJ1S}bpD`HA%kbWFkXW9>oBo6lDjmgDox^IVOce_vBwlOmaYxh_tmsNRvo^TNib@R*VfpJKZ-uK z@YM;3@ZmJf)gQg_h;!!Cq(7cxnXCI=S>t?Ve3Bm*h_ZdJ+&}M?V|c#R_@n|}SX<%@fsB=;N7Y3zNkbXMHdGmea(#<9%G;)mSJU;cp1KV8c*D`&2D zFV8h<@Ot%}hFSUR)o$nXX0o2NWZt#hvY52zI5z60i%t zOi^Hkd;WA|a({RY!;V`~v3zT4zR7&W!k(c#$FNtgsHl9|i1#m+&et%fvsN#!eEG@b zdifx8I%oBA@3tc-xqoTwriWU*@^x;qUV}ERXwyS2tBQVYBJ)qz*Vy}7t5>ahZUe5z z2HsF#)VH#wy6ROAQjT8LU@+7L`c}5Asp=iCQI1|^H5hgNzLiTJsorJ$_SUdAKGs;X zZ_}ookKO;`bGZIu241)C^peJ3ES_DC*Jm{d4be?YZ}UA^==%3t!&+X*N@q7OT@n1r z4Vieq3$v1O!y|7FoL;c)!ce~HksCky9M`X4&^ta~(b80L({tUJ=Y*_v#l*7dNqE(#teLIpzNN9nMUW`430DOLI3KrMa+}) zI+2^feA0@_X5IH6bq90E_{sPV95V?IgWKCzYZv@m^T7@c_6Hs8fNt;OTXSwvVzn@1|PJSon88M^MMXh4+bsA zmgPQtE`Y~V8JuTUpIv&cxkMuQ3_cjGKD+db<`OTCMWdFBZqHrtMZ&kuHx^=9(8zoHY(`?AUXg`eM^ zTl{I=f!~q&W$3x0>Q9P3ZQhqn#>ag5S@#|L`N0*WJ~H(|yYrJdpEeb}NbUopUdwLJ zz42Jxyvk(Wkj7dM%sJLvludYM>Tx{dSab1l0t-}o%Pxb&x4CtCNvlx%O*JFeL> zYb0pJ&jOx!OZ~Wj4ncrlqu>XDj@Z=ZXTSfYtY~7Id0e@!l3kz~df0L|F?hoVm z-BqMN^Mt1kt}o|uHhypqe!hCrlqb`>`TU$;Ew~2Z_hYs>Yk!9G%%qKn&tP7=MN8Jf z^%Y$9GYh|9l%u-Xm6nYDFn@GXd)XPr&8R1}?}P`{;zwDYA>@S&sUCNUwH82N$q8;@Oon7aZJ`{Aw0+D82Z=qpW!??e^=%h``3$~ zO@5|q3%MV!w5;!6KX^R%nX)Z}w`giTu)g%-{-Q7ceRBJevl{H5MRDW7!)M={+#KRcI&u$Q@1SK$`+Ez& z{PVP59l1uMB*G0j1&vKjSNt*WrFZYu;P<7~JaK;0YkQ_W^Wn>+o~9K%qg%Lk^L3qz zU&ek_oH6zJgQ2INy6#u5m+^cCZ3Qnh|FQ19>s}a$YZUj7VzX`%OUIP{^R#WZRAF9& zg|@54-dDBny3V8LSS67m&Y5x5yHl4vJgf8Qmv}#|g*SH`TsQC5S=(;?62FgQ#YJP9 z*F74rZ#%NxyH!;O9geG)Or5=X?zUwLqqu(`yJ`B>M^@+FH@DNBNA|PKdDY?c154+I zK8ln5TWHJOkT?GBxtl*ZNA}lM@bZSdv^(ruKglDpb9P>4dhV_Etug$3D0Z7Gck#Kc zb4q&Ld1U{V-@JWE`WHnd+sdaBzkjF8^8WVPsUGA9!@jdRB zk8Ji=Etm00Kt#X7-)xA^8LbqK@*7MWlc?+sb^h;j-B#%*$I`~NC^ef_9ZeR4ur(bCl zcjutjJ^g>yZ@GO@_|vX#x4J8qYvfDvT3r3+u{`T$)VRe|=V%PN_IjIjr&LcUZZ*|A z8rxhEuaQ4@X9$T?g*qg{&)_kixJ9V%cLrU(w`VwS@q|z;*Ql-KTb#WUo9kKp_ie7RKFIqk zdM6qWk@J*{T{zEF>XLb@zhdXa=2DWMY^--!NqZ-WErPDb>UZ{L8|#<^qr@yieT|dE zS|-8t#-%Ks!y0t;E?a-_Yqb-_B|+z~wmETp{;m*;Sp==a>UZwU9@D_!&tD`#%US)- zuIw>~NNf>w#a6%EWj5BP`cLM~!|in%t6$!3HttX5N5}uE_9OZy&kx0MOO}pv2Ay5* z^*UoEnJ<+WbBx-4o!`0LY&gi`dbNzoPr>94t8ljKkLXQg9ts zkX&zB8%qf9X+|AK>chyBdYERc$Nle|*nE(=Xjfx-#`hE2Se1zZM9*;uh@#mpt zLoG|5*Ozo(^w4p_6N;OSoTg}rTriQ>b|pNa1~Xr)>02WeWUUJ##r;-H;%jR*t&s{% z>l|HfM)^)`*4GyGxe5y=H0%$%J!5dpp2l%~Z72TzK-AZ=eXc^=g!&Su*Bu(sJ}vC_ zFx$;M$rofb><=F;XK?$zQ?5drsi7nT`;AoIW+MGFkJd;+&?ac@=DgL%+b*iJYb2hN z%=2V3E0wi!D0Zd3wy)D$Xv@-<;QLIR$OrqPvdt#wN;G)Aq9NEf*>1Cmy0o65m?3fP zE%^Qwg&@n?Z8r0W{D}53QJ=Q&l*?9-m5%p|d9=pH2W@8U67!B}W$1$X4UT0_w}Si4 zw6gop{XVrGTR|4@=uYwIJLQrKvKky+?hs1ltvK#>U+Vn6{{Pg@f*W-kB{iObWps!~)`3h}gRlAMRs z`D!c)CoY9#Zt{x9ED802sdp6+l|wI4q0oWR%G{VvI3OfM#W(8Ozs zI%UZs)D^RCH551LYl=?ER*OOF=)~`_*igNyZ zY&@qavdfZ%=lZ*_e-ZcqLvwa^<`6sQ&)1$KNyl|6%@Q|3=NHLEr*IJXq{^NAVgI zv~1A|!Y_c|N2B@21-^!f+9XMzR%}don9=(+dOyDtn|QV;RSyiQkCF9*>jlTMXff0k zh23L%hw3eN=GvN8o7m*cu(W3t{z{SVc1;RL>>$WQ8@BcBhNv?P`cb&k^u zcJ&TDZxQPDv2P_pvGLjEq=b7ZtwPl;s(8+@k=7U=ELq?N_<3ri#;JFX5g5pR}xHm4xf)*v!jS(7`})R zrskEswx~6k7eteuDaPZ)4O%AJAqgg9fW`d}@?0PyOM;27u^Z;!H71sU0uf0PM3(Cd zD=#ZCo@1gUA1La=>lx9Wyzh9`2F`cVv$ScMLp;Dc?H2Buxw8+Liqb! zzbps_gFo7Z61y(v15D3b2;tu=L?uBG*?>Rnwv+D%eX_utIM&|dW>B2x7{5;t1p~{5 z71I8%0^9sB{&oYbg_j5cu6#Ki8 zd;G}$@%X7cGU!=f4?VZwxlcu;kSr4hWrU=J_!}U~S@9Mqy z_UL*XU9Y3-d2~#lkB~yg3-EcneE#r#LdTt>Vk&RM{x)?VC(rkSQL!gtk7a#GLOjQz=+}2K zNF3^qMN#G=`F#SiOGqGJ^Ls+d1<7~em-vq>b)zM>j770Dgk*#ek9>%H-o&M17WumI z_aCEU9b#l8ARaMj zl07r<-z%f@|JDA6=F8zx@aKWwv!3tp7+x=nSdXgCMhuS_-j0MeOIfR>ESB0&p7kN} z`R)k*_Df0rc)xkh=PPCs%;o)LqX;299<|?xbVK`#>>78-6yt{LC(0l<^VjNWXnz^x z9&<9_lP;(~Fd(<8GFz2ztJ8<-HGmlRzp3%m{fFzn$m97=z2o0ABb!Iy zbV!#xF9H{cF7jNJ9n-RmT^0mh%k=%nE*3U9_{CkPZF|ubQJR#>$dlc|78`8cVs&B=;(Nb2{Y8kN~ ze#Y%#hVpLDMzVpI&z}$3$8=mc$;jw}IyPCq9z~sl5Qh-{N%F=;^IJKTe7?hdN%gc^ z(h(Y;ELRrEd1XrxLbGLZetZaRx0IpbJi>VvAvA8dzOCu_pWhc>Iov*v{EHciQ-YY* zKRS;qhNqkMpW6S?^^vMKTuZumar5sOwT>hOJtuQB}h z`N;b*oCv*z?_2zOL5kZ`uHyE|_ZPYElD|Jo-fzSAU+TVM5yM>U?1*t%pX|l&KR?=p z+@Z_om$8riLkKl+sr!#*q6i&*JC@?ZArv{OGKfIJlC5Q}a9;l5>-!)5{K5Qa{k=T? ztM}Q^`9>^?pln3NCmE>kzjr_2d0N1O7Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc= z0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h z1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&3 z7Vw}2JZJ$ATEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$A zTEK%A@Sp`eXaNsez=Ia>panc=0S{WhgBI|h1w3d04_d&37Vw}2JZJ$ATEK%A@Sp`e zXaNsez=Ia>panc={decV`VcQ8j;>0q_Ih2fz=29{@i9egOOc z_yO<(;0M4DfFA%q0Db`c0Qdp$1K;> z0q_Ih2fz=29{@i9egOOc_yO<(;0M4DfFA%q0Db`c0Qdp$1K;>0q_Ih2fz=29{@i9egOOc_yO<(;0M4De7_&KdFXv%O4iHh zc#zWuWJ%y9L6_F0D82B0h4(AGU;n>*zcz4M#!k-PI!%`{H8lEsR;O`(SrU-hR3Ge7 zmMJ&;1WragXBU&_IpRY$+f4~IHzy}&=1fo3Ajh(dB=P2~C;Gb-_pU=@SU>W~f+=T1 zZ8+h%D#o*ZS&{{-G3!7NN`zuO=a*$!uuOO|jqUvl6XQ6>F4+W2ma#7ERy!jyvK1C4 z)a!E`jN;tqYc{)g&CPwFFi z9t6>xr9aT6xI=>+=eJ9eU^YFG)-~U=>vBCl(I0kS8k4Mli8q^?HMl-W{T3wDT!+U| zRki2vc8+5hS>h#AQ*qecgObnN1dFkG{~{(4ijjJ<@s_L&!5+5<$BbQ)1d_PD2RYU+dtH)68uyMyarZ=I$>nq<)Nz>($J&Ok z)rc&4T@|?f%$aK&PT+Wr%Zu|f9cvp-oR7$|&$}ww-=ids*mmqqsN+zHLuo&MJ|ah? z9lLSf;b?C-|GS9XA++zrafze7Q9Y0E2gES9$ushVo`lLoWZ#8`E%nH8|g{{!1*43q(3vtcCM_RmLV56|cu9zv3;pspCV9;{H)YmUmYB zlFv6ZsOLp38}OanDcSO0I>aVaCWhPlcG_$?9q($~YDmTu?x@F=kr=Rl0&_l>`&xwEko~f!C0j^CPcMk|thxsK>36{rAgjM5}m3JxX|(q4CVwS2%l; z^ItPG|7Y71!~4r1$IJ$@9?oy~t#Mi{A|AgJ^Boa~lIw8^R@?A;SUXwIvkhICFTVf1 zYeehBD|pN+md5(!ld@o$KJEZne>#p`f_3^+X)NYJV$A2M+ROP7yoUK@5q^U_=lA>8 z6k2nh9m6PzF|l-(@t>4=t1Yuu<7Nn7pS;Fuop@yMhbyVatE< zh(<|t#?m;y&-;*Mlb>;F5{!!LuOgT{Pwnlh8j-z`HBF>{M??F09DlfGLqcUTiyiIB z_~c{Hrs|c%!}afOZ%?SPG&X=vy<&4LmEJ{oefaz`%xw#2C?Dc_jmRAcpRdeJhX=Qh z$Q@GWZXCPa?Ft?*VtXZm$8&g|Z9kug$S39Kq2zct#`}W;Ik&B<3V(?Ci+a{CvrAXp zzpS?<*}wGAxzCdA+sXNsANteDgvtnbyz_|$o@4#FmOmVAE$c+e(W|!Wxqv^-oq4Re zcMI|;sx^%Z*wgyc-*1w)Fv@l{#&K+v)12PB=D=0qgv!LzIF|XM_}}^)c5Y%lidvn{ zvC%WH{%LQ+Z*o}NKAj8r`ZvGQTetVO_`J`N1g$VB23Ba6RQb)%n;XZ^kgMLM_Ys*{5!M z>?d=MoLsQ&LZP1Z`*LcQJod;9V?ST8?Sd88S5fghk3IUza*eWGE#z>2n{WHYBR75+ zSg=bQGtxc0OU%`bw-Uv*;}j=ic{r1@=zfE2gNpbo{#v;IiY<|V$zek1(* ztzoTG&oR-WS3eB?ydxX$m#F6gk-(;(`KsocNPk)m_xCej^;>Qn$I>_^y7E@P@9_c; zlfdVVBjfwrKbn{tpN($%wcl6$Bf`h4sw*|$rjzk6dG7Kg<4gmd&%dg_yepQ@`6Ge5 z{XXBU@%a3BRW+btvq*le>iPXiHX8V|s!M0_{5^_F?*G8UeqZ2q53Yw8-rt;$-UwFM z$^PDK7r1$UE@-(TfV{`=zvDRGZ+r1a(Wd2nX0l(Yctd6JBoe1_tbOxS?HlUmRGJ-xQdODEsFzc2USbj+CgPLXpHEU%Bvd`R z=dh|qd|r0lWL0HQRn?w7YOOy(Hs1<{rHBS{#c;eWQK#Yq#F8=k(Mh zZ@z)ad->Mu-dOnua-Q^h5>MN+^2a!i@mjvmy0s>6+v%^#c}*9Bey6TDcmEx$$$06; zTDw(OJbB+8=g52vT3sOC_Ro_yuMFeDkN^*R?#=q^goQ$`ZRpIePy*AB% zZ^_jep~{zs^YyPyOy6^CE2$T~HqBmI@`JP;m0u+L!||*iFgq&mA@!BcYnalfvzRwN zK11r8=Qw+*WdZZliF2eso~!lWTX1Xo#!3aZ7xh}sUz+=a^c{EJgY#tkYjS^(zU|Jf zWd7;A#(&Mz6VuzXJPwq|Txmx>n_Z^d8 zx{K^@EL|V8Z$B_2_w90Psy@<+4!Q5k?fm^8Q}tKtkFUBrZ}ac3C4ABiHU9V~bMp4Z zs+09+sENiuDVi3&ZAbEc)N1?q+JBz5b;Se8^=Nf$UhO|$x9#*a5~mx2OrCDRb^AX% zNA^427-Y(H3uf(K{^R8SYjs6sTc5aL$I1us_@a?-u;;yY>)ba^CwXKDLH}xUozH@X-d7e~l~4E@4SM$7vk#X=&)iSeZ{YRCfB53nMY~qn$oidgezWmU?}T3*SpA45 zp@w25YeLOS?)x7v4xB3>{2YbXdj@vwdTyZlB57}5Gj;Jp_x<#_kE@UqJcLbcyXY*fW$X1EzEf3%?F+vSp5j$HFwPp!$WsG@Z!hS1!TT+ zT-U$96X(xeB=akrasAPqJHpQm#0y9~>p^Ri>yCS#8(4jj@SOGFHBD>oxaYZ#s|(2f z*rvaJ>zX&V;`tFCw&~ZW;sUb%=?iC%*`VC{^Z=f(%81h!UO#5To1Ui!Ru_=@6WQan!&RQHncty5oXy=BJ>tpjn)hlyFIzTW!7H@3D8oJ+39 zYMtHsL!7Tp<)_SEI(Ekktw-YId2x#KwX%OwN}4}T<#X@1%)jNvMXdv?FA}~M>+GfE z`FL`EQ|6KOtpo8_$^1$D=G^9wR}-Ew%aqqL$G-7GbBYhnrziU-yu>N&&?$JmE#zCo{S%}SY~Jb z%kGWMN2+@XU(1x&mf-ab?N2h^*gTNpjpuudQqnxcFZceFrPPGXdPJH zOZbzR@JjA~-u;$!x7=9r^g#Soyx-zf=j?U=^yZ?chuT}G&i?3!J6?D?HD1hWeJ#a5 zS)ch+U;F5m5&3BkZhiNk7I>cic=aQse)6Zz9_Jdl-?%>B9IlVpbq`Kiux7!XxW34J zaNUD1lXz(U1=Fu@Tk}Tvxq)+J{^D#`Vbjhx?|F{&uQIVh+v^{1!1*MPp?b#Wf$YZ( z4{kq<>zAA-Mip;fdVNOfypVdkso-_fD{t(2ZXm@&o_)RNl^we_4W#OcoG*o(H_~6p zgH!Q&#rdK0x^V!vukIyzXW{k7M#SR$Wv_oQp!|;)2ks@~#brx<|GBn`L#s0Quseie zvY_i<-Qw!cHkPspPblup*7d&=tT?pNz%TZALUD&h7ksD9)xUDR&Y19wi8~}5SM;xJ z)^)o*OiUIUipx5kk?be;qXg3%cbe-RJK8ED-sXdgJ-bj`&el10w7DX;H!@)nQIB#s|w|07aMPn&a zkQy({Ci$Jq45gd#{BAO*^;ZX75%)UXEvhFJFO+on`JKy~bRBrUHyCmMu3oW;PxdeB zf_$5+*V}Xu=i`NDUC>F|m&$4?wzj$Ux|>QDCgb{IXPc{Qxk0x$IUiln+EURgjv@WU z<{Im3teu6uVzX9*mZ|Z=i8_b1&DHBp_8+^!SYK@IEZiwJ&%=24V6;~1-Iy|4=isXD^g@Ufg*;2UEoYAjIFv?JS%m+UozbTunr?;|6XGpEj zf!9~rbP&g}xn%yhy^f4OYW~T*AM@6+?&N%egr8AI`p3K)+FZMrUGBf%+2-oKy-C+a z#>*!0&Q(eNaUA3QsBEfF@=oqg@A9T0p7nVDcTQ|BWqMtB{$zi9D-F6HGG9Z3Ca=@E zTQt@)ddxRfPn8C|-^`rS8A7YWbVZevO$81ZJI zo-1pq*lW%xW!)+>=im&XwZv3jEbDs9dizB-GBB-Pl;1*I5w}pFD`>m#d`xJIV93$&H`SsZXB2jE1j09wzRXs7;>F zrc(U*Vce0OJl`ub8XoY3P+XSk`_ng)^ZvCbgkokxT5-+_r%gPIo-1bUF586k68w2-^7$2oIPS)u zcai>9$hHX$C0!Rip+Qk!TXfnh+f0p)F8ul4L_Jr0+U2yFbXo?-+5B)!`kTbp2Krpi z0ztpO8`sn5*vtouPP+ z8uznqof;GM!J^Y%o6Xb^>`r(>5tdm}VIKOt#gO#mBk7w}R|07F#hgI8?pqvz~yLb#}iXhqw; z3Ep5g7p;P=w6dE-XQQ~mwF9uMi`BQ<{3RHnucsvzTWZTfgp@ObLP-`7Tt&(DwVMt6Rl z;*{3n_>ln{4}-0W!=A;5VA!`KZWBUktVXtr&F(fI3`e{Alo~0iU+G^R4)^x=$89L6 z;rP}yCJy&UQ6RD`@}7=re16pg1Y|m;6ZuRLq2GifQI^27-U)RfGqSz&)im7P# zylT~6rF2D|UK{@Yx7xpDSMSkUeYdvJDcjoc`=T1lHF1$Qxmy)k&f+V0pFgs9j1bT? z{CqR&^zE2%iCeT*$YPJv3Tlt+EUp?3Z#1$Nb6%jw*U%zEbZ*Sbn2V9!dk(*_%Xvg|YCW7ud#UWc7yW8=4Dk2jOm#yYt z2VOs{ya~2C6)DHu(+0vo8ixWdO_pUVs<;%d4>q1l$-#NLzCJDp0jSC4QdX#Eo+|}_F27USAV}?MVz}%#^I)lIgtr*k;myJ$r^N%`Sx=%;(+D^lGPmj-XCE&Zbi7f zQm!Qw$nxotOE?j^MQczN3a&fyR#{a(6cHy1CfN$*D*Mmo#sxt$@(*=g>e3_eOvJfd ziYN`F7a$juALFmaV)8{$TI1RDR#{biGzz+0iX;h5 zT`TeXTdO72-kd4Z;)}$s$dD}>9xqttV4W=CX&&J9P2h)Q@_o~aU<~AmHj(2xfiHsJ zAG=(#l*@A!?N~n-1PC=*l&lq+`TUV>0y1P2ba93Fd#NEye9(pY zP+Ya5L%`=9R&VL;?d`?q7ov(NN+^KCci{YEwX$fl1Yw6S5{?T9#8Tn7{DbMQUH#K7 zy?DOE-wzd06j317>5G6wDnA<^fZvORfj5H-L}ghNQIond9LC?nxTq`(A~I zVyG&jVC6X%>5pGY9t~3EA^COq{A1JQc3zaIigB=HuDDzdu3xizwLy&OHz7ziIsgx9mt-yC$hyKU)G8F(7fG9vOtiiGDE(Km~|E01zxW zt?Oer0F1waDjdI7zl(%ozF;`4|4+*!%QIMBgiDFnixKttTzyCIF_N#5d=Bz&@O=!% z&4cZ!MKgW)dtQ2b?FQRWdVB7`{8R0n)*oCZU&J;n!sy~nH?<2=Ud^8@uWPT3RT>-*r^DpfD00OU>3#hUzT2U~z@&Ww|$K&vP z>4zi7^FZ2s-TADKj1QL#M10H-D*n;Kd_hE7v;hW|3Tl1IRL;IBR&9%BLn~Zd-6F$@e9Z=I4GyU zWEy8WA7>90*ZdE)|H%H4>TkF|WzheG#DQ= z&U8M$?0hzIJP(d{z=3EV1ZRAG&-C_S<)gv)puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~ zpuzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{ z!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT z_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~ zpuzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{ z!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6x@@6HFljE+-*pa6ti z;;&a8*}3uvlNleZKd|w@<^wh#vh{$ihfE(}`T)}hm_ESt0j3WyeSql$OdnwS0MiGU zKEU(=rVlWEfawEFANXeL0|N*J6j_$!ad)pVg?+ypKpY2US<21He5q~jT^9`?#JOZy z%(boO+rqvbQ3c55&ZIsmKR>^sq-{%71x{yqQZFkhDe;u7UOs?$=#oW27T2PVaQN9; z{VrMcTCD(p7x34&LKPqd0OS&0Soz50f+`YTL&6Jj`2X+yDXqRLuJ0wO{xelF)|0gG zFbXKOG>V-|1c>CQl{3rpkSFAJ#c)^jtP#8am|%=e{S*p=;?Q0 zc$;3P)mpjxq>R5@{$Stk&(5!k3zqe!yzJ{dl{3acpAO@Qw^T&I<&M%{Zf;K+axi+T zrqsFfGKgh?UmJ+_d7Y)Dn@l)9%kBB?^Ni;q-c|dmQq!&BZOSa zt4`SwKEMsj4p}OgV@m2Ufq0WkepQrh1$=wb595e4xs*PqJig!n&R^nDP>G%r<)ZM5 z9H|dyg0PhMlAF!e73I z`6~k=f-$-BwfV4R$A6p);%3Cfl!;a4x3|v&NvPj$MuBMUGkN8A?Dh`K*>R_UPylGJ z6?j!wHEvHVtF7;T%h%LH+IO$O1;Fu-tCrQwx<^|S0den?;`^Ss*)sLuHJg!@xQ!jf9CaV`1z9C)4Bd+#UVNJrh~Ni z%p&LfNfm$2ZGH2Dl>Btfq>4XFt#1{Q{L2fcijyin5L@569_JsQzD(Z#*ol3@a|;`A ze(|Zxe!j2g#6I+^g$)qrKV@dgJ`~#jX~)s!_RzrdmmANYT>i{U%X;1# z_{BRHkZ?Ko7nzO!yYO^NUon2ZG-28_{-phnr+#^iq?g7|`93*W2#JsPrki+G-T01gE-P)58Ie97-e@fNt#}8+>pLCM)WnPgJeDYUUjy-Vf zkGOs$e)H)+o!5Eo(}PpT*MCgnTdfzZOH3MD_)PsTjPR_B_B$%ioA%uD zY2^9Vtf#84t1q7MtHd-T|Jt7f_xv#NJrS3>HO<(%rN{^85> zUTIiG@+-FTp7&Jm=5eFF(6>lWILDbilb3ooS6W{3>wXxYYB78EtnzNOS(;5GTxzVC ze6zB#(lY9Uq#q`nwnh_wv$DZ$c_~a}snNtQ^=_!PjM|3B*Hnuc?OEmBkdu*0KQ3f? zZ;7|rlkrkJ&fl43?l#vc&EwbZ;c)z-EOYmyIwh2wQAy-ti@E2;Ro+m}=-DP8)ITo^ zjopv0@`l9GFQvj8yK#JRF#cfpx;-GdNT2aywsp=#v8Gfy_oQC6U{gFToV15CE5uEn zU*0@kFmp*g5}ztGnx0tYZ5G!x8U4``GQC&hZMHSg&Vd{{Fa4-~yUcc4V1@9k@NMIh^~L z?6Bt`)ai?Wgv|ooF5O(w^|JXw-ZsEfn>!^%TgHyG}R+pIu?P?RLZb;H7T5EnTO zxI|G#ff%k&T;w23$?ZNr{G6Q4X|6n3k`dS4?pvfsU8-0v;PrL&>Z8Bc^>`+y8PDgs z@%V|0h}1{6Z~?r&;QA{o3Z=LLeCQcY?w2N%^anN5cL6eaPiH zrGHlfVV@5DVLdJinx@H;-O8B=KbYS^KDYGtwxF1PuUupsj4$P&fUC~wkOk!7aD8k% z?9yb}o`p=EK7XWE-(9!SVYia_^S6ZK0;j495NsTDb@=qx69NY`1&AWAx%}5W0~DwL z86@>9{i|2+iuCu#5vM8&5Ck5?+QA)pafI+OA|P<8VruEY>nTuV00g8e9ZA0_ZU(9X zfFJA(%me z1O*6B7vuPe;rP)v{17~)2LUIxg#oDEWCs9DHu6`2u-T5|kHJb7hEh)$Z1%OZ2AJ~lZ8-D(8ig12?Pywg(a{&k^^+jP_r^@exAich5?sgyy z^AiKV55shR;2SPo;)nSINxw$;t;K|?N(5lOk*d@JK@fne6D+{|r`ku0b^u=_fe>k5 zD-X4c^azwJoEDWuQA7c)!>7X;3gK4;!b5g^9?q1a11JR<_~$u8vOs?QyPui+=F}gO z1{*chenq4`pBU`_;%0<{zB%tq3VEO>l2bey<^Z}+1FnxgO156)a`T)}hm_EStfiJHQ zL={k5z8KrH<>xH)fAn@#0X5}wv7D3b_rLw}074p2oU(2Fz245SFBAI<0E$zR#%0d# z2>UKh_Xpr9`KTAmPG?fD@_0Oc|F0w1ejVEvV*B-L>p@9^T%IKXl@EVfMl!9yo@uROmB+ouOU zcC58s|3Kf)56=hX*uK2(nRC1Wr8zKX2VdwCk^7KU_@o%rKC(L#V0-zfa^DZjXU=@x zu;1r2Rle~?XZf#QBmM!f+*eyyH0|O;L>9P!8m+m!Xv*~aaQp$pL6WZd3^(sy;@wmdSsZP(+`-wfVndh|V@$%AT zkIy0Y@Ccb=%8frPpZUydIQ}mY;$qQ&rqn-s*c3iIsvPkqnD=O&cSTvXI%fxu+b4L; zUfpwfpeLz+JA<^>$BuP}FCVurdDpiyZqMLNv12CpvRh`}{kJ(g?u=(Hd#J~<>-U!* zY`Bp;FLTM+Axos!e=xDikZT{T_+Z_y=e@H0DZ`#TtJAW-{yUYs|4>58n|ZY@xbOPM zzVk}`MI^pp>By*BIH~NpKm3{4J7->TUspq6XzI($+KIn}j4SSQH;lhy(#!9zAn`L6 zZ{!?*yWzZ-kKbUV7b2q?PXFng$cd*&{(?}rX7q4@^*$bpnRd7Zne`N!r*_P=ZR7qEPgQ#QuG%&=lOG)->mgUPJ7+i!DtR zhCG|dpSPzUw68ahu(vm4hhe`T8ZXQu_WNnFDXE)gyeL|&#Qy&R!~VZO2vt0R{ROOT z!u|o`1wx}C8}|O`vJq}+H0>GoFOYE9LZ-Sp@9AAwJ34*z=z1-8gQ;Y!2JA2l|Np|K1PT!+se8I&Eo#VQp0Kofbdw*>IKWuOR0I~NU zX^;Q+?Ei86?}|l{L4N>W!u~&M`S0!ji9dmn_W#5F49ZD)B{P5u5P<+V03V3x@livv zV!B?Z{3F1(U3y&LfGPuEMJkwr?f=u{$P3%j?EQ&91~}-i;oH+!uZ~3e`x6Kee-2hb z(~4h@fR;d1|DI?Q@Z5s^OIQqhZ~z6v9(<(z|Iqn3X8%tx#77EeuFUNJG0xofF~G`4 zgYiLw@j-*}L4)x@gYiLw@j-*}L4)x@gYiLw@j-*}L4)x@gYiLw@j-*}L4)x@gYiLw z@j-*}L4)x@tq3VEO>l2bey<^Z}+1FnxgO156)a`T)}h zm_ESt0j3WyeSql$OdnwS0MiGUKEU(=rVlWEfawEFA7J_b(+8M7!1Mv84={az=>tq3 zVEO>l2bey<^Z}+1eDm~yFY7OW#izmepuzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{ z!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT z_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~ zpuzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6xT_@Ke~puzZ{!T6vtk`Ly;hxzYe z{(G4J9_GJ?`R`%=d%k)8d)WHT)^E0cv-O*;-)#M6>o;4!nLfbu0j3WyeSql$OdnwS z0MiGUKEU*W|4tu>DnKdsB=s@b`T6z!{-aR^IGr<-`lS4llI8Uu9UVX@02Eo0#%-wV z2>X6V;?KnKv$IR`n^#8_AeR^6`1$!IB}aEf6&chBN&QN{-|z8>*|qvzin`b;0swvi z00`IWcgd>PY6Spv;4f2snoB;VS9sdO;V=%rLeTq9BWFQF}OiII0e|2jNpS2N1_W zSr&71*6(Qx`&vnRIB|PSEAe=Gb&}p=w5P|j<@u-zlya}p-X4E=*Xi!#%g@=L5-txLE7)>wJqZ-UyRAjGGbXid9_hT~YXoDG7Cn zM*&cGXueYO?8_z`E+7u(#qOIqtz-fKq$oIr6mam85()TwOI^o=`x-Nq#Ar zUQ(V6t4XWvaypmft%FIZ z$1}1}toD$zwBEiRKR=!!qL_N9ynMxEE8*K>Sqoz>ms0b~yD^_LTs0`rA~qkI`q;sp z&t-x#t;XtZ&CNJ*`GY;W{%u&M)r#(?bF0zST93Z++Zlo&WooSpre1ZYYwqzmJ0`@f z)*SQxvcnno_nv^5PtlTNE-X8oac{33=PzaDWOLOQgv|HPok-d*@NDtxO|4ZE%?_5y-P{?Gv!e@{PcsfC*t}^maMY^1s8`tzNh+K(q2~K z-e5-A;g8qNA)e}D7dJ9Kj6f#amViI!~izPaaQbMIq@Y|TOMpWbzH-OF~| zez?9b?tSr@W9#OfB;^@fIJ&!e_6;Y0I_FWGf83UJc2mRSkDR>cl}RN1*lC$aIQz2q zf8M*4)MxyJhf(6%ijN<9^-)s3TwCtmKX`69eb1pMh%8G#U;C1M>0dW3aFF~bDYm9j zPvn30#H)`JehNI}X8)lv$Gp8}GU2b-`_QN-Z?$Ab4o)WF&iqN4qn@2M_7VSfl79N7 zkL;`W|4nLNu$eGMestz5XiGW2K1_TM#- zaIdp%Iu8pSW&su+w8H-F4FxlVb3v#-do~r z_GSo=`XV49=a@Z{mwKC(jJ;19a%08hrAo7VZRHEPAI9Y@vx%=$LgUx&0ZAf&n&fYhNVoHza55;f(mH@N{`TiEm1-#`!mPnXxSFF{R>DvK^)8pr-@*k2@<*{dlaDJh|@}|N=sqlou)@b6FDk0BW zz5~~{z|v^ivr1{sS>MDZpVZ?HQvdR1lE1z^USMf55&qZDhCaWZaExm-@i!|QDlIRC zaruiaYbxGTl?}G_qd4CpJy9f?QRPza2CrrIJe+^Ah4;LtdN+<6?S&+KoY_-(vvAPG7$|{Ct0Z)EyPET;*B4de^Sc$;qg@Mf3_ulHaafANI#>JapBGlHCG> z?MZ(`akq%dVEBRl{)8w%7!#%3ERE|(`Xk$HoaSgjCK45649WVVx-D3a|qD{E?CMrTOST zI?Ue>SMS>O(J-H-2A>I=CE#k6WxI$>_vmwAdV3(uUqw`|u@3Tk^ynA0XANoZ`ucFV zzrQ6A)xRg&1mJsJhyJjh5ICSIKooh+hAq zVGu_gP-OtDNL4!j(uvnopvV9SNL4zLi%fAdP!#|K0RR_#!=!IRLvjq<)Cm$eKOD{h zms)xuNFaVNJ;?Gw5Jvzg0003175E^SL4FDf5Ox$-0RT?P>Z!W`@ag&ko9zIA#BluR zCw>T?(u05#+rj`;Z^Gdt<&44OQHrB#(-(v%00)2!06-vW@uxrkH+lH^!{zyn9m^xj zn_i!Q4+6;ypaMi701m(hB09xS7o_DkT)M;$@#O+Zzee$WHQ{@xJ=(z?FulE+lKw~n zp~3dlieHa_xWGYG5rK^hDD6H|n?(hJ3IqU!%?MLr8sejXP&0I1Oc6-PkemXOX`DHH zK+<5N28*W@k@mcPxV|?2Mxvt4aNrz#s>|?2Mxvt4aNrz#s>|? z2Mxvt4aNrz#s>|?2Mxvt4aNrz#s>|?2Mxvt4aNrz#s`g&e0NVK*q7($mz1`JiM_v=)K}Km*L(Z`()Q{L z{S9UgLRl1YbDDcP!VA;w|6jmgrilG}4e z@TU9;oK6cT{sud>2*5TXuOj{taQzF1?f3KZODcX6 zPM1BN{k;Q-(||0?xjELC+QWyn;r7bU_tpO%w_nP>KRe&!+jX=|5fN~r&{MX8f~pli zUJzA4ZTVts|DTudum3Q4yBP(PWV#A&d*#2KYC=iXkJN2sOiUZg_9Ls8JcY!Yy zTl?;u9TWCupn#%vpX0q#5rUWfokh`qExWxK?i*s;(0|E(;Ijg_*2nZ*q59a4A{N*N+ zpBX_7yyh&rJ$m z{wm_HftxyK`fZzglK*ioz_KT2`pfZ*6J{WmTz2u|GE ztX7|c^Ov%m(>&L&eR2N5>sFESWG*=ySt31E2bZ5B{A3k9Z7STdW7aE)P7-d-dV2r9 zrg`q&4W-1MJfqfDk+HsQ`oZNN5xz2N$CxsH{Mgjjmj4G%AJ3@W)Fs@ox!~aPACUI9 z*e?p~z5VV2ebW5+-J{!K=HS7mXD!WHMecI^tIy>q9y zy|=H-J8)eaP9GQeDYKhz9h=|z{x67}am78Zy@f0C4qp2wqy2@BHG8i;uke|M5`(`9 zQv%+GTMG^({zU382veF9x1LwHqv2*F{Z(RDqWX^FgY_S#%70N;^X-jOUvBu&D4(TM zsJgAV>{p4Kjr!O--TQ9;*|%Ov{D9El-G)72j|&AK#}c!uPcHRb7G_1c%`A55$w`DHFSJ7kF*_8)Bc znAAVVIThWo_VvpTHcTbyr&~sO{;;uTv(35>gn^!L=9)cgZeF~(dfn{r`6B?!2+Q6K zFOf?p5P9R=b)%ZFe}K{~WV)bE**Lzrk=W-uvrzZsI%UK7<`*Hh*EeME24YX|hhHQI zC)atK2g9dYnu2>&Z*$Iip8Evq3FkNzn!L28xw3i9M1KUti-pFDCsx%oi_jRr-VY2FI(K~X&!YEuK$SgB#MmkhANw1I?EpcWqU;H%Rri+ zm&-+WR^4=Du>M2!{RjBzo{ag+ApQzwH06tzme@9Va@C$BE>Bu}1h7AaQpsqa>UFat zL>_8Sqr66Y*ABLK+{OoDn&`A=nNWvepB{*5vTV;n!SP{a1(RzBd;WJj*m1E=`nVE3Clw{(G%B zzUYvxfr|D;5ilbLPyh(sz&kv3EO||EpdTXt|yKbYyZUteV4*d^=2Lw)w%Az2mfZFEM zM`QbbRR)3;f!KWguIn7?g3iJz;Gtprb_Hw; zCn@{(|H}Sf27-V<3=sSOA^!n@TL?iPRKO|yTmZsJeNkA~hwbejAol;mvPR@|`~Nro z0sH@v{s2bG>GuDHl>PsA&t9S)d4$nej=1Nc$$GVFgLQ;)mMP)seg=B3U>s zCX2F&0)e)05{|V0KWFf`m{Lsa#WROw2l+Mf{1}sIoH=}avHkxOhW)<^M8n_1nNwZ^ ztUNRrA2b*rG#DQ=7#}nkA2b*rG#DQ=7#}nkA2b*rG#DQ=7#}nkA2b*rG#DQ=7#}nk zA2b*rG#DQ=7#}nkA2det0Yt!j0I)OA>k`hnFJHH-4 zJaoyTD2r>&?cwkge8$%+CG{2c7}F|7o{6oIKfMSk_{44XCVSN;`~UQOns(-P8(!^5 zd2LDk3O`0k_5k8F<4&!0s52bCnw*&}H|kqbvh6@wz%|K}KmF3@9=7%EUU@DkbGr&m zIa7OgKFs&+CU;;>E0McS@``xg}5^Zjgc1`zR%S<10P4);6nk~4k?P4?8f{^)QYJ3;b8 zXi|mRYAUE)V%$k&_L{Z63vMdfGxsubrjWNxjJ0?|r9WNjC*|QSb_g4Ps(J9H9uTOi=cFK;L{nLov6xUd{DsLXfQr#oauc0PwQ*!d2GMU_S}-E&RF%Q-{#q;<`99#EUB89t^X1z+SJHQc&r82U zo7e=W-$Cy8Ps|}Uw5dDF^Yef8A+`Un*#8;c5047fzgGU-xW4D~^Ff(Q&S)h2<8ghu zem)@k=gBuD?(tt^xgdEyka*!yHE&1T;>S+DW!Us_tu9xfw5s;qCyo6*_rGGmZU4@~ z+V_n8IsbE2vENd<>FUF&@SkceACI0o_sF}c@bMZraf5T+n}>}3KlhNuC?e%yFJFbM^_JW6>3&(9*yAC}EnP83-JUCZ*z8>X4aem^1G zh`g-KkmGg>*G2aC#`}V}-2%IML`Q=y7{vQ^DWAL#a4xeV;|}0FWa{=f%NvBoSs=Mc zkISj_gYPS3YmhtXbgW3d&zRxKwpzxB_e_)?+`IF+Oz+73aNJ_p*oXkYe*dxaNACZJ z@AL!!@2~&s{r^K`|3A2&M*u{l5P+<~{eQ{^;~(GuZzgv-&M?$V1%L;LdCm-M>jClp ze>1s*G`+mW{(ty=MhkhLk=p-T0NekwJ221q{mGfWe`4jM!T6wYrt|U7*4J2mY=6)8 z_iTU9_V>)E+P|YuHMah-^^dK8Z2e>FA6x&}`p0~XpXvI*nf`u)m5&DFg9hV+2IGSU z_qf|ZYbPhsCv*!L9nJ>_5X zJ%ya_pJ|-$&(HbII^qwY2;XUe@lG3ko<46{+MQP9POUWidkbFK{?+q!+VfiQ^G4bq z5c`B7e+3gkR2{yvEPvWhwp0ENJO`5TjNB0H{@w9AHupSC?${AfX2AXK((9J&Zzbp5 z1!U#8cb8s%)xK78US8lgXvdCUS+#JVOv26Mf-v@6c;+VMaO!;i=veK^M@#SAm%7sm zS-WZvT{*R~ss*Q)cuSV1ym)`nopa`s^YdoetjTNE6+N`O2HUS+5_`%X+k7K``@^92 zNb;SN@r)_WF{Lt4`g3;%e**#Fz<^YT)@z;$E$ z`>YVY(ui5iyFg|E7K4>sLX#A`B_*d&|EPu9tXZv@ye`ovmf6e~= ztIn^KJ$%WpA0GDqXEAq#!_U(8^Q#x8?Z3b9&hC->aqNH3C5wVA3TEsjaAf!w$VdSI zxr7&19@$x3J@R=Y<-t3!%SteO*OKx&llr85jGyeM{THlxKHc9zcK-7p#?6=VaN_tQ zp;xbXhwT3mdcvJQ=08{7lDc!4w@iw~%)eRO)^H`+ZzE)PxBmI6dCQhxpOPPib;swr zuKq(q%AS8BgeQNhv@9q7_~PbD6O66hs{HoVMR@-$@%&bB?C?)LEz5~N!8k%&p>}Ad zYsqqwK910%u=V&{*Rti;;r+X0;U87P=EsNS^dBjKlz54aoU z@)cIpNcb38-Vy%)q$vUye9@`gA~u>aA0zGm$^JRzFOUBR_W#57_`f0c{uaX?e`vp+ zRPg#Qs6eurv1T`N|36YT-WQmx_*fPHrunKmBuoF*_W0RyKu`jcyS)CIoaY{&dY?xTVV>Be%n}+M-}k>B$<9~# z{D3`BIi{#;Q~84G0RjE&dwr`cdD9MW2OxRzfPl`uRL-80R~j$mK=R^ju9nX~UKm*R zKvC7EnT?labG3r|__VF{=M+?JY6JIO0{TkToI5@IE)xKM+HFh7BIxRd^5R0Z`%gOl zCc~?05C}difW|i&9;izJsIjPkOD=-(JfLbOAlCq3B0ir-$}$h4L-AjSiQF7DX5yrp zLe+h#9svnCM~zM7WM2`ectdACh`;VRfQ{d;Hh#YZrptXp))mHV<+Zo=c& zeZtvQeWa*r(^Ypp;!%XCP29U`uF&|WtNgFG4hWoWj*=J2n{hB~BIBRSu9ma!&nus| z&5+T(-rBtT^JX5HjOT}JP67EnQeE8 z^5Q}ebf?BY2+`wzcswtH@$&%COhB9qfSY`iKF^pB<^oVb=7U^gzL;xK6^@MmELD3K zN^=WU_a}J#=VpN}JpQMs6)N*V&c^@OJpS18zux(e@&EPm|8?sh?D;epA2b*rH2&Fq zu=)4voqw}|3~GC_dW6^RJoi`g%Brxw?mkhpm4D4qwQ1%}N8*UjaLKhlmc?0TwS|*# zKtSs}(W#NV(pmX~`u?nzW1I3yXHSG=KfsUms@jsg8FL>a?*sBxWt-K89xAynh zvWn!8qpR{Y-=VTguB%Sh#}Pi0naiuu^!dvad)rZDafYfBJa-vhxEQ|6lj`S1h&M)ZWgL@cV`@+h19H8ef$UoWWO} z0|pQ$S>>92xjDO!wTE|>4IqB=9J%jlS^Vz#o#F7?1Bf3}EpPmrEPCXQaJXy$aSvq3 z&MVK$`R(zJ@cxSvl2whmp`c6vvGD5vj70zlK;eKgf58F(Kti$tZ3z@-PEf(0A^^+? z0>neq429xZNB#-lb-#N3(I$)X>eh3{c^f*7`rqr7Yp%!>U&!wy_2oy;mTL<0#OEip z8TA*;^2TZBdwBoF!}Xc8@)1&B3y8U)I5SsOK?Hz=%|hy5K0%EVKmInWss^A? zo)28Vy$pWkKJZoR|4mQ-RmadbJ^fd0zX8OJLh{B1=jA+iw8QBC&2D*Bb)L9md`CE3 zI)M0lJ@To7Jn{MQss8^HLEd;QH>cw5PBQ*2DyV>hCl_educ!KZ0E*?ZsvvxC1@8ZD zNcz8uWyz|lOQ0}Q2HG2EK>r^=+-8dm9yu?k>JM$s zpDjOCkS9(#uicpQ_*wF+2W2rb7S}mptU+IO3=SaPTp_;-^Ta2| zwS~jh0mN^tkmZB2_|zC&pY-w{#`U*aKommYkbu%_)c>B@vOFzMEIqHoNPlmoTw}=- zXN(`@PvIbNjsxISioa;yaC#8{V29E~1U3k6H5393Vf{8JiqPpCrPRFe;Sb;`edIVD zS?94F2i#o#5+PKaQTtpb@F}7RiM`O>{A_fw-w*LKHge*s=vjTobiMnXq^|2~6#yGS zSBCuQSxL(T0BY}2fC{Vt$N2b^uH!V(v#`z)J?m3l*JZP6S_MBf^_@1t)6;Vk0I5gq zT`H%*QZS(F`e(YXE1U`+0!j6hZeZ{kgWU*=U)E&S9p82|qQg2n*< literal 33554792 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∾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 z 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 z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u4LZ&c{2&2mJqP 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 z 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 z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7CMW0R|XgfB^;=V1NMz-o$|X|2E^yvvFpC0R|XgfB^;= zV1NMz7#L|l{^xI`Kg;Hi0R|XgfB^;=V1NMz7`QV~%jet8H(jUNcL$EyHV&K%7+`<_ z1{h#~0R|XgfB^)_OD^YJe+G7V1NMz7+`<_1{h#~f%O}x=ErsS z@15_ro1ZnO{_p=+$KNr!{$tcWvX2;GfB^;=V1NMz7+~Nv3{>-Dt$+V~-uLtU^8afX zG!N%81{h#~0R|XgfB^;=V4%N&T7Iv-zg^G&?f2hPKF{sx{y|#)SGU`P>G3`tJO0)E zSMR^}V?6DjwXc8Y^-KRhG`06$Kl490-+0Uf0}L?000Sp);NHrj*|fv+LpG>+LtqshaQ8{8M|*_aVPue|tNfZZ_XNnl{_-n$zKU?H}*Y zJJsK1R2n`udL^Kg(B#Fu(u< z3^2d|0}MPZ?l<0R|Xg zfB^>H(m<+T&$~V4pY^w={F(A)yZ>hU^TAX5^ZEOnzVvf@^Fwpm-2Bj<4z~Zf_cP@G z^FDv{zdzD@{ND0fV_9k&1{h#~0R|XgARFji|6TU{*Prj(`90;)!~A;qIOWsB*FSw+ z%jZkE{r>s)-`_T;l;0=q+xNeC_Vjdn@9u}Bao@M6@vXPFef0Ky`uX>=&wus(=Ng`` z;l{`qF~9%=3^2gJ)PVZ4UV|==VekBt^4mTKj{3QjUmu?DoZlz;d&KYC_rIE*Za)0_ z<8=MuSIz1EKE&cUwLc$`zQ2&#ldt~1$KGG4ZeP!Hi+S(PyVGl#-;Db z4J>EZbEq$?_51q!w?99ha{ogPU&@gwpD*>>KcD)y+xOp-U;bJAe0{h-klwRT`F-EM z`Q+EL)4qM_=W_1fkK2Bn=YOVrpW4@-|J(jYuYdg<`qSG@X*%!od%nJ@0gMp?3^2d| z0}L?m*ud!euy1|aKfkB^QGNe1&A;8A^Zk5oeCW5&nM*&5{nO{`Q+qMLzgE6q%r0}H`m_`oznV0K36}z zc3o}0Zch3BL;L)j{(oqmfA8zd(=kb7_P9N*Uv>WaKOS%6@pwFvziPYjemvgB!+1;# zoc#YkpKOcYPtbPt{9fyy>bumQ%%%D?)xW*ld;kCU^#1!aAHC%Fhnzm2!*=tW%Uuu8 zeSf=YPWv2q{Lkro_18DweViU;&S_>1`MuSiviq)mpUao>_VxSUG^fpn-!4uc`+oA< z+t#%C^ba4W>ra0FaoRsV`ezuQ{rFCQJ{sTYSkL_)_Um+C?tXvz`gwN`F57O>=MSds z^?L<#_Y$i2=X&@5s`0-wcWt%hr~IDgpZfQ2uU_-h^|LyE{Zox_+3m?+wVl7q_GSOu z{|v0xK=u6Iw|}btmjAE&zHY76r+N9c`KNqd%^bV=KV+e&St(`yR^Pj}cD|bCwZkm; zG0%m3Ihz@$IdZc6W9NTNZr{IVbMwpD@6RuNum14)UH)In{vV%jF4$K`$tpUpNIQhozWKll4SM=brE>oa|BDW5z%|B%n;a?dnB&;NdR&tQA=?d&vt-*@i!!%R2* zZ1_>Xhre0>Bv0#Gr+Wqq{rC4R=8lQE=jM-%-Ldubp4w|Zw{%{3t>@GEE1!SoKGX1= z=W6#)*M9%^^zToo%W8F5s*gsGZ(6@~s{O|LB zzkdHd`%*sLXZ6F+*DvMq7eD{+&)2{B=L_@uzF#Z5@7k^#)8_NP-flksTXQ-bzr)A- zabEhl-%m?Fm-gTE`K$N8Y)n7gUNxpAm;3y`)PDc`g8%)!uBG<<^ZVB={d~zWJ?&FH zKUMpu`v-CU+i#lRfm;9dt$qC&pa0wSgY`2$3^2gJC<7^5k6JIwJ%wXp{q@m9mQJE>tQH4lGZZ0@u4(^~ySzc1vEW1rvUock=ZkkOmZ&n$nM>D$@tm$%m+ zcHe<-P3`|bcbGSyJYM+z`{vW%eVnd7{O3!YtNi`TUp8kA2(o^{;yUY3KXA{J#B9p+>QeYH0=-V1R*3GcdY7$jh(RNA3R8 z&#KS;p7MLDKXd=i`MmMo`>t*JUi;kdFU}1w$?^w%cJH^ROtsHT>2=4pAHGk#l;0no zzx%s&OF48llTY50zy9#YkJILpKg~|ppZ@8nX({KwEpZmH2eECb3Y#}wC^>{y>9#IZ=RY<_naQJ zKfQM~{k*~aXI6f3|NP-G_uR*E{>A$T>HL-3tKWZE{_N7-vfJ}d_jl{-&zUwq`R9{- zzkBXs`q%BIG2Q&=PtTeT?-Oixe}Aws9lrkQN;52Ryq+Fm{WtNH)&x$OIAKi<6mwmpUXUcJ9?v-z$$Rj*(9 z8eYAArhMOf{%QH^Zhy^Mv(LQR|KGCDG9NNX_S@dSz1Oez{OiYmI{w<@R~`S9`ltFmwdZ_4%^J`DeVYGo zKK%O0)XF{|+dlmMb~W#Z9e`}KG4-*3PCuYXVNJiqzkfA6R5kNU$v*}FaCNz&5hOE7*C&Dx`%TA{O5nU-A{A(YvznRGS#|wbVS?k-a_;K z!h!$&cVZ5M*$7cLoM`ch{i7BS?Znh#-Lg2{9nJL+}tcNFYJy$dLQ* z^!HTve!FYcs#Vo;4nuOkAKs^G)spVryL)xLwWPgu68`&1v=_}cbJjn&`yb4;f3SS{ zi|4-$d#nAQM%U}(-Cth5cYH73`~SMu_uKcLpKka67ybIp{q?o4pZEWC&G)_!-nsqd z{rjBbf6?=Y{Z&lN{rP*(zn5>{-~RdA?R)dvV}C-Zg|In$A z{8T%hf7yBcyO=YNwC6V?Kkc{I(>Pn&7IXEn z1zVOVIiay<9p!Nz+FQ6y4mr+_H0I4iN+XT|MHXk+l)Hn!4ECA7Kp9zRdz zgSUJ9yuZrsIR>ll;iA9V9wo+B+apJATXoM27_7F}2>WD%)%J<57hOLd_ZTkR)&&2r zG+q0zdHewLG$7OWR_Z&39p@j2cvqY*zT<%JIgkvV!+9H&9A4_wHw0z1Z%HKTqhFzX z=$b@7)K>Df4w~-uzjL0S=$~PC`Mrn_%kp^tq-8ojP49N^{p;l~|M5%Pe_8(L*VRA! z@2>ChQ!n55Z@=i*Z*K43?$>W_&+k9~|FiEeZ%qEb{rCU(|32^eu6> z``^!>WBx7tBbiR|^4YS(kArOL$I5Sy@$vB4&^4c%+fx2}Y1e%IgpG3y=*cF4cZ|JnuX1*c$ER#5{to+K zmEBCF`2Aqj#W^@FZg1Is^*EsO? zHCkU0#0(Sh1K4?A)kgRFV=ZRDZC-u!`$_4%pCq4`X|KMQ&%cYRzpK6Xv;JLGw407Q zpxt!*K|i0cyyu^I`Q801&%d+tyPu!u-~DIjd;GLNTx6mD z^1bmpul|33{@gx4eP?}*e}B#G`T56p?%)6TeDC_s?eF*A4_c|U-xIV#T9kVzC*+_CGSL9@^bKQPnP5B%G!6%*;D+yvKQm;G!9>93|^Lz zoPMxqNdS$jlda(EI%nrRez3-V5&CQFr{I9Bzs3RCV9f&=4$69~>=Gb#UFH8!rK{Kh zVhEO`|24cPs`w3$9Ux|ad#k)O5dhxh*D-!f6lI`1d7juVq;lHWCs?#B;2za)$o z*uGBlvL1ixdOWXvFW)=9SHEk%cYH73JHA){KR@5Qzq{po^JlwW|E~4B{(s)_|J(CD z{@wNWd;iZDy?yWeyx%wX`Q4uHuJ2Fp{oTYDP|FJcM2@G(e3|C{kE*l1tlQ{(uPa@5 z=E0BVzk7aa>wLk#qx5L~Z#?gJv<}|j=9K60bDr;W^_Xjbr=(=a)kCf`Sh2>qdxC#q zEIs6E@m}=c>7`_A*h#N=Vx^}zrnD1>?-74@*03WVW9nQESJ}ga}z$J+ftHmtkw?!Tt_y%o0);KvohXG%VAsrUirEu``*d;HAveuDQOT*r4UQt^Y* z?)86eez-3qpPNue_xf%0|4He+KU(aMz~7Ph{z*!z@63sHN;_|BPV}y^2H`(MX{UWT zpJKMtUHz}+&Cfjl*vs$gAJ29B{`qf8CW{&Ozj?LX4>dGPN4xo+P*ezYFB z+4^Mf{`B+Z@nqUwAMLk4xAnVUU-^5(wAcRf&hL8vdiA~cmz(dsALlyXdH=#M@%^9_ z&$joEYTxeYc(gv%g!fIac>nl%-xVvy)iEBH^kb9jhDYm(o%!?FyDTLuKVBO<+$!Mh zk~K9(Nq7za(s6o0SmF=ywTDaF6Q(^C1RosS1gpt`W5P8{Agjhb+F-L`U3;KNHRL z?UK)?zTP2x#)}x89b-tv{>aW_1)A>mf9MC3Qr}-8H9sNQ4=3Ub=)Y6ao8Mr+d*Zzr zn!fKa?;$0dwkONCiMjJSbMBukXaC3Zk39eIi=OZK=Uva=yMEsBy?pQdy4H8wckj>j zqBWv&&8VGT=ZpP}IsC!PcdxG(e;Kajw(&(Sv%G(wcl^1|_r|Zge&5W0K9}$F#owix zZubp--y+}lvz3NF;qEKezK!eqCKV#<93e`=Y5mz|wY)pAQynVg%-fr{rg1?1h$T|NT@p3u79C1U&-?)7_6VRg2<^e+3;0jD>@8YS0(%y6$>Rl@9>$XFZylg4zvruU zBJtb=JVTKBvu3Y{Mw)*JQ z`iau+&A&>-6)Jl;e?i6*y!W3re<9f4!C7B{_jF3S?{7DLZ^!rjbr$pu*)+QPZ&urs z*R_4Oen);Z*Y!RBdwCzt`0c-{(DFUF&<#kC&f%FT?J>pV|KHn(q1sj{lJI zPoy7{PKWEyE5E3)mwr}a9jj;W>IX`{Ql|AW^UCMtV`F;RaJ)_W&*0}I+i-M@AEu5eq`2L=ZF&hb&rgIad<9= z>mE~Luupe>zy5J0D39m&H#|P;Z+K#iwGYUKYZVx*xqk)hE5K|~tN>*U zsl^WXz0zNO&m<@|P~Kk&J-T1T{ma*asQPNVWfFYN0@s7NE~9xbJfC#fA%`pPWJ1OT zWIO=*(vCFEAF!bJiBdKCd+mGq-t~9?U+@3-@}2+Rt?#tIy!pTT`@G-p zb(lP*FSjto%;g19)53K`WTjff^S<}(&OjD1zVX& z`*rrXQQdke|FrUH!|##F@vyFGYp=38dH7CyN@^S)V~$wg&c`E3$2cWPm9vcYjxXe% z*}wq!P>Mf!cA6t^A?A1S9`i|VPi57;>Z<+g!u{&_-gVH6_3y*A4pzarKIwzC4+#)( zd2KGe;P>G5ki_W+>m6m_m~4>1aQ$OTo({e)CFk^m4UUg6w&966IJX~caAJjxPRaso zcuK}0f1gbAxJRKMob?#w^`$hAxA6E(5tG6HR>;&k3AwJKNbj5V1Z3*NKg*hq^$#+S?@#V3L_XHI;+X@0zp z!kNG4j6bx=_k5-xzowrySLNX6k!*7e@IyJy1$&z||8Ldt;!lnrAM78sNyg)Kq{q)g zXd9c@*aYr>9Ov_vIDSh0-?~?vd*T0Lz8BweuF2TM`X*4H_mhE6&)E3JDvD=uqvXAt zx~D^X{7i?>xYNG#e)al?RDH}#oev4lGMZ21USFIUAOHY@jJz}^fb zQ~nF=a=byNQ7$F5F^$lFbNsWp&R6z;Xkvr^o04ct=EMGfUV8tp_y0Kc;lBs>r`XfU zN~3;C@^-Z{As6wu%3S0x=jUrVAK&A@%lrH~AHU=C;T=CUzg)BHW6|M0Y}T0lyz{c+LelSAfpP%sJN}UE?FLfzN}}5YHK|ai9szm#=tJ z@eR1%S_kH+_*J!!JZv{$SIyR17yeJBR%J@;c>n6lk78 ziKDY2gFW}*sB)eJ=1UCLJv<3FmaxuY!Q2Cyhd}c=%6LNbtpl19a!?M$4=l-_kxH-T zqVTvvsk`%Cs`&@}xhI|a18Kv21W4YOAZEyA(Elj0M#LW=t9U}uk9mD1pQ}W=+aK4M zpTNs_?+02xA!86>diyB$z~5os`;W&LEM1E&mOwKDDCW@(;}) zRn0`WqZufvsuRbQ*u}!qIyRgyZi0jZbw@@po``Ez5=wjKn&WOAo$Pt|2onU zSKu+5w0@L`|LCy<_nzkWd@w&D{5E2dS3PTZez?SQnU>Xh2dys{TQiO?AikGN+OLvg z5J4Yf#}p7}B#AgeN|ycLqV!y)RDVkLI9^I~7AkoCyWBrPre*vA>ALSFFTT)Qd3zK5 z{mI{}mA*~ZH=)mSK-}H)58CAO`FqkYk!dgf0KX?Ceg7+tPk43U+mYn42u3*9?D=0T;TSKm8luYTA3uE+Q4d;hB{vV#%J})3 zhX!+*^*Qh{=a6IQJWbq%kDcY&% zSF(YD`1gnF1$rBwUSX3{GYR=0@c)N&zSjW$Tax&{>q@@QVWqP;(FVtc-#L)qJz#0R z<|A6~z~+qPQzCDQj2bp){l9#i{d-_j<}5U^A=Z$3kIB7NqBQ@0sj{adY+R15ymJXRzL5AX<=9F) z%hPC_><>fdih%WoL6c2+(zw_kF0_6cv(&N z&dwWaj={6QpNrYj`zvhkpzHHt*Z1NY z-t#$JxUC7VeeIr@O`H4wJN(ki_s-R;-!++tXy8K&cnx1<9&X#@bOS_bae2c{Q)wn(7w^VkyuDoH|^REQ|=G>cf_;FHV96a;| zi@n^N*fjq#u({*r;r{P(jk>n~JNL0IJ@>~We?4BK4qrdu+Bxq&O0iYnVb9A5z9G}J z7rf-?oXe=3d&I+OZa3z?2a@d>&)2W3W9bfm=j+!c_oKArhjF?ZKPRqEeADBkJioW; znK~~AZ+G~)K0Y3Ea*d~xt*4;B10%E7R zY#5V`%g1vaJL`YasldYq5tz zdw<6Mex;0WNFPi3Z+z^7be@kqZcFLlXQ_PHQ7$cYzZL$f>;F3bH`*ad@el&Hx$QgW z=jFrCZY#a^y?p<;Y^-Yzbi~m}R?k57y<`5Y==#pAp04v_NIkW$YH9EIoAJz~WOSyY^LeMUz`yx7)HOZno927Q#pC0A&Mx|2T}9gO6*x47Q5jiE;B$ns^~Nq9zA|pA%oFF?4U-obn6qZgchC78eGP zT)Y@Nmt*9YWP=f!aB_`{bN*dd=RCc)?UkL--|p)H2HSrlKp3m2;ueT&#BmROJwfXK zqV);EoQTcOu3`&i9HCkRA#K>dptzr^7y^$0rF6PS2b-K$B91-9YdhpKQa)#R-Xa;V zd*Ev!y!{n;tbug;{zEY52J>)oDZevuM7hqU>aRpRVco+sjvnoyz#!uaGVSfJfcQdE zI`LT^U(ogHo0LIZL5VwH4i}f!`;GGWJ5euN#UEsxfzmQw9;MlLE4g0)9rNg#Nd8?{ zZ~g=FQ&O(CkZG*9fRytOWg6umWqv9>>waPBpW5+_B(JK;+jxD{;WimRneB9c<(*8- z_VJpx7xRSbzwz@@_Y3UQRunV)(&DUyGhXI#gQ#ud8x7(MIM2D0^NT=%K?oOV99G}a3aZmogs$j`;NmQ1JS-NLSM za&8O#=VB}!YmP~BZZ3WCI_YXGU93X~FBg1)&w(Z#;bE__;NoUFJ#tE;)K{n@a_%@p9tp zoQrGvVB4>%7;g8q9R2OS>Y(7~l9wah-|;FNJ6w}l=;4xOCk0~KrCsv*;xSwo1WPS!%a^QfOr97 z1;dR_H6fqp=ILTTh2e%LYv5; zG-Wy&7Z|-$2J0MbBL7ANeJ6r}&sC7`H~BuqHz88e`~FG32g4fsB_;M|P0H2x%u?X7 zf!WsK4-Hq_-Gu!9giNEp^v(GE2ARjxyqv1jH!McrYb>B6FDX0v(cbqlX#YtI9{=vI zy0ZzyN!rTfbs1gLw(X)G+DS?LPbumBKQ8}Z_lKra{p!BjJ&&Vt&hN$5cv)T7=k<8! zjr{7|^mh2OqUm0J{haw6Vg0y%yG6Z#t8v~o(o_HYY}s)irlfa&x%tlhl{)Th*}da? z|C4slaGO^j-ycp%@A<*E$NTu+*+|0f)@SkYHhOAbBiK0?*L01)bDPD_Ex(|4UckjU zFNYp;a=zCT_P0(+_*qS4=);Bkx%0K?!*vdK$JfErJvm(WC>`a#<9rYD`a1mSl;mS| z(E0vmjr@7>ZFNeg_`~?dr{yTQyqE`%H26Eop~`La{oOf-FZX&E94a4+9gV*ST#NB8 zZ-2Rp-|1`C`&(Wd0b}bVhg*InN60e^&e_}gD>?exT%3lO|328}GJ(spfq~)nSH>7| zcanqcZ47t#x(S!RkNEvyr>j*AclxG@!Oq`w@U3iMAdY{8@ep}^t+b4_d*m%U9+&e7la1tijaV*BE=+62F zEuZhdfH(w~>A4JYZo`q;VBJHr{yK-G;l!uCeC?Yjfz4PyL3#519>*tW{hF~i?4tcM z6Kt%YtFDbtc((rPd*T@a1s|uahZ=)kl(^ifx zT5N-@h0*mrvM~c~&#P`d{hX@xJN5JT&c;>~<87<$m$`8EFY)ewIUhGpdvk>1?>qB0 zyyJJx=f~3Y{;GQih|9#kk3Xkz`SADh>#zOSUj4fH@^>KJr2j$L@b|^PALU5$vZV98 zdU|-hH@oHs^Z`H|Ik z(z%V#d*^fAp<{fUON@=zkz*U3769|sD|trNW8mZ9x_)-nXXtHmb`J39Se~2pYhbY1 zd0B7s7-O4X5P{EW?{9vg36z!G%Hmx-51h{8eOBJsHdh2_I-h-P`>#gm?eH~*Z)Cli z0M`y=gYk1Yc3vml+xc5b^mn-~hgC-Ap-x@d+w}$$gY7Q25yex&_)33Unj@iuVhh&2 zk>@F~9T_WVlIHhrp;vPjv={-Ozrg1$RQfqte~S>qEzU8a#o3ZJHKxbrFl=^u2J|;Q zEeDSoSb7mhsNx1ZRzUh-6WX66%nxD*`Th#w_a4I7D9w5D*FTu=2(gEwmzMDa9yfr_ z;|Jw?G_il9XP5IGWIBwM+ux$}d=2FD^>EzR(e*IKApIe0?jYsK@<>~efN3) zM)Ze}-tkc`C8@rdXUrY1lZW>~TH5=s>F+FiOdEBI?~fl;z7O$!>?-*?+Z;Q{#}y8X z-uZzKAl8$6{)EiubJadPt4i3r3!$}8^Pmi(Yta*O}j*kKsjQ)`JsT`tDP(!u-WocF#pPvcD%L|hC6-B zgf(_fd6J*Yw8qm1yIxluBL;!>6^Pe2k>qFa`F6T~NZ`-Fx9RF5)vnLhWk_9{ z{~+f>)J?bbKeh2AZcF*jpPQZSZ=vbh?+&k-=Szq2p|I|MeqJ^2_2BY*$N6`U*E}>M z4AwZr!C~3Jf_r_tUVpFt7c(EkC!DqZf~xC|6D%<)%oL^ap_$jURKi) zE0+Cr$}Y?K>3Ds&{vN9Hu2RZ)eXxC| zEgmj;IZp>%TkMBjjNgQNWK$Xb&2K)}bT)M9FQ$2UxR+OQ9IW(Xt9iC$gHO!os%tu* z+bexa5jWrB{2)IsyTwHr2l#qC?pSc~;ntVdhUDJ`4=VO-Z_2w-p7U?$8V@HM z<;y%8Ti1AZU0ZTq`_9*71Z@mGoYSt)UmxyrT@H_*^L*54A~}EOyd8SQ!z&)oZG*)( zbwYpfO)3Vv-&_;7W&;a5eIx6F@g2VrAzTwt#TN$KU)dP_?XIw~{pDE+WgY^LFOVLW zDdGo+BgC?p+kki&NqSE4T+4WZOnY+|hFf2pBh`P%_(K?bxG?UYqIEdumGKDP{~<;p z=QhZ687E+I1g`U#f~L!UJ$fIE<}{?Fe4i9Chj`z{)VoW*6Pu=atU=THyV%p^`#w)Q z^B<(Y5vTR|1Nk?IL3EL-&*k`Rl+XRPl+Gey_|QTkDV%Tp&% zJ0B0{z7_l~jE_U|GNfajIL4D8VOQ6*^8LEm{_Pt7=02yc>-)pOkJaYva-SIdo6EE> z9gmN5&P_TWFHet|(;VnxUAY_|muc|uq#W%ZXRS34`Bb>x+~eVV|2K_mTQ=h1ay+|f zn)7E(M|)Zx*#^7bsA9O=O*zc5Z)04%D=$a=6hDVO#l44n+!i2JuD8dnCHhNlYmC8? z@0b|wa;=HM&eya?Ke49)zh@D9=1#UXfKO1kWCt9207o{rq6 z_v!V&5s`}TrtHDHXEWOSgsqhjx_sBQNtfTL#P=$N#CzD1*8AV`FH$~9Xph%lRD04M zr^g(`xPzH?;uA8T`)j19d_Xzxv3)xHz6Jl*MM~%2ztDW@!2fn)9Uec?+UGXk{|@)O zkmFXp^^b6HO!S|G|Itxd&wxDMY^TF>@y<2QFTcA)d5P~VnRca3ZcE+2u(!W&D_&)_ zVV--N-z)0iceIf-w~E)Zen%?rf7U%J*bjzZ`~M1ET<@l7vv1D7A6D#PF3aIKe0_Br zUHvAw*wfrfTkki@8{6>25*nALe9aD<_1>jCeBTW7$E5@>PRTYt1Fr)fos!a@K^p!K z=hv1F?#;)$Q+nvL75p1~8xmvTSU;YUoOf%w$Hlp?s_||3ziCe zw?2Gq*Bb)#cDqsF=B#JH;^34A9zERsW)=O#x8)e@{%sZg#kVvqgTK3+e2?2R z4U(5@WyscBQlY=+cNBat>l+yC^?e(=U6)zt@A|Dy81C||9O0afYR|&nF4rV6w)53_ z41wYZN$mWM4Cw6?#}FvKkcuskoyQlfay&1bBa@!fV8s>M=Ed=ca6L}h@3DD9&`I)d zP!{Qn^R*MSenLfJ|His@9$%2L1usqCpw!CX+mv~}*qcG7Q}4jKcD#o@iT8F&_BK6J z1@{#+J>{2_b`g(2n!fE?eBU)a_F%;&kcYW~njc4gpR`-Ppq>}UFZetQK7J#8+&sO( z(OD;mSP1-PNEzRdX_uoo{=YoFO!HU{>HON{`bNiOCYaqQ zbn1J*-&$WpdGh~~X?cE4)8+5L@0o4sULXDXt|CA{`gR%<7>C63?Lj`N00 z9=FDIrghA9%2{R5&(4*Ue79-3e9vrrdZg3)O0#pD_DV z{k`w(gu&t)I$^lm4LPtLB9dNwVYlltiQcZ?D&fZ;uFd)*3>wZ=NW~O_c6PZci{Px8 z;IV=>I*&>4xecWEcdXV^r1oxTH0Ob@pBU-A?Jg^UempHP&!L`_aa_z#Xd@{G;l-DE z{6W*>_igxn2`?Y)2SAI^o4{(=`*@bY7S=*(s|u?`PuIhTUc$b%%`4LT(JIY`W7 z(HS6Zxf`?XSkyZ9@ldPD#(d zAZ{(ku$!bc&dqI@XP%P%t!X{#2+CYjkF)c!aD4ZS+rqJ~_*-a_f2(8M%D!!|fnP&P zpPc5e$J{&ohPjqsjW@>Y$NBni&aX8+=G@izIn7OP!@o67PB!A-8b`Km#rQbJ$zyp- zG`5YgYc5mc-<+S%1qbgf`K}4hg~5-Pw;b+$M{QXAe6Y`5Ijl0heeMj<-}kNngZ=I{ zAl1X2zbUvFZ#_<9psd|`ao>q>a>13q^~D?8Zj znjHOIug-=HWlX?{IShBc$^_;va7ptRG*Fp1_VBfAV4|A;5XKes^%ICUjBS5Kj#MlG zc5fbo+<(DJYilTm+g@IRuaBto@cW+SyAbb0XJ1Hv9)q_(q#c9s;|JCL474XhI5#hh z9q4)Cw<&s?pB=!DA5`NfTG?^hYiF~w0)(*v`}?zY-7}*-C*>ZL!%a_*z+(w1-T*s& zGZ%o3OF!1ol+ViYP55hE7V|my{useE5^G+fw6VYEe?*@5`=We#Kc?3QQCe z>9=P?6X7~@syDvm+YH~y#+Q62*#3bDrkqxIWzPUK6~msxSFoW~16a0QUly)qNP>XFQMJ$D~(zw`4;GFW!KB z?62U-@_A+ZF!JY|+rt<}5trb5IchqOKWOm-&*sG+y!{zuz88;>`F#C_%*)e>Jsc{# z7L%xKUFSdW`da(~aR^O%v58cEkJd?y5bp;W?iY!829I6HISzHxXrpfVyj;eo*c7t$I(CVqxNyabk2+WdwkbK zZ};z*`J6wi`jYQwCY<@>O8Y2)eC8VPCF z;s=E-p7R#Q*u(uF;I}~Xc)q5S52e}3R?O$C)>UY+2E+`Kl6})v)t&hf_&!BiUX%^D zzDQkLk?$wD%|#i9{NAP)Uyy4yA|ATcc_!~2vhQ<}&bf0_UGiJv?$Xvct(^a0>+>tn zH$FOm{u>MYztQyc|BmmLbUVK;zm4jGN9A&>OG>^|-0PP`e9GfnluvPk3eDEv5)b9E z1dY>j8|SUsvw(apk8Ixm<2~Q}nrXV)XBd5oY{M%1pO81UHGNz7(j=1oZrN`a`~QMR z7kxVWrk9w%CeysUsyp9DO1)cPufw5HCVcM|??sF)Yk75S{9UcKSBuJ*c;W8;+e=A83KQ0 zICW9C;P>G9u`K4Wr;da3OXiPwy~dO4*f^Kg__oZiljg@A?suOFmtPCMPHE2BwS3FQ z>ykb==z#$J1Md$oJm5zrwEqSFSt0HC5AMsfq-Wy0Du#Q1FGnh$?87}n@MkmENAU$s zQXE0rd2E4nJ-!gmN#OGn8tXw^A>QLsi!WeJMVI&k<|=6Ihqh|{1?|JoHU1#$WBc;%SBCq&< z1!4tuVa&3S{tLWZTk1g zFg~8-&74EeqAvYSe{3xNKDh1^r+np@b88$uHAV>kKJx2{d(+~P=8qrv zK)}T%S8tOZ9{i))$lE{g$C(8!W)l3T%KQj!!+n~P{QgB;f!pGE676SL#T?`_6{m|B zLY-Jbs*f=3Z2dzUUB(-lrklhYw7wqowY=Q6$Bh|>j5+XFgrxfi62 zC&>8=G9PJKE|o@kNLkMFYxrCVt|MlVn)d)Z{5GT^Vb|gdO>Fv@O7)!#IrmYfE#J4u z3+F#be;+XmNSWUz&H07Pe;B_b-Q!cTJkqjWmDb}T6)z3H&w=(T8T0Gm_QdN7(4L%w z9j<5%T=$fu{X{LK>cQUM>B??!j_=(cRsHIoF7Eka+%Pr%2m5gQYg7!jySjk;t*4k1 zhR=-uttjmn;C+ZQYLd8_RiFTSsYH*$(v&NO{+O&1sl4rN^S$Q4e-;{(2sKr4t}r|hKKy56Z(hz)PxoP(Eh`?{13CC0lI(s``x30 z^7y@K-RH=|d=W^*BKVpOuFL0BrqQQ_l7Ca7ibaHF3Oo9*wAAN5SbZwx@wjJOoxU9@ z=RY8A#UYx-f9<&v$+&}9i(#d$JsuE~=pKjAV;3?Wfi%8RVUG=5U&a*>UyxG98)TaH zhmba;DUZh-G#&nVO1AUK8*m2peNIjHVi{ii0zA%>a-ZV5X^oqOHaq^|9|!wzR?_;- z@_J#PQ0>~*v6cInYTr58qa4W;2es@a4^{R6BO8vNEH|1T z%{eP{%ELV8ltlfc^u~^z`PscaZZ(1P;&Zb@UH>k(oVVRJt#M(_afiEq*MztJn&-=X zu!ehnKeEX(oGWX3Z?8K{r2WR?yWQUWaH~FXYRzZmHp#nXnwOP&!MS73EPd>zX>ezf zfiLfjMXLD@=kA^#uHTmP#WfDq#1`|d`}1*S8e1mx4!F;RR-fCzlT#Ayr}Fy;{HQTF zrv^Vx$+o;1?fLb8k_|dwc*svpc>LST9~}BK6~n`Ro}+)*&rA#sf5?Utm!Rutl^GuN zpb5lZo<680{Pt5M92JxI#P{6i1`uy-ERmW=iAA2 z*SJJ#9S7{5^x_kUW27Wv4Jpa@ujG2Fd{aAblj~zUUz>y5G~JuO(T%$i@3Uhe+MZC{ zHn#KCCbZu~He5%Z4_gyC*zKDpytY#JO>O&b*Jc))9lzkR;WJ@>qsiial-J+oCL5#n z!2=u1U2e(<;DmJ~=XBs_|EW^j|BKr~t{Kl&uFGF>ed6|P{)&CTQscO^e;CSeDa-Rb zuFG&?^l__X91oLkh>iMOQJShwNFybkBe zn%+C`M<%p7+yt+iV!;M}3PnZpz0*KX<-JYjQtFfP1E-doB*Yt(%W`ij-RY zuuL(Ii*Z`)pNzCG?fHY?nJMYDkN5N!Rchns9_I!3O-Wu~@?7at$$XiX`%* zmiq@i7(kZi`7*Cgn)7Q-_u8O3l0$QzNO?TnL@zk!FS5Z1!^0kmA^5Kx&*u3uuTFY+ z#4jA!{CoV!M@sN>fewB?Jn|70{i7Z+F@Dr9J7IXt<0i%r|Ah(qkGwKgKH>x8hyE-8 z>=TFmEWr4oKdlAC5VZ2hBRO%%PfMt=hC?363j8=52UtvE;-DWncrcq_7|&w{6gL2> zSV0(TNZa|GhVcXLF+ni{uME%EVhrQ^{h$QqUQO(CcMhaeG8IRtZQu9%nT3gc?S(HuYyj9ZjanZMB1Hr(s>98K!WxIokNV9#4kc?vuz8!2ym@4HO!+CUrt5`K5( zN5h|PCOytB`8uV8I?nuP&Y!)x;BE3HZ$cXU$>ZC-Lw{;Qa(kHuH;0rQUE|o`z9e}* zx7XDL)kdP#8D3m{4$#`VDWR}{969R(T|q!`1!=qkDHM7$B%s? z!0^~7OpG7(SSJjQdLqQpk7X5#*hMP#A?=8ja2ftrRjdVeURKljy#k%zlY_&5mPG%s zpO*7GFi*mI-sH1G>EXdYkDhzpr)cpDZo`~~rV_D?y7kZ>ONss%{j??dJEPLW^%haw z_<$c|8iohnlS9U$qjciCprw6(-FJbXQkGNNp*efxgOCpdNS}uLdUK(t<{#pluT6Ym zDyxlG!N%Ky-^^`VeJy^_Uvf){6t5}miTDHB7+Z34*4y)zB)nJ&=TDkGzT{RD9{<$x zwOEBLhcePG)3^>?hS#k4zH0J1IQ)tJd#{X@-{14wCX(mnop;TA+`EwST=D(kwi5G| zym8dF`Di~S{XT{7Rio+t8esnz={8bhtg!d?xpUS4&Ni!Z|GP5_oHMr3qxY5A3(4Y> zbCt*6b@CW>I4dtB>&tZXdxbwBzi-_%UHKW|I5X^M4{0eaf2PO_$Bzg5KM=sJzyFUj z3z8oMY4a?qb59lS#ib3 zvi=BzV;-*{`K3sE{5NQew_96(G8-5e9{r?^W1r4|@#CI}Fg*4t6XVA{?I3QGjx%xm zvpJ~##PO8YF@DTbCgvUUl!@_Uo{sCY7zB@XX!`iEj|CVW^JoAqe$vDyV>kTXE%Y${ z!(&03?#&mG>pXa0!TT8WL0CtTlG@sfIySWD^|gGi1J}{tQyigN4B@_PU|`~)`&G<4 z_<DqI^ZNXe%g+JrD)ADA+hW6Xau3Wh7 zaZ#`9@$1%4_PJs{b>p<)qcY98ZW~>;C)0kL&A&e#aMFhLgSs?7n~hIvIxjD|wM_G} z&}A7fje1=r#x*=C`EHaJ-`|eX2hw=5j^RN+iQ5zVk;4y5Ny)dHr^EHz;LCL-#=m8G zj8ntUh2%bP9Ub-RNUc4p$L-QT_tF~wtz!dcmt`gYaMx#h>$jc!@gp8JA;(}Px1#nf z4$t{J>5`ATJggWKRGFY>b zkb^_+&mrRoh&yPpjqn{F#xD?Wz#0vt+e);Pk}_T)(}+nlkx5^AG}kh0>+Wo5V0^!O zBZO-pi+v|J=OVp|hujmbp_FSXwKR?q#wz0Zw2}|T>2UuEjf1waagLg*Pi0bhuuJ|P z%?D1ze{g+M`O=Q^b0y{RKCg6Y-BM+@zn|QgPj=;_qQ1uuWqFzIT3@y&(_Z^s^Ce%V zbgHjxXTQHQm+Z<#QQzaDT7LMhdLT&CyG^UZZ5VHs?clwLdDtn5awKINsWh*X;j?j$8~P!b7$~HS>NNu$mjeL z`n(gKEir!Lvz;*Sgy&3fZq0S@?D3PH?}Xur&*f;_&cw+t1ekZqivhfL@jH@oG|wO@ zNAU)JZMcsAF(vVzrevxf?5TQn>~v2~9RE}R8LN=-CQ1j-5uTqYj#12e;Ll$>J)AGW z=TFew3dARPY=ZZBWanwAhkbFiR|dC}?)CFtzKp}7ytKzU8DXaY{9*ANXMNH#Ip+6O+tN9b!JdFN?bW^x;18Y#)kYI>?(WsldFV66z3a-A#kq&-f@>tFeK^7$#6&dX{#zt*Jl|0CB& z>u}mi?VLVOn|uE>93S<@C!6Mj`~82J=HXhuGFvu_CsLlA-z?Ld|7m)Y_EA56$8`G! zbgDfZPs&vJxv-~rE$osj!w%V$+oC*pD$*$lzaS-3^~g@gkoh=nCGGj;82P8umb zJX`h@kA_|Pi%7%YL>dzI`qEyXEXSXDn*3?-Y?AH#Yr7tAU(-wfA3Q)xha-bubLrJ- zo3C*qZ+uxBW9IzM(>cGEWr_QapX|Wk*OL3TNzXg!1ry_^yx`!aY@A`@)RzTb%qD7J z-f1tXp!VjS_N!KyfBGxpT;#d=>3OHTY-0T6UnMa-iR!*+{x8=5TPF|kla%CbXl3L* z8Kqf#2{DI2^7$X5xgLY#pB~{!ro$FW#K-DL^ew!s>m*KLlSJ!~0C$x5~Lb zGOuo$=2sv_(MEdjk>ODfMc}auyqBab_mVjB7a2e?2^oKw>-6yOpJao>9yFkTp9ArW zltf&^^XYuwFphr=Xe_A2gHanno1^&|T=oyXuY?tQDDuKFFFEFf@vW5f+L!T>I_cg4 z_m)sO^#MQ3xi#h0X-}5%&Kdc2;zRv|9tcqVZ^eHo^JSXct z$??T6T-telJbvlrOFk>p-toQbl!5^#rv9Sl2 zC&M*|A;0wMHqEz=MS1-q^J5R^p{O#|G1}2Am*6rceVIL z7h60JBit`jzLR(?M7|^G9qjFYBI61&-86oISVSq0u)qIVmSb^@Kxf}2#heQ+dA_dO z`)Bex*dK@6D82#MagHJe(m(Xa0`~qth;y`+9-ol>q-ok~-^=H}D;4Xp>{Q>%pNl+x z&Ruoy`uO>C%m4VkQ*Ct42j@cf&dEDw*ZN-jGQS!({rRluv&BbetDT5TI{SAGj`*bs ztp825DCIT-DKFy`(2e-Bz|9r+Ve!>eOl=111GbsF*@$JD$F9Znr#EULZ zq4FA+0pA&%@=^)TWh?!aY-pn3-<*>*(dV7|Y7Wj3i9?Q`(GFd>ZkxKpGha8MwK?ys zH%g43^+s(>oc(5m;n{DL7(eGt6BA#4E5f{U-s*($vtLur|E+9%1b)uiZ`H03xAAMG z>TZ1EH8XxO?~GSVRB;SHrcuQ?c-dE!dmpinFwQYN?Zq74v*N|S@Entr&pFRa>*4$p zIiH31RkAPRdC+AUFU|X18Q;wFoc%G}e2THKIU1z%^+CM8jDOHOi04zf?t2gAy2L7| zu8dbi{)00=&CB=wnO|lDfnbeE;`^kCbMSo4hJ57Jm2TW)6c^#K3{B^;h}qUD-a-5& z#aVK0!{RS>bnQ1tTQI*xng0^l*qR>bL475k+jv<|=k;bwA3x&fCA2xZb*^cXGEL9h zYrAQCae4du#Bup*4Og8!|NQOa<2g*py3hMumGk1aDP9P>$3MHakK?4I*MDP9a@+c; zda(23d+!>`kKShvzfI+r{MM-SJ>MRG=3JTU+PE@o@RK#48F`g#Hou$dabMdTKThSNjf#i2<=NmLuQJY3 zjnfWKe|1i|w#Sb-r_=Z$cw|aWoc(JPUHR?Am)~xMdFTEn$NVq<+62ngk@L^{ZG?&Q z-;OZvg5Oj)|96?h{0n|xL1~lQ7M%NA6Z6k|TY#P8xxcr6`#EoA3(xtDi3MlB-3jy0 zelx;?bKWX3|LoTT%scBffhtzR?^WpY&wMRH5L1ZeUdZ_z_WTS!zeCe$&Ih*-Pyba8 z*z}l25woE4q%|NMvOhwewAW3eA4^HTegyq9mvX-fnVvZ1c@y%Tg8e8UQ|pT;Zji?g zc>GrErJ1KiY(b{mzPG)4+()o<9)FN~SLA6W#-Q1>eJ=97F64SPnI5$-eM8t$KIO+D zpQKhs#wKKXoc6%9kceNDcIBI+p)LM?h~!l%UQFdud6hl><|*H2$og#)$2^kn0ZRLT zrcnM)+rvz|G~)lu6h2O_Y?o*}gW5wrjL)XgHwefkG z&{dy8^D|o7;OC^Iw!T>_tCb@g_tom^+~@Ojw@oqMH}XsQ`ed zW8MLOSGe}PbAD@r>R8;FbJ;e!e~oLh2NM@#c)U|K)(R# zm9Lv$cYaXZAHNp#*_eNnlJfmR=_)q-QZ{kQD>+j8Tm=j##8FayqE|mv5B5R6hsTpy z|F|a_p?B=#Ia1?GSkI`fpW)|>`ZyoRlpXnyTKn9F-^b+^Yi4qH=UeVju)7q+Q!#lT-@%(Q2{+4qtc{;W47wn~< zAb2p+a{L%+%sWLoB~dOVY5dp%=f|qva-O%Wm-HJIerwq{_a&YC)$pmg9G?A_iScuO zZ9@9wGR@oPZGmTS|6QBkt=ZE%yc^!pt1zVe4wn1Asf9sD_)&#>T7R2fxa3bNy!IDf`qx>* z3YYy&!Jo1f3@p6#j}D68hu!azT(qy8~5)tJvDBTk6oNtf zwV<@T9x~1AlP=px@fz4=dri}5XL-pq?<~eG-Fu?r`Y7*rBTkf(UVY@t`mkgDuKPRr zKDtbg?q_y?=g+rtPjcJv#1~BP_B5T3m3sLo%ljnQlG5Ri$$IiT&xtgi|B$nW-;A>J zY<^4c4EHw}ZN%@BaDKJ*9^>yOuUy^yy6;nzON}eTuK5JqhWGnyO5VQapKx1}S7Y4A z;n$K+%QWZGb#%_hEge3lRfh7wsllhUF}=Va9?k1Ud8AWv;=JGI7(e%S0bsZMaLVKS zTjS5tX7Lf3M_h+y^nyuIZD_r@PT0q;W@+)5cXA=u9|5J{ISNu5v z`~UOq58P+7A?3YE>A8+y;Q8XuoTsA>m&rPOt%#z_`6x22)$weypR&@j|C4E}e@*q- zp}mTg^0;ZG7wdd@9lRUzcZm|;;BgBrpWAp@O{cXih;dj_#yu!a?{L`5_c`9{BgtbK zp03Tc=<2t~cm}0;oA9&dN_u{wT#q8ZXQJhEo95r9Y~H!F$@i|?{L^2~f$=6t>`Q_) zN!YmLV_BMxYhiPYG#}C0BxTB-?F+`c=hFTq(O2ADN92;!KwZoaZ{cTTOghJPgZP$^1S-|eTVme~sdL{=(=}fbJ|{^pU;39atsV38w8`tCr8}Ju;|SXP zP@dmL2Tw^!?U+q$-Z}C36^~oh)m{EJ+CO==B-S%Qf(Mi2zh$;{?RwBLZIOd+WV`iO&+&N{oq}zj3w~*yQX{of#yR# zrJ?a>t31zJc=2B%e^B~|^Dg;|iusrRHAl*it?c&vY;a$+2U*%L|4U}$Z`pi?1y{Ty z@YifX4Wu~q{IC8k32@ubOLE=|-Q&KTOKQ5tKgqV@Rqy6l;p%^wSn-;_H^NHS{-Y6A zyyiU@zx2)bBCPza_e*H`+_v(y@8$T?HUH3Y?Yo(YZ~i@#Sn1k#OIX);g{$Aq zR=VaL8&|)V0cxzn`~ODwK}zDDlJ`-nJlT0!+{Y=&%W67~-$X9>+Fwg($K}tn7Y|GI z8?bk+zwpX;BZPfix_>MB&9HyueI@By+=It9z4!|+TUVDcRV(eqH^wjig9$5kF&lY7 zEQ77js;jF$gR&>7Wt09%(>ZanK2P(uG+pz_xJ_GM$88kLrRk~oRb9Ks+q%xbMf)lKDEDu! zd)`_(v=!!6-wKk~nD(BMwp6;#z0#(Pd_HAbyXScsEx(CPdp@|WNn2LgWdCr^Z!-(L zFVJ+pzF5^hrXob&hKRNuB)!M0-tdo1VwLOvUg5g;@^&Cs{?ONOx;`F!#D(8@&xGf{cFl*MEq&n9e(m2g3m$h~@tgmsjk;V} zD`)ZGE_oU!=C&{0_%8?VXJ0ZP`ES5|Z~SMr@=YH&pfUwkx%poT-p^Jsu<9)zbi_Zi zRc8UK-TE&TYuxfL8@GOtajbsJzXG`RNA0hE^FMX4_7>gz&loqopJ`a_#`kipe$xjL z7Tx%-606=fGqVu1<&;H!5KrN;mXRLZlOp~h)2rV2fr-^__#nWl*Z(VkdQL3n z6P(Kp6w}h-TeoU239Y+9EL)Xg{f=BuBlESiti#jNZ;8@Z{yF2Af5o2yc=JEJ zd@cS08^vKXAJDQ%|IkWPJ3Jrfs@aeyrFAZ{ecmo~Z~ah{7>^de=~`cFGql<3hr+V) zUclb?oW@@`C-K_%^ShnD+x}?%DxX)&b?x^xwejmgdRRZc<~V1%HzqFmV+qc^p!4xV zP4{>o;+JhD&Vx(-%)!oW{JBGZO3Hdo(|I3d&OvtO*BSHkC{MQSmFM{>PDyr@v&v|B z>O0C<6Fl$AzXp(eSiUcj#`~3*N1i89w~lmu12(^z#)NsA#%__8?tj;QV8? zn?6)v^Q-DOY|NSIE+1$=133<0RI){X-LLfBT~d zYu)x?3Cic`NdNXHnTcCJ&gx*zTRsY~#?2q*kan3y?1aZTxGu}f^y;^KY+{X@KUT5& zO&{gJc|yu~iS~T(XHv@#Z69Te4DhxzebJ2{29WU#nU?VlFU|W;9#@3!))(=Kx@p8Q zR{7@p0apFiKLel~NgmU{JP)kDNlE_x({%oR)$%nPuj9o>5Wj$wF%FtrBG=0BbuKbb zrnP-W_?{%5|0CDq@MDvn+MfmX)V?CH!$(W`be3;PdGJwF<#3!-KI|w5nX)6lu0%Ur z;+#oV`^aKH*=Ew)zgEU8WSabI>7(;5ggEk$49ig!)8$5+}6Yz@yJ zaUIC6^Ly!BQuB6;^L#g3IKm27{Jqr4w&1dNBK}Bx65Nj@_$9Y-U0YwqZ4+0%W5T;X z>Has%7~GPcL7Xdprg)uHzXCfi+eSw_DY@|L|1eRvA3-_vtB|mBi9C{C|L*0>_fg|? zVtp>&o5<(<7dDc7+*f~>R_lM!CP{EuZqsz`GibUtmPIN}S_x2FRXLPj znyvl4$qL{9Bs1~7PqVqgI^SQKt$*i7HtzT&v#{=+AC*|=jt?Vv?XUO!k4>!my^nIN z^W6^vz`pkPKZ>x<9Uqs_@?l%+dua3HY#k1YS&ZOa`?bFJaT05O_apZIi~Gc=$MdKS z6C$1?(`$U^!z5O}{e$3Hq31@%x4ih1_x#HIMYny>3aR-kXfKuT#rKde<9x8E=HB3V zeD2T6H@#N^_EcXDJAXf<-XV4Eavl`LmZeRmt#>2kVXg?~ZAghYc3a8UPeEVlTYoQ6 z`XTT~44LwExLwW#L7r?Ec2}~!Or*ZzHSZ*RKDMXKH{Z=nIP2fMeE5WjCrL?ursh|s zY}~gc-CH}v%X1&O)USF!Gr`8MG+oAvWZL5gD_r$g6CPh!;p)G2!irb_O$E+t!Bu}Z zvGAIAO=#DQY~^^LvTt!iM?j_EKKaM^HbJLd6g3oS!^jtqyGTjN|-ezkqad->1=jP$;KK z>U(%!uIcEXcpRMTsDpPyEEDT`NA|YwCDhaSEgv(`crA`i677)G#$~noun~`y@9U=N zy1qlI+$uMJSZjVX_hXvr_WWu1QIN4eR?M%4zvfBl=lN;RUk%5Hd3%K~ZI2JHdE3V( zJpbFzxB0Q;3o_05gUUlV|A@HC2T5*Ra^?{ak{o!QJ3g%iS&!1ZuE*byPh40<;yl*9 zb7?KCch{#THn{WCB#3v*`s?4lRN#|reFN*=^>GO*x4{oSEwSM}OS4VxoiwrWJxfhc z8x}VD!Kbr=4e$OW0NS;FyZpWUw?p6P?n!~^Y$JyFdWY9v{y&sn_s&mBtas;Bw%%Qn z0@Xdi%eK?&-G_DWS1Omf=V8~LInRdYoJ;C2%6>q`M@DHppCn=9lJ`HdFQhzPR@2w` z?xzku&Q|}&m-w;U=<*z6zEkZtM0wS9 z()SmV`J9{N{KQ$mCCfKXv;Bv?V`=$yk0*a;nU?pPOndhidzQ*J*|p~R?R5M3=Y2sd z-5CE|^@fk~bJm`7*yQ{>nMOHHqVH)UWuNY~yXq|;nee!1iub~f_fSfv-htjb4)s>M z_2VQK-S$cFe&_G{&r7f4gHRdn$Ao(5BUOG;Vdp-Rsx#jU`WoN;xI)6es>W=?`Oe&5 zBt2-0w>#1`pOM?ZdAVQf>4C58jPI(PlylVtKdtQ5SSTMCh2Df0P}!KvNNz*v`us+= zxBlHz0wLe>_?XP!;0Mz#HoRxXz*M%Of{pH-?u?CpIFoI9Z-`CqnGUe=52sXYa^G~0 zjehuPgpKc8T4IxXKP|E850^&R;(;j#)7cgVHot!=iOuetOy*hjcpkN3VUznOli2iu zsbn7NZFb*uj2|w`fKBdSY9jUjRQ8$tf3DJ_|8w*oZFKKsN7TCywRWpMf;*%QPF$hrZ68li9j=O{w5{q!ZS@V`%{17xTUxc5c&j zlq0F-x3Tf}ldF64P)75Xs`sg!4`sh!<@;8qr9Tj->&H*v3)J;lcsbOC1Y>HD`VOCwbFE}F6C); zLfiY>kha)~E8mK-a_lmgG5x&sw}zR?go=I@KRY zd%;18hc?6N-~M!jYW=I$kD`A{Nv#h0=-H53``pIIKQ$fvPm@$W_1^T}tH|#v+xQP{ z>To|M&^><2xvZi~e~Z%a#d81bj>$|zKJKQDy@h;r-Mh&DO9OsnT2|w$G}aoAM>_oV z2h*7a&)=5*d6aJG-^==Rd}*_}ui!HZKMic7@{%8c-*%Ck-ak{TK9x)2fvKEFYI3t5 zO{eRP+Qj)IO>(mbmX+Azfn_G>7#y4bcqYJRKbk7B`H!a~Z1v-r99#ZqTE(_MnQ}0b zZEIkg2d7PJ{gdfV*y_Ql5?lUwG6%PDT{{-fPwJys;DLzX6i} zf9>?}{^0itbnV`)Y?IlhCgS@av6Ebm;!t&@e8%b7mo_hr{-Un5=B7}d-Iq~pWmyR= zPRQenJeC2wjC;s5@84x!k&fdZ;c?=4jNXp^9zq-@CHcEn(-BAMB3&QB^C1%XL7Y9Y z&MH+mWslln@q0Jc^4(9O_=k*#$TV-ijqdr6yiM)=*Zkfmjev2Jx>EC-xh;+dh2u#W z6KXF%$yPT}&Hd4i(UpV9V=ub>;{e|8_l_^mndUDwfp>g$%+8tfO8ID4o?n!{{eyg+ zT1uiFF8MR0-P7F0%WArJefe?cLf6iT+xTzMbd=Td3R|@WSnKeGN_kPRl1HE{m}|RbsqPNchVe-#=|4@U@k( z&dQIE{q!QQxqr{w9wqwx#yVf*V z1%3}g=l6779q|q>sc+zEP50XO`WN1(Xu2PBnJ)V}^m&lH--As`Ywir?$?`JI``88%0$o>Zx{1hy!fw|ue`tO*u1z8^05vGX-L>p5^;X`A9ej5_)3+u z<2zNkc7B?7UUdFenf33PY=rfGurvVGmo}c(ebVZha9>u_*S-7GZZO7viadR85atYV zU%ibkkI%UV>Dq4&Y+^i1rsefn=dMp0Ar%*dz1^C%YF(rJ{ZZQCS2zzY`7^`qsxJ6g zlyg(Znq&(jGcTJnnI8kV;;=}y9NIlgDG=2Vg`3>&1``L?HwE4~457fp?xy|)INAst7n}III`(%2H2d7MU$A?eeUQT9P*MQ^= z;1k>aY#BqrIjg*BXKZ;Y+xDkRON2bB;7u<7a{1p>wu6a+EAIHvj0)7<@uBGi^m?iG zq7mI^*zuuB6FWUT6Ck>e zfALvng5CFc7MjZKe?A!jF%a$fZDP~<4A`h0=qXA4kCm62AA?vA^>w^&q`s7=Q}toz zWl68o7dI*6y+4w1Rm^K)@zplEeBaG=TE>Gmf8f)|Cd*jq&F`l*Ox>~BeM?nH|4OD) z^@n>k``)GVF4S7Gwv}~WZO}e(G zlG|i`ndW6R9qSNNQl5`Y)3c4fqK=e(f%hy^o3hSqrHNZvZROmn#`q#QS{q4gQLPyM zmOq-Y;qX7oZ}VQQTcx+7+?eGKgV#8i&G9-j;V``%AXo7n5|DHD4>G08BM?J2PL6U$8O_4tg5 zJs+E9n9TMJuryop*t7{RKI7#ter!s`ZjVmpz&*z$zh}GZ{8=GgK2I`Vrg>kW>1Ypm zNJCn&8J;Km7UYo~x+Zsec&dbq#ZX?<9|{}l%ermTXb-aK`$CrIu^X9Jq&v*DNzC7A z@_v?O<@+A-WobuR)|Y9NOG)m3=z1|fOY@)V*n(KP5?`18hfMQhH1W%LJ?L6}_+{HX zIH|*pY1!+;>iW6u%N71D{M=Yp>(BIKc=hdkT(_-%yi|pLOz)hkeE9#Vc07LKjZb;? zwS0aqT0Xb&vUPO)-b&izTj_a~#e7TL`)O(4ztwr@<>LD-ykETf+B2!y(&ryvpP+u~ zxfXWx15$4DlTU3Jb62UqOZB_3Yn+eUwxcnCE@1OF<-38>UcUa$ti~j9ZrjtlP(y+@ zN_*-!a=bB4r^Yo4yKI+_2NilX{sf;Rl;QZ39FN-hk!cecACrDlnO5rWLO$CF(yx>0 z-5y19BlBB3)=f}@nfHr*!9t6Ch#6kNm*Z(+x5|ZyV&KIpCz&LBg+EFvOFJo+(x?e zS$JCWKSKY9>Zh^eBQqwfy7ls6|111`pJh9bP_I3@o>iTlA6jO@Z!xVJUhL3+(6#5!nx?zscgpx4pEDWug;lH^ z_OLIi`fBvWC?{pr?^bp6wrqYW-#1a(8DHGx(J2+XJ~o{rYL9VK(zW;7Zjb$M1!YXq zv+?&oe^i}BfgpIR1Rzo$Pluq@keg#Djd z>Y(63#D&`Ms{@|;ti*v&|2xJrpJjD$(6j$mk*bUG;E{DCcroY8u%+Z7&&}jWaqxql znJSSg13NEE`hibRW=Fp;rQ(I>6yCOqw|C`6&}eJU5l&$mge39R9*|0NLK5&rWs1 zA!S`fmNaV2|TPRXmH{C02eaFMJ2pn;+!GQLFs$JsTb?j>qaT zUz+n&oR{cikGAIP>v+egHB^>))*YGuj$^{9FC*aC7V~D-qZX&4&MOp=l!0U4txX72gz?h zxh@jNOiB1WQr0P-DnoW^Ps4d{xm@y&wmrP4O zDAPwjJ7t6MV@*Hmg&7mXSC4yPSqaWxiQ69e{G^Gao}bK-;_=5mKNaAZ=OzQ3_|jw& zC%rtCo%qspfRkRH3Gu6CnS~QxS*GH|S3k>f{I6ze;kcKlRcQ57$0WNfpK2HOV}CVm z0_7m1_FtLF0IjWKUYeOx9Q*RJ0MYSYUYZ^A@>GHHTt3T=83FMbq#vk z%mt2h#EUZ#kXJ|Y`bWO_S&k!KSe8VWJ_`M(-o|IS-RmQ*eDu>K(Fb#zrlVX+@;a$9 zu!rxWQQWA3JoNcx5qSNBpIK&u#fdbXw^iyC*BXK9#P8bpORXAK4#$^zezs+L#<9KmPdB2d>fl~46PlUCrP>%+BKRzn;w@1FG>Axu&16I z*wIc}7V%}hZ=in6?jLx&T3PBBU`JV`i@d6@q;mjof-K|w&rFpZhudVEyzRVCV&hx9 zjfyW-{D|Ao*YkG*_4B+;t~>9KsJv(c$4N<9UZ%D8AGf92t?bo%pK~F+pSk4kb<%lW zTRr8Q=>AU3^<;fnkLSxgN~iob_;pSFLGBxp?$wv&W%|gMrbk#-`nP$TBfk@VZ*?4$ zFC_fzl&pOAnmhu&{>xL@(JxK<^;vn+C7b zU!KW<`D%!>UYluzGu~Vl;q*6VN}Tb=|C%`Kjb$dze0?Uz z8Lv&NIPLZ6@>n=7Kc~~*Tvp<=H)bNF+J&9kw}5gfiF4B0IQ6xu?6lWrT%7vqbc9o0 znaUya>a-V>;lHmum(Q}(MmY7=WhPE}WyXX&Kb&_dUt5-GIQ8|<0#KQgU!BQu(ks(B zPW;tWE@9WC);4TZp6gnD91D_;*#@W|#mZipHrqSl>N={|R8<6$u zrqSja3 zZ8*Q#Y%|rC{B4x3{F-)g!lPcEG10aCuJu!X8SGyBD3_AbpOooTy<?+ zPTR7MOlxiMGFm>j@$2J_#qhFqb<9VU_de{Nl=YgX=~=Yu;68wie^)ralG@UqZ+VP5 zWl%>en>z1Q*_2)DZ_($eQuO!7y}T@mqHMt*wD%ajLp3|M;XRm=c#l9H|H{7u@U}F) zdXLYP93mX&s^0I%y*yb0?|g1+qr*R`;}gLLs#7*q25mrUJ{$Mz;NPWWsy^(gda$4L z%A|=?UYjm)>gzMPPm8)Fxqn^y#3SE6C8bYorQy?;WnP=gc}FP~ZV}j6`J5}19HHPX zr@y|;ge))9UVSeg{4gcYcx}>z#t8!(=SPZu>g&@czzb972Y#qYI$o+C>>gj&+U2$j z-k40{!Z)X)JhE|I@YYm-^WU5d@y2upT=3>h3{hXEqxNL`N}9KE-dj@<&V6&TgjTroD5T z*!VF|d37=Z&;KIo+BtLEazEz={*!jD{I{sO;|r>FM*nkuJn#Iv=8ybC9Ft4rS(2Ck zBIxp5>z-4p-f6E)nvnGxr=9?>gfZzpp?2)ujP{;O|Cyck*{1-r?Nl@elmIl=SP{?`oVAB%K@d&r@=rgY>$` zc6}=0N69q#cXg2R0lm6`uc`RLUw&h$;?q{=q}4g+^-oKrd}80Pul)3?4LX-*055^e zdC7>A5T85mEgL0|QFt0}3vD)*uYa1EcynoH!Mh&G^B(;kjbCyb%4w4GRMIc}^>k#D zWn`LjaZQ)yW%{zWCL81OUr&{|;_c~D=XU5AD>6REnF{`%7#+VL-^YdXReznRH_G)b)vY`k1v_BYd+hD+a`axjx!`u2=km$&D& zbIGqKOWBfd0PHG|eG6p=z284}$4F(K?5eOZ+TlgAg=!1lBXV0^lnX?SZily)rb99_hp^_&G+6vRrc`}ukJ z3*UXenKqaI{^7HB{k-kBdHuO-SGQe1w};Qn{(g7f*tY-f>9?i(JeIFJ-ko>;?Ry*F zJ>C1L-Tx>2Tf}=BH=rW7m#j+f6@n=^g9pAAi0a z|M||bvd=kZ9hTAB@4pX*pVw_(9~*D`$MNoY+HL>!ciufr-Tv4$>f+tDdtY?#%i-}Z zK6bo|ciUl~PVAra{oA##t7mN6op;`Cf9^3hN9mu_|2%en|M=Mas+&*s%RA5KZeG}J zhh=of$F^hb8y@f4+m$n{XL$ZEe)s=9OdsdlJYVn6#W#K4oWH+j*<9{XzHXheUI%@& zR_d=YHr09TSXy6Ive{7r9zx{RPrq3z=zxmGJ9j38$?r@#@OY8MsZ~Z!! zuREUVPw`*-{`-gND{p-;l76)M%1Cnb*ZX06e(jz2 zHm0xq;Qhlitb5&_etPrmA2!oi`Q7oZp3`i*JpJuy@(s^<^KU;mN?-lkzduZG{@_O^ z(pTR3;jy&ooUvoWykq;n`hy=f(^$Ulcz-O0pV$5VwYNVwS2`+xkiR?LZO7XGEAM=8 zn1=bg{a=0S{loOjZ@+sY{mMJ9) zwW*7D<^R%K@0}`j=bv}`Z{L3JF#Xay@1HCE^4mXbreAvJ-DBnc@((`vFun7m)jAFP z-S5ZY7=(89&)@X9>)+Tmjq_N((;n~Iw5gtTER~b`zp32*u~dGF|I*t(Y^IdI8c+T2 zzMmc4e&l;>+g+cr?P$3leJ{Lj->~d{o4fO>+y0zy{kbde|9tD+jj3x>*OqSotlLz6 zSKiopeT&1-|MvUu9_8=K8E%JpPV5JtC(eKCy$|bM*Zuu>H^%#Uy7R`i-F4}%$9mgp zQ~$if&%tLG@2+FFJv!d&|B13cGP>UO&s%>!iiPL@`gz^e+20QHb^EPte_Yp}f93n{ zZM^S>=MDG!_i7jGA6tJOJ3c(`=zY|^mj>JJ{WP}im$$C7zrW7Y?RV|jbk11WXFcB4 zwP`ynYtuQKkG&h_S|85ihUKsK*X4Edp|Nc@Pu#R!=h<|;e{49XZS8mY#@cdtd}O^d zcD$RvjcvO+kG3DJo6fy`=ZDAE6i4L_)*?syslKs%Bgcnh_m#KbYo@Vr>yD@O=Wu;F z-0#-UW83vSeAwpxe!sl_y0u$ZckLY8rv9h+u+9_vZ~gshn7;P*|2#@3&hM?i*M0li zTkjuBzyAIAj;G%Fn?8T_2On%qzy7yB{4fpjf9;(g9ZO$*=SR)->ue@G~uRH#=cRpyQ{`hV>w=3to+x0m2 z^Y+_$*!Ok+M$(~;5ntW)8*azWA3wfs--m7Nx9!Mful`|OXW8$Uv;KUPxA$GrrqAm( zjpqHxaBJJ;ZJpDKb@{vP@Z6(u3it6?{LOdXJ1ny+|8V=xkB&?nJO0tN=(l04+@s^Y z>$mB1SJtN3`dAmAYTLDQ_&w;@@v-x|^M~8v`Q3hZUbSCcIiuS!{wbc?7xRbjms9>~ zeA7MM9sBD4Xn*&e+P;o=<32q1==jJpqU%@p%%U5clSrP9hP(2{jR+Aw#&0Fvwyt% z+{M@1?pbl(ZNIGUb5~Ed?T!z(>v;cIcYbTzKfm?4D597oARvSKyecZ>R zYuq#c;d*5_hkk$cwRhI*k`L!DU0>GQT;K8a(ouU)%=6Y|y?@lEu5H8ZhjZ8C^&Xz{ z(VY6M?WvsKABWR^9Q=V5)r{b6}sygR;W&6JMy*IdcWSHAOZ zNbj${(o1iC_k&|;^m~u*y|-GYH^2A8W9cj3{oq)7^Skdg(^tOtcSq^X@4tH@4eK9% zpVR-YWz*;WSZ(_J)wkYjroO{X-?gmsZz{Jt)|KDwuebf{+dqDq&;7icKA$Y3|N9ar zzYB@?YZ#wa{A61`tUtATQl-(Rm}+={NuOe;%ga_`%;FOWpBx`}%dPKlkeyEBDmL zKk|{Dul+Xk>p$)1e*WWq`1oBoY{U9}&_A}Rt;2F#`@^=b&3ESyW8MDn{ns5o?e;g; z{ag2AEH(PSj;-^z(pWo=?&q<3KRVub(mmVP$2#|8<#*#Y9G|o9Zz{iQd$-+m&idFo z-j8+XAK&)h-^V|%$M^WTAMbZ_#Ig7%cf4!!$9?^ei7b%UQ2$-raEgczZsc(+!VzzxUlC4~vn|AucZ?9TuQI46rl0-2Zk-zxV%4n!fl4f4Ta? z@BhWI^!eZW=280MfBa@hf4TZ%BYplq{^eo%+<*9sjcFYpi>;4;VURxm^=}T+pRGRs z^*>vE;XnNOv9vyRc>H(&Y*k60|J^@nrZ0T`j}O!5fA_y_OrQI|zZudWuRd2v|Nc)` z?eu4>&lS?=fBT!w^x5D3%Xa#mKUuZXPyg1RH`C{S>(86%r~j`%E~U@@yFY8DfBaj2 z(oCQGtv{VKrS_%%fA-(~Ni(JVDL!@iss0qNj$banJ-(^_6i@z>zf^v@ekp&df9m+> zfBU~TQ>y=`fBR3H>9fD{-`nZ8zqx9rlt0AdyWw~KV%1FP-ICr7;r;b9|NhUL>2qKI zZ_V`ium5Q?Ro>m}ykGqKpEuKR-Z0$%?AO0}G(YL)GW~5gKN-$}y5rq^rQ2U``{%ai zK4Y`uWwSboHlxzL~E4)R)`o zC%&{gmVW$aSN(MLGhb?^E1&+Ec6#HBt7aKHE+&{=?N#df_KlCsIGY z;q%_}Ki*7NUieHc?Z2_Aq`il4G}G1lua(l?z1LRP?!I~~UA^#(`_O3lRO4qL5KT21x+&h-8T)Dg2yE=8cv)XH<>(`!M?OlCpG~K+i*G$h`x!O!O zuUrY~+UjOArTp#qGgq&aQoC)}N@Z8ucAETY{7+Lx>6|N9R?SqrJ}LjRSFSWuHGe99 z>Ue5@icj6Xsmq_bf2sTwuik$te~PE}mE*SiOQ z_xts0_nIl?zj|fAnYy`1H&3~7{n1fcA3HX;dFEhsnEG>`+fPCSVje!6=1`Iv@t zvu=MqZ(FDH%>S-Ec>O4)`DKcyx$V^_pJ}FR&;3L*U3u{zgw&h=Z~FYwPp&Fy@72#W zQ*&+9T06b|h1FsDv7cEr(?9sxRV!Wn%+EH{l^_3dJN@LBR?RfBZaq5wlRvj=rPkVb z9lP>V|NJmr{a^mY#&qo;{mW9ivv;MLZeP37Ob@PH*_iHMxpJ5uUcGW6J-T+~FzxSM zUERNayO|zdyVXnwHy<|BgJ&Neru)x4*qH9zeb`KQ@9j6!t-Ft!>CXLwQo8-%pqcJG zJZPr-k6t>F?mc|*C~b=OkL^Etv6=2adZC#f?7!Gd2m3FT(u2n@HPiir7fY#Y|5!h} z_}F&;@n@Rp{&Sx>k?uYDvC(w*@u!>V&cPeU(!GP%57Yg}ZyZbA@$&ZZYpZ5D_{^%6 z?mYKOGu?Xbm1cVO$;%$VpLYB2KKJ^xsW<+cK9~Dn9lx3Lr}0nMck1?Ux@H%8Ecpw5CeNSR7vfW2pY(jn z@%HmO=1a?9GQWIy@X}%G=6_@J#4g@#$Icr&-sKzHrul7}Uq5>AQZtRsOFuq- za{k|+-}l!7n?B!p@Io`)ez4z6XIcN;zPEqol-6Ij?>ua#`?nr6)BdL(G}FDkTg~+7 z%CpV1X?@&3cK6Daqjc};l@saywJWu>|JtgO?mm9KneH6Cb|S6w+p?8`1ti^dhqy#b~<>ybbU8nzy7ggXI+0Q-FfnQ zDOKNpDgXV)KXxqLJNWdm^x(;7n(5B|E6ue3@YSRA=)o%|(%pkso2l>P!NF_I)ScTu z@BaR)rS#z7m3Dgk{Hm4q_g`wJ?ma%X9ee+u{&@TOke(k89=#gUYpVy1G}f=9VJx-`X4=dwUpBJ-+%OaGo|`d|5E-`fA#)I?VCSddp^eJ@5uVEJD#4M-Ff5N_WL2d zzta3{|KRy%di3b!W=ikx{=5EMpZ7n#YNh`CWYf<9`tzGjpYK0;{aAYN+#AQzFn(fx z@NPV@7JkKbsfM^8T8Ob?&D*i5ap z%{umE|77Z~$qx2ksHKO`uUaWRU+zABzM1Yn_hK{MeeQ*3>R-!EpIbiGYv@+|G_iw& zmzya)-|jzoxtUtuf3EXxnm_lS*>@hl+Dz&Fd9eRRGi`ci^^e`%f32BXYunSTy;J!Q zAHL8|VSYEfzQgPJ=+TSKbnnRv&9r~;LNh(uf4-USJbAvE;{A8<{Hm4i?LSvao4(h* zxBtSaQ+og3dG3W~O8xK39~*;y{_a}#kG0n37ZFSIlZTIfyq)$xy_z&V`pl}5QvcHY zJN0eT^Ra&{)*rqTD#ye8KDDnJPxY7k7sjvuuG;juntxN7XE~O}CzX}jpW>;ggq7q{{kx zUH6^+TI&BU$)?W_4_-M+5B6U^k?tP6yfNK-{K{e4l&62}_Q5O7bo0q8&2;DS%guE6 z$!pD2eZOup(LZ*7|K(=tex^INt*&3w`u#M|*VZ|y{1hL)Z-)D0&(%{OKX`GqDc#wB z;dJTItE*OeaQ~IVH1-_r;%D97zxVQC>hcZC?~Yfu!*YlF4<5XDEIoYq(y4Q+j_7-^auKls~Nx`}zB2cgOq3Hhpf*jZPD5 z&Exv_X6w8zHk>=2X1~ijwoU8vKAf&zHuwY5mh*%WV3bzJJ`5 zr++N{er;YKzO=g8NGX3>KlazE=lcB7{CPNU?)EpWxzBQJZ2jFG@7CdC+f9Ayulf6J z8UB6AI(GZug=6W?;}?&mkN=Kk^WT}L=WqA?8v8l=ruA|ESh|1iJ$$~IQu|Z<*1_w| z^z6a&%{0t^`|%rRO6mK#TL-T;)9v*8PY+*NRno)zuQb!62d|b=SN^%ndHBMrl{!CT z4sJbu;Y7OqjykCa<-MM$3d+Au}jt}p@3*UeI>S~z!f3rH)@9y~c?`3}Y?@Dy% zjc=b@-EXGN&z14=2Ir6b{nWijuO6oK^Z$0+p3C`1>hF$s?U-sC`xn|*ji>sj>UURe z`u+ayys>S{KX-hr-KRZ1b^FuxPw~{g)X$VZ)<5z6Q7u2UfAVoz4u9Vh^Ecle z>vzlGeK6SXe>c48bNc(LH2+NR>*0Lh%=;Vuez$*YJwG{`OZ4U?>(A@ha6E?lt+~;u zVk7gr^UmA$AHH@hb>)n0$LjBn$LB}7{~x`vYNa&4PV@cY`ryR=qgPg~l>7~^_i%rB ze-Gn#A3fhp{k7V8K98*nyW?qnnc~C#oZN5!`wW}@{%3#xl?zM#_4#=|-`an1b^Bnw zj^CX6-;eaq>5kuh`0}xI@6jvAQu=-;wfWwomo}#E=j!(!yxdHw{H~m_?O6S%J>EGS z+ivpFKh}Lublz?H{(Y=n-SO`Gm$7YnzomG3{#4`X{?6rZzAujMg-0*0`f2#{fc1A~ zEraR0cD{%6jHBb>`4i*e@58(AH-_8pIXJxEPws!Xj!y5<^T&@rZ%)=9;)A~h8NRQE z@e}*0fAQ~E!r!8dJpWF8eCqOdy?xdGO`U)4>znGY#?$zv@~6(9$`A3o4_|DiYW`~Z zhxmRD?W@jz)BC%d2aIjIdED5xE5HA9!0y<3JDkr9 z_mAd5BlD!;`6u^}{~qRv`Rd^3ix<70zE4Tl_e6UKzmIsbzsJXPY+l_RPyTW|{QdFZ z_c@3AAKxeGKKd|z;(0Uj`{CX3{@i)f=i$$sPwa>Lw{Lml=P>`hwf}N6b?e~K?cjP} z^nU99S+Ae-Pv_h?ZO1sBcpeSrThm|1_WWY{`nTgc?dmv;eXsb59S?v1S&gUb_KEc~ z{GHWUJhgxB_*lEU<8!yKT7TD%v27}UEZ;>PpS%8x>c>>&r14pPy!w7l`K$5j`#aS? zZ~4Rd*l>UOeyZa)b^dhyQ+(?7Rm-oofA0LL|JC-T@@w(xdnMi9)$-@gpZYgnYCK(^rH@x?e>I-^pUSW1ua=+cpE^Ew`{%BI>hYbr z{4{>z+x>o=`ua^hKTPGP{-yjWUM)Z6uf|jRFMGT?zT2L^di_)XtL4v~KlM+1+3&xp z=SRwK|NiUTBg&$LDVU-1SdAzEhW< z#!r0N@4xExF~42*{5D;mxz|riuRo2S_;&lRUcc(|Q~uifap&hZ>F2w}@vG)fYtK~v z)Yot8%b$3CAIpF6LVFBT`>Oe?<)`{nJk_7#sr+q^Pu>4&`E%#5Uf*i_Q~gtypXx8h ztM8Yo^QZEc9fT&)vRi{nh@Z{MC5sU$y*Q z&!5I`>UbL8+xMSurj$Rv-_!d)#jEp!naeMaZ|Z;QUok%U{CVp3Rm)F5KT7MT6i?+Z zJf7CCQ^)5X->H2~e*e$>e2Mi}+ZXajKk5Emcs%uAyuJRej!&B3rSen$spF}ADL!@k zl;8gT&iEJ~2BtHx^ygo-eJQ_qm_MZTXUHGtmlLlK%k2yE<1{|0f2n=tc=7th`cwHS z9{fz5KV9E+{bD@%srEmO@7(dJ`!{v@Y5Y?CDL!@iss2kIH@BQ_ZfR_dEdvZNz`#-s zr1{TM+kH{(O8uXFewyaL)%eu&+ih=Ob$q7oe=0wq_uO&m?VEdis`W2@e5>tC`BS_)zA1mIKgCn|+a8~~ z|JCy6&R@O0)%K_Qr!GI$zwG$(=Lge{U+jPQ`-<}XDV1N0$Nm+^H_hKu`&0YM@#6X- z)}P8x@rl<*lh+4l0Q*MIK*r}n4zrTihD)(5fv)V>f;&oA-X{L1^i zJ$~{22>Hd^<2&{EB;VrU?`vj`Pwhkb^WLAvf4j#&y&uKf-!B=T+W0(s??5sJi#3q$ z?{w`_e(~D#yT9Y<;p&-EYL8E{m+H>fXWI7HuYbFJX?)W2x0*lSzv=#J z$5Z>JkGG#+$=A~3$%lB`=hWk~?eoLbesSwd1{gT6fvKOr%AfZAxAggu_D#F~ug>4o z`XiU0=J%=pDgUm=)A*!#8lRLu#pf>=%TV^z*C&>L_h2<=n*JKs=GSR#p1t$1 zly2R9)J(bj{nfM0)NWtu-|olTG^j4 zwdwlVoPAGwPI^DY_uItl%hW#cw!f*b&(!5x!&$>E*+BANZF{x+lz-Rb)4w0m{9xDP z?e|Z0ewBZIwCwR+`uwhbe-y{Rxwc-fz1!>S>EpHaf9_u@f7|2L>zDe!?d7NbrTEjD zkEiFWczXV&_v5a|YvYsuK6lHwYO!ZA@K%wft)SG(Oexm!3cMUwqr2E$#LF)bFqKey-M^%1`lBf6Bl3cy<05@=rhi z-R||l$@%?R=kuxmsl1eb>Ud~hT3=V=ss731Q;%=8eCz*{_vpuC8h`(-xV}#1m*e66 zpW2`Di_bg1GC$w;`FXqj)%D}2p1oH}Q`cWDznVXdPqqAQ&+qxtzCV{gK6AgH)L)q+ zrTJNkm*juhyxKnbmp*@)cYbPpQyc$nA3yD{{eH%_kKfem-)$eC)c&c* z&-;7n@9$~bSDinm{8eAE{4hVCetppX`<0XH_2GJQxPBYPr`{jd|4Hws{(aKz8P->A zU&=pkyn276-|tEOQ~v7nqn(*V{jD`{MVzp?&%9Yv=7>YJZBS{?+4`d;O7q zew*THelC8weYyV2zW(m-bbZ?YzDWK3(=I=~AD13a%HRF?vghY%{d4kX z_Q%(QX?>L9X?=IH{Hl|0<6F<){{K~`zJJs6CB>(1-~8n- z`}s2c&j(WfYw;>E);S|7DLq{mk7`s*Yc(zgm7Z|I*u6?O)2j z^!}&kPwHRFFP^?XxZLsT`#!0S|;p#3-`~4FKdr9c=3lSW*8kP^Pd$Elebrw7=JvJMXDNSm z{N$hd`+?#8v9SF+_gBpn+I#c%y;{2D@3*=8zl1rWHtg;i(E4k4uk9|}w|w$hah%@Y zm9p1)Q~Bcaem~NjJKwn<=f-J%y?ybsuBXy^D3w>upUPi)y#4>*=JkCw|I)`N`PlAw z`T3vL@9FuP@~3zzf9804{!aaVua+u52p23ySy}hdHvfizn(v>udDI)_~r3w=TCm} z?BrZl(z)Xh81 zR4u=nzuNw%Zr+(RrSVJkr~E0N%fG$))S^?{U+Uje&)jaOaQ*Yx6x$c-Px0#YPvxh0 zwf=Pfr~1?VU(KJ&Px17As6O9Q`IkMOu1|`m@tgblRp*ED*M7gEx;{(epUO}1w0=$T zRDO`FA~@p6|o>MUTg@eEaS7_$NI+X@0Qucy)fA@~8QK z8lRLu&EHde>hhMuQCTGwU?vGjb~_V_3LzTLI@s`JI_ zc%=HLEBv$G3a^zwJJEz5UhaS2cec-)i|&=TGyKYW=DFrN`48GqpeE zPw{H`Q_s(<iJ75Kg|zQJe9xg@zj6u_U|X8^?!BzQu#SvTmM(vFMr!lb$qt{`7?L> z)BAPm_NDsgjxT-wwDk5(JwLCOpMJg?*KgtXyJP!8{_6Fu)}O{F#Z&)M{-wuL|Elq7 z|Eu+<{Hc9azbSvLKipq2|HR*4l*S-$nqP-_>VL|g z+JECyx0|V2e;S_@PyI{zr;b1UsawsI>QDWv##8+%UaddnkM&QyevI|U`?LM~CsVgS zm7nh4)c=$})jxGSy2vk{81skuSs~JBGQh&#u?M>7MK#Oa1SkyY$cLS-q9<@P3=TPpSSC5AV-vJk3v2`_lX~#Z&!h z{$0(V%1`msziR%u%b&XbG(IU_ZC@&X?s)27HD2vswf>YpwJ+tb#;f(G=TmH7`2Cxh zKYTx#`j^_D@~3!eUwpr%_h*V%-><3s6ff2v*XODJ5Rc^-+dp;wrO&xj`_lSCd|CgV z_V9Y7?=ObuU$*_Fk59Tkr;exRW2!&p@5eXIHTv;QpEu>{AKR4YB9F!Xhxc2|UwyxY z`eVFWf5=~*pQZU*il_RQ9{#E1E{#WZy z`BVE+{%X8he>H#qUApmeSl_33YTwlH)V_^U#^nQ%-ncwemeO_$e-2Z-M znxFM8Z2BCpUz#61b2qkOm(RIu>rwq(*7qq>-&^VVmg-N>kMw-b@%HaOr}|U>()={V zQ~BxrQy<^j_@w@wH{ShTed>QIf9m;HDnHGi#M{6Bzw6@@{q*MQn?A?z zwH=$Ebk`-#Pt*K!to-hHH%}Vd#`?qe8)@89`^VbV9nbaOIo5~ad^z?nd_R%$SLfF$ ze~K?{J^jqH_l~7%`}*Y#%X<3OveweW_Fcq&y8cU#r~4<}e<_~I&+*#&cKEy*?x*Kt zjvs%%4f~Uxk7@i;JhiWyKb1dxe-F>^-lJpNVg8HWAFJ2#)2-XDf9lzzWXw*ES@N33 zEamTy|EABW{HLCNcG9$|P5oo3{{Fd}KBxRCzNySl@>se)>H4R5DqsBMJ!?!(KPJiF z)bZhb;-dGv`PrC>;e2kmpXOIx`D5GMpW6H~m7m(*t@FpWWBuxm565f0-=BkTiuaGD z_Vv%*^f~2U`ueQezTq0Tzg}N|9>&kQ-!E^N_mf!vSH~yi?_1sUIpt6O=8kW=XZpvg z?dz9yzR$Jwf3CA#etLeU^1J8Y=r(-6nd0gFn|^+k@>kH0NQ`P))%b^V$0?>+rYGo^95@zgVurqsSve>H!#{8WE6o~}>2{wbcy-}d;_{qLS* zwx|D2pg&f9U;X13^|?C#NcqRw+4ZaX`%7cxcgLrmU#9ZY{4(Z`zke|P{l$7c73a@k zeq7DJ^z~b{eZ&02HS92c*8P5Y!@N&Dd-ue50w=yBSoq(URDC7CbH~g5i}!z8UynZ@ zK5Sb%f2uz{|I_m=#Z&pIecgLtY@70@`p3%cj;H+9cvp|@=J{1O&sgfVTmOu;FU`+W zJgwivr(M5S$G7t_wyl;g|Gd|K?7Cjm@$`In`l)A|Y3#YQl;hreo8Nn<9hd6-Bjr!+ zsOGPhpXQ(4{BT%Lcl@;ZyYq+Jsq@G3FZudE^*_aj>+Ak{ef@bDKkI(KykXw;`hR$A zxZlse>2vDe)baBAIQX4Ap8A*L?e%%Ozf<|u=WohCb$s|-zUckb{#0MeUyY~wmmW|3 zPxIHg<5R7lx_(v5zkcIpGo|uVe)0DB8Xw~`rGa$+rub7go@u6(KgGM}*tTxd`zghz zdjEFo$ZGki{ndDCUn)Q4Pw`ZKim%6ctd4aov6m<28(@@#(MGhim)w`u{BX`(<^XQ~s&r!|@pIPhJ1meRXs^eZNrt`FwSK-_GBE zKAh)s_naEro~O)<%rn-mi#nd#n(9gUtMOESHJ*OXGxfYK%`dk--mML$>PJ`p*f!NW zmTx)7pI%*Wrt120>E);PRpV2S-`wr1_HW+&>Hbaesn`Fh{<-5*zrRxX>HS)Lf2aJ_ z`A5n>R)05dK5zc9a)-xL`6<3`XIEx-t-AenEamUc9otTkf73dD>{xdl#Gs3=J&s4npYHFa$H$&q z-SN5G-?d|^ZR%gDH|0NTd^n%z-brKI;rVCXpL>3`^!le*2lx9tMfv?Q`*m&l+&_1j zpVRuWx;|Ta`Kf)?_|)S!cl)aSn>YWad$xaU?t8Z17N5`lwi%zb<1urT(ROb$u1{U-0^V zSl;kw^4-tXyX~emcmG&gKOQ@G(3kc4e^~!;zn_28=i&Lo{b8NEwx4{af8Q#vH!thv zQDfV&{N3@ieyYx|w|V`4n!b0}VQkx4`>$hT`A&U2{QtD6oVnMd!}W5v?(epn*4+JL z$?vgqH?04M|K8t;{qXzY!!n2a>+3T-c5FZV{5!={`;y`GTuS*z9AYYm~Xy|Ec~IpL=YV-oClVNB!03U-kK&@=qJD zzTeaPwp#wu^LKNuxwdIedl}~Vl|G(z{L=Xs9Z!AhucbGAo_hVC%WwbtaPjvqKKlKP zP2UY1em^kt|36Z#Kjq)Fem~2x?)S6D@>J_j`BQwXT^DtH>gV#(-%qK1>HRI9=3jHq zAFK86cK)>f6L0^1f$`by@v*+2`uSFUKcxKPtvN`V-)wulI)A;WdGuI0X?~yLW94?o zQ~qi^t=EU;r}KyLVgBL%@ciNa@ciNa@ciNa@ciL^`umC$FR%a4uzufE*IDv!I(Il; zXWida=0zUs?t}Ag=U)Gxx7}U7>ho`o=YQ*cHH@Y94bLC$r~D~CEN}bvr=H(k?((hw zwtM~O`ni6)Y+(1l-$?8K^nObDw>v)d{ATL%(|jw{pW@Z|b2kq^?>4Q4Qn}Uqsr)oP z!~DbZ(|R$rf9m|H{AzsD?;P}xrSe!z58wYcp8C|WwEOd-H183= z2m`ykcF;F#V+OX{z(qXclri1AGTmQGAN%_JtoHp%wf>a98o%iEz_7gP`ef6ZsDEr& z-*CTw?xyurYF}ChPMtrMKX-gMKEv@|?+?$p$o*>nt8LlT-~O?#{Qj~2nDpB}w0jZz z)#t<9`8ThbPybBL?LWTmUa!OFdZ%^Y0nAnZF4mjoFXG$1esKLTz8$dtYQA)ekyNx{&2s){+r`-w>}-)rZx@p z4g1&a56`=({nWk`PuK4v(6f6 zUpsvgpSya;wrPDjbv&)ZQ~mw?!#=M6cD*~+KkqD`yZmF@bPZGcQ~s&VrvKlyyZ@(Z zM_2yXHq|?puREUp|KJqw%9(20t^3#8{&T;ZEA@{p@pHfZQ+)2m;k?^!eKMN=#`V>d z>Du+ZW*TkRY3GWm{iiL*c^j`q=Vx2D>AF_?b@kfyW}3SERDU&IZU46CPkzKVKQ~T2 zF4gDv-1)2h5Bbxar#k0Ik5fF&o6Gb2iGTkft&dXu!*yd??_G3!SpRT8 z)%WyM&o)!apW@eV-fE{$J$s_f{bR%Rb*gU|@Bdo^n?4WEKe=D~|JjqDspIMXoI0NW zf7z)?a=8T)+NQ zGbP(8e~PE}SM#UxcRg-?xUBi$@Oq^Ae_DT3^QZEsUVr8CpIzN(q^H9AGspA4@pf{} zdvSUCYx(nh?yvu+Z0C8)&ewO|zn@9|=Z`P@`89l=Ep30--|zZY`~ILh|Gw<`)A~Ss zd)LO7;o7->Yd+KZJjK)dtC~NRFJ60pE^WTIeeId{_ZO<`m!+@YQv1%kZvCY4ooCJ8 z&$C|tZ)$5Amu-nx{ceB$%f0?j@8|TqPx-}b@BcJ@yFS0Z?7v@q8Pv!+a+Bw|f}UzmE$nbv=){%ZbI{$-D+@pXSregDr}{;t1YrtV)_AMbkH{CvCT=dPdY z#{dJD)j)bbSH~rNe=zm@Wa;HwU(7rIuaAH2`-`;xPV3W@f9`l{|Mc-~_qE;aU;6WR z?)IhkV>O=M@740t{2J$7x#Q)VBA2OpH$~> zQO{z^cS)%9_GDh51X+s{|yQyib-{436{isj4So*%c?9%AdY z>9p(rYWdawU$R<%&Ohz?zWV>0ru>uN15e#pwNmx}uZ`=!@O;?$c=i1k^2hNH`K$4{ z>#w$d+w)iE?($muF~Go*4Q%`KdDq*Y>{R=o<`*e`+1LMReB%87#`V%UQ?GAkUtg8i zpYyK&)A~OD|BlnHzw6_>?Dp;a`nS0LPtWfZufBieFMfX?^6&cfOY@_vSNGcK%8gYe zUAy{JEnT~|s->ydSJn2(U%S4>uQq-Qzdwr4kIJ*_FmHH1rsr#V|13Se>+i>XhlApPM{yug8tL3Nh6L0^1P#T}~{7CWY^IQID*Z*^mZ<;@f zSJ!t7U*DAbR~;YuFZVTA`u#C=`?kCMx!+&vU-tYY&QFW;H4Jn;-*#@ z_uu@zJw~-nqm=ehGw zJx8wf&)WC=YhPn`^#az%%f3IBzW%R2Uu)yP{qL7r|INQ@^RHbWzqme``1gyqz5J!G z|F?a7r*41Mf6VXsv-8i;$~B&QepIi&w!Yi``D?BJ^RLmuzi(KMTffeKja`HDUxVGg zKkCol+WNF!f9?5OufN*=W#_NVZRFklxo=wEOdX$k{kQb;)AtKYZ~xNUm;A=R@7aNS ze3$!BU*9hK{XBpF=AM65>u+D*`ucb2>xZSc&)W6;Ygc1eAG@XBA5*ulR(^gzRiEE; z=WoA1a{uLTjnOX8O)o>=()udJm%e_~zG?scx$5{<*YD;0;rV_Uo&j_AF^#`?ZT_*h zw^vH(=P&j7ds+k4=C|elKdbov2iC`@*#DS6jlX#P8XCjt#&F^HNA>wp&0ij$Y3-)> zOa1*-dw-gLw8wAGx#MN1JNcV^3>Ln=thO(%FSoq^@%x?P&(Gud70ciC{F7gw@O+;- zp5`~z|35jmf9{`8RO@fQpHu(q^TVm<-_`P`oxe`EuGx-ur}_J3AD_$Ke?I2EkEecq zR?DyDPw%%JufBih&L7_YSDz})q2l~3)jx5(I{%+~eqC+fWzV0kPl|8*`h4p4$MGw! z&#nKL{WnHaKcAOh{@m~HYW?B;AL7>kbI;G!f7#c_`tKf?&OmK_o!eC{zm`9}-*UYA z{+&C2?fsv}XW8Xf*C+BXdwr7Drzt-5`g!T)&%OShyZ&9jzqkGQoqj%4kEi!n_5Iy0 zzrMasbK~0lsouV+>red`&vW$o#^}nGE7Bz%gC*P4wu^W!O#S?yy8JW-wfgh?Y})xp zeg2f%*Pj36{?D6#*VhM^zJD|Set!CXV(R#%zy1sVek-+a>Cey9zTCg`eyPUO`=woe zo+H-g2YLNH?ffLyKXw07`KkZn+30j*beY$-`d-XCHCYRryALaR7YTvTssej_T{rdye^*JBQ_EEh)Y5gmnp6~7VOZEMf$G=^Fo+HjX zKgjKC&o6d8zcpHYjb;puAp_fKVAr4T)Aw)Q_j{iIEPZ~J+IP9*)%Az`yS=`2edoQt zdHuNb=U01uo8K?h{AqmJ<=5Zu>HS?@AE)xG@oM`ncYf=Z?OeCGZmt^xbp!SH=jDEX zO#l0F)$vX9i(2`4eps8|(6V3Y3HxG{w2=owaIm3fPvE(nD+VU{WQ`#X-`#NQvAKh)+A=D??!13QNk1{h#~f#U|uKWg)j z>F0;--(T4E`FUEOr0;jq^~vMcUO%M#yS(<*w;S>LCm-7%ul;xVQyo;%*2pXdH9JHIvZvVT8f z+kNHsSMTq1f2H!<`RmWe^!%Rp`Fz>mucw)VILBO-0R|XgfPvjIaM|ZS_4#de{yOda zxW4{quMg@!A57&hJMQ~~X}>?newXbdw?D1VQ#|#*oqzi0-?Y!SdizuRb~|o9w_Ec$ z*VFZ6fB^;=IE?}8|LXd^nm^4itL3-z=kSpNDs z`Dm|yv(IY&TKn?zue$zD`K$5t{pN1Ry~{s-mm3RX!2kmcFu(utuoO=DA z$2ZOY+vA_tSGDy~E`RFvTWbHb@#^;j+rPd~<6FJ{wfxiHzqR`_-~a9Vd;9ZWSzT?U z)4ZdcV=lu00}L?000Rsx$3Sat_hD?;=eO1VrS-+M@#)w1X?>U0m*P`?hfx21BVFHV z<8l2T{{Pb$kN02o{@?Zd*8k=!%bBmZ7On*Y3^2d|19bz||JC_>Sl>^)ewljxzqhv+ zQv2Vxn{w^@NtB(gU;6(YV?2I8GVS_1)t}eT!GAeky+7y8pYG46`!x4&ug~j0Uu~D4*RS)gPjmZ<-yh80zxMb}ef{Sz zKiwbO9rq5Yze9|nF=T)N1{h#~0R}FQf!+W9puIkye|=VKUtV7?ef{2EpI7^reb>f+ z`F^bLz0WSs`^>d=tr=i|0R|XgfPuDwygu6Q^~3VlXVvv*`})*>zF%FRPo2O0{YLgZ z?fB>V+t+XD`8{9T&sXDPd>CMW0R|XgfB^;=_}IYG*EiF*Z`$?e(%1j>@lE5G*4HV2 zil_3oJMLNa@w3WU7z+j%V1NMz7+`<_2BtMoUmq@g{gu|2DW3Y5@~3#a{Pg?z^Z))u zyZyWGtKEOkuW6rO#@F~VzyJdbFu(u<3@~tU1}^*hE%!gI?3^2d|0}L=Qt%1wFe#`wYuJ6P8J;r1G+r7TdzyDC{ zpXbN4&ky5kd>LSX0R|XgfB^;=VBoX{()xSq^*P8yzyJdbFu(u<3^2d|1KVw&y1sY)xBL3L zey$$_3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Y}(;NF$JYxh=?F<^iJ1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= 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

lWF=zJ)#?f=a9=<5{K0 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 z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbYLVM z`0AS=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM 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 z8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9h zpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}7 z0UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI z8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9h zpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}7 z0UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI z8lV9hpaB}70UDqI8lV9hpaB}70UDrzOdGHQ1q`174bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ z&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ z&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ z&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ 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 zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12hn3;CH|K9pigI12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb 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 z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f z0Xjej=l~s{19X56&;dF?2k1bm1145VxCV594$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM zbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzM 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

(0eaJ@3{!Q`vUat^U%A_Lhn>)9jBqSpM=&% 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 agvw837z_rhGXh2qQ(1)HEC#@O>hTZiyt4uT From 602e04dc6076663b2eff1aeef0dfc3ab3c554c3c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 19 May 2017 09:02:23 +1200 Subject: [PATCH 50/93] Remove temporary fix --- assignment-client/src/avatars/AvatarMixerClientData.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index 1449005246..76519466b5 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -145,7 +145,7 @@ private: std::unordered_map> _lastOtherAvatarSentJoints; uint64_t _identityChangeTimestamp; - bool _avatarSessionDisplayNameMustChange{ false }; + bool _avatarSessionDisplayNameMustChange{ true }; int _numAvatarsSentLastFrame = 0; int _numFramesSinceAdjustment = 0; From 8efac1e7f187a4465f1f32021b347e8188126f34 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 18 May 2017 14:30:08 -0700 Subject: [PATCH 51/93] Prevent another GIF from being captured while one is processing --- interface/src/Application.cpp | 2 +- interface/src/ui/SnapshotAnimated.h | 1 + scripts/system/html/js/SnapshotReview.js | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1d31a84ed4..c39f7294c0 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6428,7 +6428,7 @@ void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRa if (!includeAnimated) { // Tell the dependency manager that the capture of the still snapshot has taken place. emit DependencyManager::get()->stillSnapshotTaken(path, notify); - } else { + } else if (!SnapshotAnimated::isAlreadyTakingSnapshotAnimated()) { // Get an animated GIF snapshot and save it SnapshotAnimated::saveSnapshotAnimated(path, aspectRatio, qApp, DependencyManager::get()); } diff --git a/interface/src/ui/SnapshotAnimated.h b/interface/src/ui/SnapshotAnimated.h index 1cf21edfb8..dd32e4893d 100644 --- a/interface/src/ui/SnapshotAnimated.h +++ b/interface/src/ui/SnapshotAnimated.h @@ -51,6 +51,7 @@ private: static void processFrames(); public: static void saveSnapshotAnimated(QString pathStill, float aspectRatio, Application* app, QSharedPointer dm); + static bool isAlreadyTakingSnapshotAnimated() { return snapshotAnimatedFirstFrameTimestamp != 0; }; static Setting::Handle alsoTakeAnimatedSnapshot; static Setting::Handle snapshotAnimatedDuration; }; diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index f962c7b624..d52ff3d4a6 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -44,6 +44,7 @@ function showSetupComplete() { '

Snapshot location set.

' + '

Press the big red button to take a snap!

' + ''; + document.getElementById("snap-button").disabled = false; } function showSnapshotInstructions() { var snapshotImagesDiv = document.getElementById("snapshot-images"); @@ -69,7 +70,6 @@ function login() { })); } function clearImages() { - document.getElementById("snap-button").disabled = false; var snapshotImagesDiv = document.getElementById("snapshot-images"); snapshotImagesDiv.classList.remove("snapshotInstructions"); while (snapshotImagesDiv.hasChildNodes()) { @@ -650,6 +650,7 @@ window.onload = function () { shareForUrl("p1"); appendShareBar("p1", messageOptions.isLoggedIn, messageOptions.canShare, true, false, false, messageOptions.canBlast); document.getElementById("p1").classList.remove("processingGif"); + document.getElementById("snap-button").disabled = false; } } else { imageCount = message.image_data.length; @@ -688,6 +689,9 @@ function takeSnapshot() { type: "snapshot", action: "takeSnapshot" })); + if (document.getElementById('stillAndGif').checked === true) { + document.getElementById("snap-button").disabled = true; + } } function testInBrowser(test) { From 17b6cf29df50d53017906f17302532ab9886c525 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 18 May 2017 15:12:59 -0700 Subject: [PATCH 52/93] check for valid resource pointer before use --- libraries/render-utils/src/Model.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 8b26db4a0a..95423d2157 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -810,8 +810,10 @@ void Model::setURL(const QUrl& url) { deleteGeometry(); auto resource = DependencyManager::get()->getGeometryResource(url); - resource->setLoadPriority(this, _loadingPriority); - _renderWatcher.setResource(resource); + if (resource) { + resource->setLoadPriority(this, _loadingPriority); + _renderWatcher.setResource(resource); + } onInvalidate(); } From e99001d86c624b2294d2c0d7a69f80544665708a Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 18 May 2017 16:29:55 -0700 Subject: [PATCH 53/93] debug draw ik chains, bug fix for flex coef on tips And opened up hip constraints. --- .../resources/avatar/avatar-animation.json | 2 +- interface/src/Menu.cpp | 2 + interface/src/Menu.h | 1 + interface/src/avatar/MyAvatar.cpp | 5 ++ interface/src/avatar/MyAvatar.h | 2 + libraries/animation/src/AnimContext.cpp | 3 +- libraries/animation/src/AnimContext.h | 6 +- .../animation/src/AnimInverseKinematics.cpp | 84 +++++++++---------- libraries/animation/src/Rig.cpp | 4 +- libraries/animation/src/Rig.h | 2 + 10 files changed, 62 insertions(+), 49 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 55f86f7f44..b0d27ee04b 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -113,7 +113,7 @@ "typeVar": "headType", "weightVar": "headWeight", "weight": 4.0, - "flexCoefficients": [1, 0.35, 0.5, 0.35, 0.25] + "flexCoefficients": [1, 0.05, 0.25, 0.25, 0.25] } ] }, diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index f5f248602d..8461b1d42a 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -525,6 +525,8 @@ Menu::Menu() { avatar.get(), SLOT(setEnableDebugDrawIKTargets(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKConstraints, 0, false, avatar.get(), SLOT(setEnableDebugDrawIKConstraints(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKChains, 0, false, + avatar.get(), SLOT(setEnableDebugDrawIKChains(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ActionMotorControl, Qt::CTRL | Qt::SHIFT | Qt::Key_K, true, avatar.get(), SLOT(updateMotionBehaviorFromMenu()), diff --git a/interface/src/Menu.h b/interface/src/Menu.h index b1f69a28d3..b6d72f5446 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -162,6 +162,7 @@ namespace MenuOption { const QString RenderSensorToWorldMatrix = "Show SensorToWorld Matrix"; const QString RenderIKTargets = "Show IK Targets"; const QString RenderIKConstraints = "Show IK Constraints"; + const QString RenderIKChains = "Show IK Chains"; const QString ResetAvatarSize = "Reset Avatar Size"; const QString ResetSensors = "Reset Sensors"; const QString RunningScripts = "Running Scripts..."; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9cf8e7747b..b8d6a4cfa4 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -531,6 +531,7 @@ void MyAvatar::simulate(float deltaTime) { if (_rig) { _rig->setEnableDebugDrawIKTargets(_enableDebugDrawIKTargets); _rig->setEnableDebugDrawIKConstraints(_enableDebugDrawIKConstraints); + _rig->setEnableDebugDrawIKChains(_enableDebugDrawIKChains); } _skeletonModel->simulate(deltaTime); @@ -958,6 +959,10 @@ void MyAvatar::setEnableDebugDrawIKConstraints(bool isEnabled) { _enableDebugDrawIKConstraints = isEnabled; } +void MyAvatar::setEnableDebugDrawIKChains(bool isEnabled) { + _enableDebugDrawIKChains = isEnabled; +} + void MyAvatar::setEnableMeshVisible(bool isEnabled) { _skeletonModel->setVisibleInScene(isEnabled, qApp->getMain3DScene()); } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 394d6b2ac7..95643f3bd4 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -524,6 +524,7 @@ public slots: void setEnableDebugDrawSensorToWorldMatrix(bool isEnabled); void setEnableDebugDrawIKTargets(bool isEnabled); void setEnableDebugDrawIKConstraints(bool isEnabled); + void setEnableDebugDrawIKChains(bool isEnabled); bool getEnableMeshVisible() const { return _skeletonModel->isVisible(); } void setEnableMeshVisible(bool isEnabled); void setUseAnimPreAndPostRotations(bool isEnabled); @@ -718,6 +719,7 @@ private: bool _enableDebugDrawSensorToWorldMatrix { false }; bool _enableDebugDrawIKTargets { false }; bool _enableDebugDrawIKConstraints { false }; + bool _enableDebugDrawIKChains { false }; AudioListenerMode _audioListenerMode; glm::vec3 _customListenPosition; diff --git a/libraries/animation/src/AnimContext.cpp b/libraries/animation/src/AnimContext.cpp index 70ca3764b0..c8efd83318 100644 --- a/libraries/animation/src/AnimContext.cpp +++ b/libraries/animation/src/AnimContext.cpp @@ -10,10 +10,11 @@ #include "AnimContext.h" -AnimContext::AnimContext(bool enableDebugDrawIKTargets, bool enableDebugDrawIKConstraints, +AnimContext::AnimContext(bool enableDebugDrawIKTargets, bool enableDebugDrawIKConstraints, bool enableDebugDrawIKChains, const glm::mat4& geometryToRigMatrix, const glm::mat4& rigToWorldMatrix) : _enableDebugDrawIKTargets(enableDebugDrawIKTargets), _enableDebugDrawIKConstraints(enableDebugDrawIKConstraints), + _enableDebugDrawIKChains(enableDebugDrawIKChains), _geometryToRigMatrix(geometryToRigMatrix), _rigToWorldMatrix(rigToWorldMatrix) { diff --git a/libraries/animation/src/AnimContext.h b/libraries/animation/src/AnimContext.h index f68535005c..e8bf5c34eb 100644 --- a/libraries/animation/src/AnimContext.h +++ b/libraries/animation/src/AnimContext.h @@ -16,18 +16,20 @@ class AnimContext { public: - AnimContext(bool enableDebugDrawIKTargets, bool enableDebugDrawIKConstraints, + AnimContext(bool enableDebugDrawIKTargets, bool enableDebugDrawIKConstraints, bool enableDebugDrawIKChains, const glm::mat4& geometryToRigMatrix, const glm::mat4& rigToWorldMatrix); bool getEnableDebugDrawIKTargets() const { return _enableDebugDrawIKTargets; } bool getEnableDebugDrawIKConstraints() const { return _enableDebugDrawIKConstraints; } + bool getEnableDebugDrawIKChains() const { return _enableDebugDrawIKChains; } const glm::mat4& getGeometryToRigMatrix() const { return _geometryToRigMatrix; } const glm::mat4& getRigToWorldMatrix() const { return _rigToWorldMatrix; } protected: bool _enableDebugDrawIKTargets { false }; - bool _enableDebugDrawIKConstraints{ false }; + bool _enableDebugDrawIKConstraints { false }; + bool _enableDebugDrawIKChains { false }; glm::mat4 _geometryToRigMatrix; glm::mat4 _rigToWorldMatrix; }; diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 70c47c6609..d613e42866 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -193,9 +193,10 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& while (maxError > MAX_ERROR_TOLERANCE && numLoops < MAX_IK_LOOPS) { ++numLoops; + bool debug = context.getEnableDebugDrawIKChains() && numLoops == MAX_IK_LOOPS; + // solve all targets for (auto& target: targets) { - bool debug = false; solveTargetWithCCD(context, target, absolutePoses, debug); } @@ -292,15 +293,11 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const // rotate tip toward target orientation glm::quat deltaRot = target.getRotation() * glm::inverse(tipOrientation); - // decompose deltaRot into axis angle - glm::vec3 axis = glm::axis(deltaRot); - float angle = glm::angle(deltaRot); - - // apply flexCoefficent and re-compose quat - glm::quat deltaRotation = glm::angleAxis(angle * target.getFlexCoefficient(chainDepth), axis); + deltaRot *= target.getFlexCoefficient(chainDepth); + glm::normalize(deltaRot); // compute parent relative rotation - glm::quat tipRelativeRotation = glm::inverse(tipParentOrientation) * deltaRotation * tipOrientation; + glm::quat tipRelativeRotation = glm::inverse(tipParentOrientation) * deltaRot * tipOrientation; // then enforce tip's constraint RotationConstraint* constraint = getConstraint(tipIndex); @@ -680,8 +677,8 @@ static void setEllipticalSwingLimits(SwingTwistConstraint* stConstraint, float l float dTheta = TWO_PI / NUM_SUBDIVISIONS; float theta = 0.0f; for (int i = 0; i < NUM_SUBDIVISIONS; i++) { - float theta_prime = atanf((lateralSwingPhi / anteriorSwingPhi) * tanf(theta)); - float phi = (cosf(2.0f * theta_prime) * ((lateralSwingPhi - anteriorSwingPhi) / 2.0f)) + ((lateralSwingPhi + anteriorSwingPhi) / 2.0f); + float theta_prime = atanf((anteriorSwingPhi / lateralSwingPhi) * tanf(theta)); + float phi = (cosf(2.0f * theta_prime) * ((anteriorSwingPhi - lateralSwingPhi) / 2.0f)) + ((anteriorSwingPhi + lateralSwingPhi) / 2.0f); minDots.push_back(cosf(phi)); theta += dTheta; } @@ -793,27 +790,36 @@ void AnimInverseKinematics::initConstraints() { std::vector swungDirections; float deltaTheta = PI / 4.0f; float theta = 0.0f; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), -0.25f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), 1.0f, sinf(theta))); // posterior theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.0f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.5f, sinf(theta))); theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.25f, sinf(theta))); // posterior + swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.25f, sinf(theta))); theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.0f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), -1.5f, sinf(theta))); theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), -0.25f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), -3.0f, sinf(theta))); // anterior theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), -0.5f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), -1.5f, sinf(theta))); theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), -0.5f, sinf(theta))); // anterior + swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.25f, sinf(theta))); theta += deltaTheta; - swungDirections.push_back(glm::vec3(mirror * cosf(theta), -0.5f, sinf(theta))); + swungDirections.push_back(glm::vec3(mirror * cosf(theta), 0.5f, sinf(theta))); std::vector minDots; for (size_t i = 0; i < swungDirections.size(); i++) { minDots.push_back(glm::dot(glm::normalize(swungDirections[i]), Vectors::UNIT_Y)); } stConstraint->setSwingLimits(minDots); + + /* + // simple cone + std::vector minDots; + const float MAX_HAND_SWING = 2.9f; // 170 deg //2 * PI / 3.0f; + minDots.push_back(cosf(MAX_HAND_SWING)); + stConstraint->setSwingLimits(minDots); + */ + constraint = static_cast(stConstraint); } else if (0 == baseName.compare("Hand", Qt::CaseSensitive)) { SwingTwistConstraint* stConstraint = new SwingTwistConstraint(); @@ -861,7 +867,7 @@ void AnimInverseKinematics::initConstraints() { } else if (baseName.startsWith("Shoulder", Qt::CaseSensitive)) { SwingTwistConstraint* stConstraint = new SwingTwistConstraint(); stConstraint->setReferenceRotation(_defaultRelativePoses[i].rot()); - const float MAX_SHOULDER_TWIST = PI / 20.0f; + const float MAX_SHOULDER_TWIST = PI / 10.0f; stConstraint->setTwistLimits(-MAX_SHOULDER_TWIST, MAX_SHOULDER_TWIST); std::vector minDots; @@ -895,8 +901,8 @@ void AnimInverseKinematics::initConstraints() { stConstraint->setTwistLimits(-MAX_NECK_TWIST, MAX_NECK_TWIST); // limit lateral swings more then forward-backward swings - const float MAX_NECK_LATERAL_SWING = PI / 8.0f; - const float MAX_NECK_ANTERIOR_SWING = PI / 6.0f; + const float MAX_NECK_LATERAL_SWING = PI / 12.0f; + const float MAX_NECK_ANTERIOR_SWING = PI / 10.0f; setEllipticalSwingLimits(stConstraint, MAX_NECK_LATERAL_SWING, MAX_NECK_ANTERIOR_SWING); constraint = static_cast(stConstraint); @@ -906,10 +912,10 @@ void AnimInverseKinematics::initConstraints() { const float MAX_HEAD_TWIST = PI / 6.0f; stConstraint->setTwistLimits(-MAX_HEAD_TWIST, MAX_HEAD_TWIST); - std::vector minDots; - const float MAX_HEAD_SWING = PI / 6.0f; - minDots.push_back(cosf(MAX_HEAD_SWING)); - stConstraint->setSwingLimits(minDots); + // limit lateral swings more then forward-backward swings + const float MAX_NECK_LATERAL_SWING = PI / 4.0f; + const float MAX_NECK_ANTERIOR_SWING = PI / 3.0f; + setEllipticalSwingLimits(stConstraint, MAX_NECK_LATERAL_SWING, MAX_NECK_ANTERIOR_SWING); constraint = static_cast(stConstraint); } else if (0 == baseName.compare("ForeArm", Qt::CaseSensitive)) { @@ -1066,7 +1072,7 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele static glm::vec3 sphericalToCartesian(float phi, float theta) { float cos_phi = cosf(phi); float sin_phi = sinf(phi); - return glm::vec3(sin_phi * cosf(theta), cos_phi, -sin_phi * sinf(theta)); + return glm::vec3(sin_phi * cosf(theta), cos_phi, sin_phi * sinf(theta)); } void AnimInverseKinematics::debugDrawRelativePoses(const AnimContext& context) const { @@ -1167,20 +1173,12 @@ void AnimInverseKinematics::debugDrawConstraints(const AnimContext& context) con const vec4 CYAN(0.0f, 1.0f, 1.0f, 1.0f); const vec4 GRAY(0.2f, 0.2f, 0.2f, 1.0f); const vec4 MAGENTA(1.0f, 0.0f, 1.0f, 1.0f); - const float AXIS_LENGTH = 2.0f; // cm + const float AXIS_LENGTH = 5.0f; // cm const float TWIST_LENGTH = 4.0f; // cm - const float HINGE_LENGTH = 6.0f; // cm - const float SWING_LENGTH = 5.0f; // cm + const float HINGE_LENGTH = 4.0f; // cm + const float SWING_LENGTH = 4.0f; // cm - AnimPoseVec poses = _skeleton->getRelativeDefaultPoses(); - - // copy reference rotations into the relative poses - for (int i = 0; i < (int)poses.size(); i++) { - const RotationConstraint* constraint = getConstraint(i); - if (constraint) { - poses[i].rot() = constraint->getReferenceRotation(); - } - } + AnimPoseVec poses = _relativePoses; // convert relative poses to absolute _skeleton->convertRelativePosesToAbsolute(poses); @@ -1238,8 +1236,8 @@ void AnimInverseKinematics::debugDrawConstraints(const AnimContext& context) con glm::vec3 hingeAxis = transformVectorFast(geomToWorldMatrix, parentAbsRot * refRot * Vectors::UNIT_Y); DebugDraw::getInstance().drawRay(pos, pos + HINGE_LENGTH * hingeAxis, MAGENTA); - glm::quat minRot = glm::angleAxis(swingTwistConstraint->getMinTwist(), Vectors::UNIT_Y); - glm::quat maxRot = glm::angleAxis(swingTwistConstraint->getMaxTwist(), Vectors::UNIT_Y); + glm::quat minRot = glm::angleAxis(swingTwistConstraint->getMinTwist(), refRot * Vectors::UNIT_Y); + glm::quat maxRot = glm::angleAxis(swingTwistConstraint->getMaxTwist(), refRot * Vectors::UNIT_Y); const int NUM_SWING_STEPS = 10; for (int i = 0; i < NUM_SWING_STEPS + 1; i++) { @@ -1251,17 +1249,18 @@ void AnimInverseKinematics::debugDrawConstraints(const AnimContext& context) con // draw swing constraints. const size_t NUM_MIN_DOTS = swingTwistConstraint->getMinDots().size(); const float D_THETA = TWO_PI / (NUM_MIN_DOTS - 1); + const float PI_2 = PI / 2.0f; float theta = 0.0f; for (size_t i = 0, j = NUM_MIN_DOTS - 2; i < NUM_MIN_DOTS - 1; j = i, i++, theta += D_THETA) { // compute swing rotation from theta and phi angles. float phi = acosf(swingTwistConstraint->getMinDots()[i]); - glm::vec3 swungAxis = sphericalToCartesian(phi, theta); + glm::vec3 swungAxis = sphericalToCartesian(phi, theta - PI_2); glm::vec3 worldSwungAxis = transformVectorFast(geomToWorldMatrix, parentAbsRot * refRot * swungAxis); glm::vec3 swingTip = pos + SWING_LENGTH * worldSwungAxis; float prevPhi = acos(swingTwistConstraint->getMinDots()[j]); float prevTheta = theta - D_THETA; - glm::vec3 prevSwungAxis = sphericalToCartesian(prevPhi, prevTheta); + glm::vec3 prevSwungAxis = sphericalToCartesian(prevPhi, prevTheta - PI_2); glm::vec3 prevWorldSwungAxis = transformVectorFast(geomToWorldMatrix, parentAbsRot * refRot * prevSwungAxis); glm::vec3 prevSwingTip = pos + SWING_LENGTH * prevWorldSwungAxis; @@ -1270,7 +1269,6 @@ void AnimInverseKinematics::debugDrawConstraints(const AnimContext& context) con } } } - pose.rot() = constraint->computeCenterRotation(); } } } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 23db05eb73..fe1a3bfab2 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -954,7 +954,7 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons updateAnimationStateHandlers(); _animVars.setRigToGeometryTransform(_rigToGeometryTransform); - AnimContext context(_enableDebugDrawIKTargets, _enableDebugDrawIKConstraints, + AnimContext context(_enableDebugDrawIKTargets, _enableDebugDrawIKConstraints, _enableDebugDrawIKChains, getGeometryToRigTransform(), rigToWorldTransform); // evaluate the animation @@ -1452,7 +1452,7 @@ void Rig::computeAvatarBoundingCapsule( // call overlay twice: once to verify AnimPoseVec joints and again to do the IK AnimNode::Triggers triggersOut; - AnimContext context(false, false, glm::mat4(), glm::mat4()); + AnimContext context(false, false, false, glm::mat4(), glm::mat4()); float dt = 1.0f; // the value of this does not matter ikNode.overlay(animVars, context, dt, triggersOut, _animSkeleton->getRelativeBindPoses()); AnimPoseVec finalPoses = ikNode.overlay(animVars, context, dt, triggersOut, _animSkeleton->getRelativeBindPoses()); diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index 33b66f91ea..b5ff172f22 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -232,6 +232,7 @@ public: void setEnableDebugDrawIKTargets(bool enableDebugDrawIKTargets) { _enableDebugDrawIKTargets = enableDebugDrawIKTargets; } void setEnableDebugDrawIKConstraints(bool enableDebugDrawIKConstraints) { _enableDebugDrawIKConstraints = enableDebugDrawIKConstraints; } + void setEnableDebugDrawIKChains(bool enableDebugDrawIKChains) { _enableDebugDrawIKChains = enableDebugDrawIKChains; } // input assumed to be in rig space void computeHeadFromHMD(const AnimPose& hmdPose, glm::vec3& headPositionOut, glm::quat& headOrientationOut) const; @@ -343,6 +344,7 @@ protected: bool _enableDebugDrawIKTargets { false }; bool _enableDebugDrawIKConstraints { false }; + bool _enableDebugDrawIKChains { false }; private: QMap _stateHandlers; From eb9acad42ea7ac002e51d51280dbddeb6d3698d8 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 18 May 2017 16:35:56 -0700 Subject: [PATCH 54/93] Update content set URL for RC40 --- server-console/src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 4ce1ccfb02..98bda9a10f 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -42,7 +42,7 @@ const appIcon = path.join(__dirname, '../resources/console.png'); const DELETE_LOG_FILES_OLDER_THAN_X_SECONDS = 60 * 60 * 24 * 7; // 7 Days const LOG_FILE_REGEX = /(domain-server|ac-monitor|ac)-.*-std(out|err).txt/; -const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-RC39.tar.gz"; +const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-RC40.tar.gz"; function getBuildInfo() { var buildInfoPath = null; From 303bb05b3d698dabe986628a31f269575f2e8865 Mon Sep 17 00:00:00 2001 From: Marko Kudjerski Date: Tue, 16 May 2017 18:51:48 -0700 Subject: [PATCH 55/93] changing the location in welcome to which a user is sent on the first run --- libraries/networking/src/AddressManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index c66fe8daf0..629a594f92 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -30,7 +30,7 @@ #include "udt/PacketHeaders.h" #if USE_STABLE_GLOBAL_SERVICES -const QString DEFAULT_HIFI_ADDRESS = "hifi://welcome"; +const QString DEFAULT_HIFI_ADDRESS = "hifi://welcome/hello"; #else const QString DEFAULT_HIFI_ADDRESS = "hifi://dev-welcome"; #endif From 986d63cdbb30d1ca04f1afaf5c6d0c442460d6a3 Mon Sep 17 00:00:00 2001 From: Marko Kudjerski Date: Tue, 16 May 2017 19:28:44 -0700 Subject: [PATCH 56/93] making sure that the first time landing in *welcome domain is updated for dev builds too --- libraries/networking/src/AddressManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index 629a594f92..8fc1d66cf1 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -32,7 +32,7 @@ #if USE_STABLE_GLOBAL_SERVICES const QString DEFAULT_HIFI_ADDRESS = "hifi://welcome/hello"; #else -const QString DEFAULT_HIFI_ADDRESS = "hifi://dev-welcome"; +const QString DEFAULT_HIFI_ADDRESS = "hifi://dev-welcome/hello"; #endif const QString ADDRESS_MANAGER_SETTINGS_GROUP = "AddressManager"; From 6765451cc82a9f31e6d9309d8a71c4caecaa07a9 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 19 May 2017 10:36:31 -0700 Subject: [PATCH 57/93] Ensure snapshots without story_ids get uploaded --- scripts/system/html/js/SnapshotReview.js | 2 +- scripts/system/snapshot.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index d52ff3d4a6..6c5829d64f 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -300,7 +300,7 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi if (!isGifLoading) { appendShareBar(id, isLoggedIn, canShare, isGif, blastButtonDisabled, hifiButtonDisabled, canBlast); } - if (!isGifLoading && !isShowingPreviousImages) { + if (!isGifLoading || (isShowingPreviousImages && !image_data.story_id)) { shareForUrl(id); } if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 8b5ae3c9a7..4c661482fc 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -138,10 +138,10 @@ function onMessage(message) { isLoggedIn = Account.isLoggedIn(); if (isLoggedIn) { print('Sharing snapshot with audience "for_url":', message.data); - Window.shareSnapshot(message.data, message.href || href); + Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); } else { shareAfterLogin = true; - snapshotToShareAfterLogin.push({ path: message.data, href: message.href || href }); + snapshotToShareAfterLogin.push({ path: message.data, href: Settings.getValue("previousSnapshotHref") }); } } }); @@ -349,6 +349,7 @@ function takeSnapshot() { // We will record snapshots based on the starting location. That could change, e.g., when recording a .gif. // Even the domainId could change (e.g., if the user falls into a teleporter while recording). href = location.href; + Settings.setValue("previousSnapshotHref", href); domainId = location.domainId; Settings.setValue("previousSnapshotDomainID", domainId); From 621d94eb91fbfd75da646d0a8e33ecbba7d207fa Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 19 May 2017 10:38:16 -0700 Subject: [PATCH 58/93] removed temp comments --- libraries/animation/src/IKTarget.cpp | 1 - libraries/animation/src/Rig.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/libraries/animation/src/IKTarget.cpp b/libraries/animation/src/IKTarget.cpp index c67c0621c3..2fe767b08d 100644 --- a/libraries/animation/src/IKTarget.cpp +++ b/libraries/animation/src/IKTarget.cpp @@ -23,7 +23,6 @@ void IKTarget::setFlexCoefficients(size_t numFlexCoefficientsIn, const float* fl float IKTarget::getFlexCoefficient(size_t chainDepth) const { const float DEFAULT_FLEX_COEFFICIENT = 0.5f; - if (chainDepth < _numFlexCoefficients) { return _flexCoefficients[chainDepth]; } else { diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index fe1a3bfab2..99d2deb323 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1403,7 +1403,6 @@ void Rig::computeAvatarBoundingCapsule( AnimInverseKinematics ikNode("boundingShape"); ikNode.setSkeleton(_animSkeleton); - // AJT: FIX ME!!!!! ensure that empty weights vector does something reasonable.... ikNode.setTargetVars("LeftHand", "leftHandPosition", "leftHandRotation", From c2e2682effa3c048591b2311a248fb7c23a08b0d Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 19 May 2017 10:48:38 -0700 Subject: [PATCH 59/93] Fix "Reset Settings" window poping up every time --- interface/src/Application.cpp | 8 ++++---- interface/src/Application.h | 2 +- interface/src/CrashHandler.cpp | 5 +---- interface/src/CrashHandler.h | 2 +- interface/src/main.cpp | 3 ++- libraries/shared/src/RunningMarker.cpp | 7 ++++++- libraries/shared/src/RunningMarker.h | 4 +++- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c39f7294c0..bd66a96879 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -431,7 +431,7 @@ static const QString STATE_ADVANCED_MOVEMENT_CONTROLS = "AdvancedMovement"; static const QString STATE_GROUNDED = "Grounded"; static const QString STATE_NAV_FOCUSED = "NavigationFocused"; -bool setupEssentials(int& argc, char** argv) { +bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { const char** constArgv = const_cast(argv); const char* portStr = getCmdOption(argc, constArgv, "--listenPort"); const int listenPort = portStr ? atoi(portStr) : INVALID_PORT; @@ -458,7 +458,7 @@ bool setupEssentials(int& argc, char** argv) { static const auto SUPPRESS_SETTINGS_RESET = "--suppress-settings-reset"; bool suppressPrompt = cmdOptionExists(argc, const_cast(argv), SUPPRESS_SETTINGS_RESET); - bool previousSessionCrashed = CrashHandler::checkForResetSettings(suppressPrompt); + bool previousSessionCrashed = CrashHandler::checkForResetSettings(runningMarkerExisted, suppressPrompt); DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); @@ -563,11 +563,11 @@ const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = true; const bool DEFAULT_HMD_TABLET_BECOMES_TOOLBAR = false; const bool DEFAULT_PREFER_AVATAR_FINGER_OVER_STYLUS = false; -Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : +Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bool runningMarkerExisted) : QApplication(argc, argv), _window(new MainWindow(desktop())), _sessionRunTimer(startupTimer), - _previousSessionCrashed(setupEssentials(argc, argv)), + _previousSessionCrashed(setupEssentials(argc, argv, runningMarkerExisted)), _undoStackScriptingInterface(&_undoStack), _entitySimulation(new PhysicalEntitySimulation()), _physicsEngine(new PhysicsEngine(Vectors::ZERO)), diff --git a/interface/src/Application.h b/interface/src/Application.h index 5cf3580c09..d9dc3f389f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -136,7 +136,7 @@ public: static void initPlugins(const QStringList& arguments); static void shutdownPlugins(); - Application(int& argc, char** argv, QElapsedTimer& startup_time); + Application(int& argc, char** argv, QElapsedTimer& startup_time, bool runningMarkerExisted); ~Application(); void postLambdaEvent(std::function f) override; diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp index b254cd58de..8081dd3ffc 100644 --- a/interface/src/CrashHandler.cpp +++ b/interface/src/CrashHandler.cpp @@ -28,7 +28,7 @@ #include -bool CrashHandler::checkForResetSettings(bool suppressPrompt) { +bool CrashHandler::checkForResetSettings(bool wasLikelyCrash, bool suppressPrompt) { Settings settings; settings.beginGroup("Developer"); QVariant displayCrashOptions = settings.value(MenuOption::DisplayCrashOptions); @@ -39,9 +39,6 @@ bool CrashHandler::checkForResetSettings(bool suppressPrompt) { // If option does not exist in Interface.ini so assume default behavior. bool displaySettingsResetOnCrash = !displayCrashOptions.isValid() || displayCrashOptions.toBool(); - QFile runningMarkerFile(RunningMarker::getMarkerFilePath(RUNNING_MARKER_FILENAME)); - bool wasLikelyCrash = runningMarkerFile.exists(); - if (suppressPrompt) { return wasLikelyCrash; } diff --git a/interface/src/CrashHandler.h b/interface/src/CrashHandler.h index 308cac3411..da2e1575db 100644 --- a/interface/src/CrashHandler.h +++ b/interface/src/CrashHandler.h @@ -17,7 +17,7 @@ class CrashHandler { public: - static bool checkForResetSettings(bool suppressPrompt = false); + static bool checkForResetSettings(bool wasLikelyCrash, bool suppressPrompt = false); private: enum Action { diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 3430ffbd15..49517eb38e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -192,6 +192,7 @@ int main(int argc, const char* argv[]) { int exitCode; { RunningMarker runningMarker(nullptr, RUNNING_MARKER_FILENAME); + bool runningMarkerExisted = runningMarker.fileExists(); runningMarker.writeRunningMarkerFile(); bool noUpdater = parser.isSet(noUpdaterOption); @@ -202,7 +203,7 @@ int main(int argc, const char* argv[]) { SandboxUtils::runLocalSandbox(serverContentPath, true, RUNNING_MARKER_FILENAME, noUpdater); } - Application app(argc, const_cast(argv), startupTime); + Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); // Now that the main event loop is setup, launch running marker thread runningMarker.startRunningMarker(); diff --git a/libraries/shared/src/RunningMarker.cpp b/libraries/shared/src/RunningMarker.cpp index f8aaee42df..0c1fd06df8 100644 --- a/libraries/shared/src/RunningMarker.cpp +++ b/libraries/shared/src/RunningMarker.cpp @@ -53,6 +53,11 @@ RunningMarker::~RunningMarker() { _runningMarkerThread->deleteLater(); } +bool RunningMarker::fileExists() const { + QFile runningMarkerFile(getFilePath()); + return runningMarkerFile.exists(); +} + void RunningMarker::writeRunningMarkerFile() { QFile runningMarkerFile(getFilePath()); @@ -69,7 +74,7 @@ void RunningMarker::deleteRunningMarkerFile() { } } -QString RunningMarker::getFilePath() { +QString RunningMarker::getFilePath() const { return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + _name; } diff --git a/libraries/shared/src/RunningMarker.h b/libraries/shared/src/RunningMarker.h index 1137dbf5fa..f9c8e72d37 100644 --- a/libraries/shared/src/RunningMarker.h +++ b/libraries/shared/src/RunningMarker.h @@ -25,9 +25,11 @@ public: void startRunningMarker(); - QString getFilePath(); + QString getFilePath() const; static QString getMarkerFilePath(QString name); + bool fileExists() const; + void writeRunningMarkerFile(); void deleteRunningMarkerFile(); From 6ae2e6778e33dd1b27ac9797659b0dcbd3798c92 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 19 May 2017 10:51:09 -0700 Subject: [PATCH 60/93] ensure left and right arm flexCoeff are the same. --- interface/resources/avatar/avatar-animation.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index b0d27ee04b..f88e322d99 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -68,7 +68,7 @@ "typeVar": "rightHandType", "weightVar": "rightHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.25, 0.1, 0.05, 0.01, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0] }, { "jointName": "LeftHand", @@ -77,7 +77,7 @@ "typeVar": "leftHandType", "weightVar": "leftHandWeight", "weight": 1.0, - "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.00, 0.00, 0.00, 0.0, 0.0] + "flexCoefficients": [1, 0.5, 0.5, 0.2, 0.01, 0.005, 0.001, 0.0, 0.0] }, { "jointName": "RightFoot", From c36b85bb059c30df5d1ebd84a878fc288e6c3431 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 11:11:00 -0700 Subject: [PATCH 61/93] Add notes to KtxStorage::maybeOpenFile --- libraries/gpu/src/gpu/Texture_ktx.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 92ead5f616..9799aecdf5 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -184,6 +184,11 @@ KtxStorage::KtxStorage(const std::string& filename) : _filename(filename) { } std::shared_ptr KtxStorage::maybeOpenFile() const { + // 1. Try to get the shared ptr + // 2. If it doesn't exist, grab the mutex around its creation + // 3. If it was created before we got the mutex, return it + // 4. Otherwise, create it + std::shared_ptr file = _cacheFile.lock(); if (file) { return file; From 64bf5784e6513b56ac0a587b310ad639b03c3e96 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 11:16:20 -0700 Subject: [PATCH 62/93] Fix FileStorage to not close files after they are opened This is particularly an issue with KTX file reading/writing where we do both concurrently. --- libraries/gpu/src/gpu/Texture_ktx.cpp | 12 +++++--- libraries/shared/src/shared/Storage.cpp | 41 ++++++------------------- libraries/shared/src/shared/Storage.h | 3 +- 3 files changed, 18 insertions(+), 38 deletions(-) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 9799aecdf5..bf5b4d7965 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -210,7 +210,6 @@ std::shared_ptr KtxStorage::maybeOpenFile() const { } PixelsPointer KtxStorage::getMipFace(uint16 level, uint8 face) const { - storage::StoragePointer result; auto faceOffset = _ktxDescriptor->getMipFaceTexelsOffset(level, face); auto faceSize = _ktxDescriptor->getMipFaceTexelsSize(level, face); if (faceSize != 0 && faceOffset != 0) { @@ -226,7 +225,7 @@ PixelsPointer KtxStorage::getMipFace(uint16 level, uint8 face) const { qWarning() << "Failed to get a valid file out of maybeOpenFile " << QString::fromStdString(_filename); } } - return result; + return nullptr; } Size KtxStorage::getMipFaceSize(uint16 level, uint8 face) const { @@ -260,8 +259,13 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor } auto file = maybeOpenFile(); + if (!file) { + qWarning() << "Failed to open file to assign mip data " << QString::fromStdString(_filename); + return; + } - auto imageData = file->mutableData(); + auto fileData = file->mutableData(); + auto imageData = fileData; imageData += ktx::KTX_HEADER_SIZE + _ktxDescriptor->header.bytesOfKeyValueData + _ktxDescriptor->images[level]._imageOffset; imageData += ktx::IMAGE_SIZE_WIDTH; @@ -276,7 +280,7 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor memcpy(imageData, storage->data(), storage->size()); _minMipLevelAvailable = level; if (_offsetToMinMipKV > 0) { - auto minMipKeyData = file->mutableData() + ktx::KTX_HEADER_SIZE + _offsetToMinMipKV; + auto minMipKeyData = fileData + ktx::KTX_HEADER_SIZE + _offsetToMinMipKV; memcpy(minMipKeyData, (void*)&_minMipLevelAvailable, 1); } } diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index e479559e6a..b07f896df0 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -70,7 +70,15 @@ StoragePointer FileStorage::create(const QString& filename, size_t size, const u } FileStorage::FileStorage(const QString& filename) : _file(filename) { - if (_file.open(QFile::ReadOnly)) { + bool opened = _file.open(QFile::ReadWrite); + if (opened) { + _hasWriteAccess = true; + } else { + _hasWriteAccess = false; + opened = _file.open(QFile::ReadOnly); + } + + if (opened) { _mapped = _file.map(0, _file.size()); if (_mapped) { _valid = true; @@ -91,35 +99,4 @@ FileStorage::~FileStorage() { if (_file.isOpen()) { _file.close(); } -} - -void FileStorage::ensureWriteAccess() { - if (_hasWriteAccess) { - return; - } - - if (_mapped) { - if (!_file.unmap(_mapped)) { - throw std::runtime_error("Unable to unmap file"); - } - } - if (_file.isOpen()) { - _file.close(); - } - _valid = false; - _mapped = nullptr; - - if (_file.open(QFile::ReadWrite)) { - _mapped = _file.map(0, _file.size()); - if (_mapped) { - _valid = true; - _hasWriteAccess = true; - } else { - qCWarning(storagelogging) << "Failed to map file " << _file.fileName(); - throw std::runtime_error("Failed to map file"); - } - } else { - qCWarning(storagelogging) << "Failed to open file " << _file.fileName(); - throw std::runtime_error("Failed to open file"); - } } \ No newline at end of file diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index 4cad9fa083..d7946738cf 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -60,11 +60,10 @@ namespace storage { FileStorage& operator=(const FileStorage& other) = delete; const uint8_t* data() const override { return _mapped; } - uint8_t* mutableData() override { ensureWriteAccess(); return _mapped; } + uint8_t* mutableData() override { return _hasWriteAccess ? _mapped : nullptr; } size_t size() const override { return _file.size(); } operator bool() const override { return _valid; } private: - void ensureWriteAccess(); bool _valid { false }; bool _hasWriteAccess { false }; From 7b879a7964c5ed2b6ee19144538401df6d8774d2 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 19 May 2017 13:24:16 -0700 Subject: [PATCH 63/93] Model has a Rig rather than a RigPointer --- interface/src/avatar/AvatarManager.cpp | 4 +- interface/src/avatar/MyAvatar.cpp | 103 +++++++++--------- interface/src/avatar/MyAvatar.h | 7 +- interface/src/avatar/MySkeletonModel.cpp | 12 +- interface/src/avatar/MySkeletonModel.h | 2 +- interface/src/ui/overlays/ModelOverlay.cpp | 14 +-- libraries/animation/src/Rig.h | 1 - .../src/avatars-renderer/Avatar.cpp | 47 ++++---- .../src/avatars-renderer/Avatar.h | 2 +- .../src/avatars-renderer/OtherAvatar.cpp | 4 +- .../src/avatars-renderer/OtherAvatar.h | 2 +- .../src/avatars-renderer/SkeletonModel.cpp | 29 +++-- .../src/avatars-renderer/SkeletonModel.h | 2 +- .../src/EntityTreeRenderer.cpp | 2 +- .../src/RenderableModelEntityItem.cpp | 37 +++---- .../src/RenderableZoneEntityItem.cpp | 2 +- .../render-utils/src/CauterizedModel.cpp | 10 +- libraries/render-utils/src/CauterizedModel.h | 2 +- libraries/render-utils/src/Model.cpp | 56 +++++----- libraries/render-utils/src/Model.h | 9 +- .../render-utils/src/SoftAttachmentModel.cpp | 16 ++- .../render-utils/src/SoftAttachmentModel.h | 4 +- tests/animation/src/RigTests.cpp | 11 +- tests/animation/src/RigTests.h | 4 +- 24 files changed, 177 insertions(+), 205 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index d47e4cfd10..20b3949bc6 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -52,7 +52,7 @@ const QUuid MY_AVATAR_KEY; // NULL key AvatarManager::AvatarManager(QObject* parent) : _avatarsToFade(), - _myAvatar(std::make_shared(qApp->thread(), std::make_shared())) + _myAvatar(std::make_shared(qApp->thread())) { // register a meta type for the weak pointer we'll use for the owning avatar mixer for each avatar qRegisterMetaType >("NodeWeakPointer"); @@ -300,7 +300,7 @@ void AvatarManager::simulateAvatarFades(float deltaTime) { } AvatarSharedPointer AvatarManager::newSharedAvatar() { - return std::make_shared(qApp->thread(), std::make_shared()); + return std::make_shared(qApp->thread()); } void AvatarManager::handleRemovedAvatar(const AvatarSharedPointer& removedAvatar, KillAvatarReason removalReason) { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9cf8e7747b..5e513a9d9f 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -98,8 +98,8 @@ static const glm::quat DEFAULT_AVATAR_LEFTFOOT_ROT { -0.40167322754859924f, 0.91 static const glm::vec3 DEFAULT_AVATAR_RIGHTFOOT_POS { 0.08f, -0.96f, 0.029f }; static const glm::quat DEFAULT_AVATAR_RIGHTFOOT_ROT { -0.4016716778278351f, 0.9154615998268127f, 0.0053307069465518f, 0.023696165531873703f }; -MyAvatar::MyAvatar(QThread* thread, RigPointer rig) : - Avatar(thread, rig), +MyAvatar::MyAvatar(QThread* thread) : + Avatar(thread), _yawSpeed(YAW_SPEED_DEFAULT), _pitchSpeed(PITCH_SPEED_DEFAULT), _scriptedMotorTimescale(DEFAULT_SCRIPTED_MOTOR_TIMESCALE), @@ -120,7 +120,6 @@ MyAvatar::MyAvatar(QThread* thread, RigPointer rig) : _goToPending(false), _goToPosition(), _goToOrientation(), - _rig(rig), _prevShouldDrawHead(true), _audioListenerMode(FROM_HEAD), _hmdAtRestDetector(glm::vec3(0), glm::quat()) @@ -129,7 +128,7 @@ MyAvatar::MyAvatar(QThread* thread, RigPointer rig) : // give the pointer to our head to inherited _headData variable from AvatarData _headData = new MyHead(this); - _skeletonModel = std::make_shared(this, nullptr, rig); + _skeletonModel = std::make_shared(this, nullptr); connect(_skeletonModel.get(), &Model::setURLFinished, this, &Avatar::setModelURLFinished); @@ -180,9 +179,7 @@ MyAvatar::MyAvatar(QThread* thread, RigPointer rig) : auto audioIO = DependencyManager::get(); audioIO->setIsPlayingBackRecording(isPlaying); - if (_rig) { - _rig->setEnableAnimations(!isPlaying); - } + _skeletonModel->getRig().setEnableAnimations(!isPlaying); }); connect(recorder.data(), &Recorder::recordingStateChanged, [=] { @@ -233,12 +230,12 @@ MyAvatar::MyAvatar(QThread* thread, RigPointer rig) : } auto jointData = dummyAvatar.getRawJointData(); - if (jointData.length() > 0 && _rig) { - _rig->copyJointsFromJointData(jointData); + if (jointData.length() > 0) { + _skeletonModel->getRig().copyJointsFromJointData(jointData); } }); - connect(rig.get(), SIGNAL(onLoadComplete()), this, SIGNAL(onLoadComplete())); + connect(&(_skeletonModel->getRig()), SIGNAL(onLoadComplete()), this, SIGNAL(onLoadComplete())); _characterController.setDensity(_density); } @@ -355,9 +352,7 @@ void MyAvatar::clearIKJointLimitHistory() { return; } - if (_rig) { - _rig->clearIKJointLimitHistory(); - } + _skeletonModel->getRig().clearIKJointLimitHistory(); } void MyAvatar::reset(bool andRecenter, bool andReload, bool andHead) { @@ -528,10 +523,8 @@ void MyAvatar::simulate(float deltaTime) { { PerformanceTimer perfTimer("skeleton"); - if (_rig) { - _rig->setEnableDebugDrawIKTargets(_enableDebugDrawIKTargets); - _rig->setEnableDebugDrawIKConstraints(_enableDebugDrawIKConstraints); - } + _skeletonModel->getRig().setEnableDebugDrawIKTargets(_enableDebugDrawIKTargets); + _skeletonModel->getRig().setEnableDebugDrawIKConstraints(_enableDebugDrawIKConstraints); _skeletonModel->simulate(deltaTime); } @@ -550,7 +543,7 @@ void MyAvatar::simulate(float deltaTime) { PerformanceTimer perfTimer("joints"); // copy out the skeleton joints from the model if (_rigEnabled) { - _rig->copyJointsIntoJointData(_jointData); + _skeletonModel->getRig().copyJointsIntoJointData(_jointData); } } @@ -795,7 +788,7 @@ void MyAvatar::overrideAnimation(const QString& url, float fps, bool loop, float Q_ARG(bool, loop), Q_ARG(float, firstFrame), Q_ARG(float, lastFrame)); return; } - _rig->overrideAnimation(url, fps, loop, firstFrame, lastFrame); + _skeletonModel->getRig().overrideAnimation(url, fps, loop, firstFrame, lastFrame); } void MyAvatar::restoreAnimation() { @@ -803,7 +796,7 @@ void MyAvatar::restoreAnimation() { QMetaObject::invokeMethod(this, "restoreAnimation"); return; } - _rig->restoreAnimation(); + _skeletonModel->getRig().restoreAnimation(); } QStringList MyAvatar::getAnimationRoles() { @@ -812,7 +805,7 @@ QStringList MyAvatar::getAnimationRoles() { QMetaObject::invokeMethod(this, "getAnimationRoles", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QStringList, result)); return result; } - return _rig->getAnimationRoles(); + return _skeletonModel->getRig().getAnimationRoles(); } void MyAvatar::overrideRoleAnimation(const QString& role, const QString& url, float fps, bool loop, @@ -822,7 +815,7 @@ void MyAvatar::overrideRoleAnimation(const QString& role, const QString& url, fl Q_ARG(float, fps), Q_ARG(bool, loop), Q_ARG(float, firstFrame), Q_ARG(float, lastFrame)); return; } - _rig->overrideRoleAnimation(role, url, fps, loop, firstFrame, lastFrame); + _skeletonModel->getRig().overrideRoleAnimation(role, url, fps, loop, firstFrame, lastFrame); } void MyAvatar::restoreRoleAnimation(const QString& role) { @@ -830,7 +823,7 @@ void MyAvatar::restoreRoleAnimation(const QString& role) { QMetaObject::invokeMethod(this, "restoreRoleAnimation", Q_ARG(const QString&, role)); return; } - _rig->restoreRoleAnimation(role); + _skeletonModel->getRig().restoreRoleAnimation(role); } void MyAvatar::saveData() { @@ -968,7 +961,7 @@ void MyAvatar::setUseAnimPreAndPostRotations(bool isEnabled) { } void MyAvatar::setEnableInverseKinematics(bool isEnabled) { - _rig->setEnableInverseKinematics(isEnabled); + _skeletonModel->getRig().setEnableInverseKinematics(isEnabled); } void MyAvatar::loadData() { @@ -1217,7 +1210,7 @@ void MyAvatar::setJointData(int index, const glm::quat& rotation, const glm::vec return; } // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _rig->setJointState(index, true, rotation, translation, SCRIPT_PRIORITY); + _skeletonModel->getRig().setJointState(index, true, rotation, translation, SCRIPT_PRIORITY); } void MyAvatar::setJointRotation(int index, const glm::quat& rotation) { @@ -1226,7 +1219,7 @@ void MyAvatar::setJointRotation(int index, const glm::quat& rotation) { return; } // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _rig->setJointRotation(index, true, rotation, SCRIPT_PRIORITY); + _skeletonModel->getRig().setJointRotation(index, true, rotation, SCRIPT_PRIORITY); } void MyAvatar::setJointTranslation(int index, const glm::vec3& translation) { @@ -1235,7 +1228,7 @@ void MyAvatar::setJointTranslation(int index, const glm::vec3& translation) { return; } // HACK: ATM only JS scripts call setJointData() on MyAvatar so we hardcode the priority - _rig->setJointTranslation(index, true, translation, SCRIPT_PRIORITY); + _skeletonModel->getRig().setJointTranslation(index, true, translation, SCRIPT_PRIORITY); } void MyAvatar::clearJointData(int index) { @@ -1243,7 +1236,7 @@ void MyAvatar::clearJointData(int index) { QMetaObject::invokeMethod(this, "clearJointData", Q_ARG(int, index)); return; } - _rig->clearJointAnimationPriority(index); + _skeletonModel->getRig().clearJointAnimationPriority(index); } void MyAvatar::clearJointsData() { @@ -1251,7 +1244,7 @@ void MyAvatar::clearJointsData() { QMetaObject::invokeMethod(this, "clearJointsData"); return; } - _rig->clearJointStates(); + _skeletonModel->getRig().clearJointStates(); } void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { @@ -1694,7 +1687,7 @@ void MyAvatar::setAnimGraphUrl(const QUrl& url) { _skeletonModel->reset(); // Why is this necessary? Without this, we crash in the next render. _currentAnimGraphUrl.set(url); - _rig->initAnimGraph(url); + _skeletonModel->getRig().initAnimGraph(url); _bodySensorMatrix = deriveBodyFromHMDSensor(); // Based on current cached HMD position/rotation.. updateSensorToWorldMatrix(); // Uses updated position/orientation and _bodySensorMatrix changes @@ -1710,7 +1703,7 @@ void MyAvatar::initAnimGraph() { graphUrl = QUrl::fromLocalFile(PathUtils::resourcesPath() + "avatar/avatar-animation.json"); } - _rig->initAnimGraph(graphUrl); + _skeletonModel->getRig().initAnimGraph(graphUrl); _currentAnimGraphUrl.set(graphUrl); _bodySensorMatrix = deriveBodyFromHMDSensor(); // Based on current cached HMD position/rotation.. @@ -1718,7 +1711,7 @@ void MyAvatar::initAnimGraph() { } void MyAvatar::destroyAnimGraph() { - _rig->destroyAnimGraph(); + _skeletonModel->getRig().destroyAnimGraph(); } void MyAvatar::postUpdate(float deltaTime) { @@ -1734,22 +1727,23 @@ void MyAvatar::postUpdate(float deltaTime) { if (_enableDebugDrawDefaultPose || _enableDebugDrawAnimPose) { - auto animSkeleton = _rig->getAnimSkeleton(); + auto animSkeleton = _skeletonModel->getRig().getAnimSkeleton(); // the rig is in the skeletonModel frame AnimPose xform(glm::vec3(1), _skeletonModel->getRotation(), _skeletonModel->getTranslation()); if (_enableDebugDrawDefaultPose && animSkeleton) { glm::vec4 gray(0.2f, 0.2f, 0.2f, 0.2f); - AnimDebugDraw::getInstance().addAbsolutePoses("myAvatarDefaultPoses", animSkeleton, _rig->getAbsoluteDefaultPoses(), xform, gray); + AnimDebugDraw::getInstance().addAbsolutePoses("myAvatarDefaultPoses", animSkeleton, _skeletonModel->getRig().getAbsoluteDefaultPoses(), xform, gray); } if (_enableDebugDrawAnimPose && animSkeleton) { // build absolute AnimPoseVec from rig AnimPoseVec absPoses; - absPoses.reserve(_rig->getJointStateCount()); - for (int i = 0; i < _rig->getJointStateCount(); i++) { - absPoses.push_back(AnimPose(_rig->getJointTransform(i))); + const Rig& rig = _skeletonModel->getRig(); + absPoses.reserve(rig.getJointStateCount()); + for (int i = 0; i < rig.getJointStateCount(); i++) { + absPoses.push_back(AnimPose(rig.getJointTransform(i))); } glm::vec4 cyan(0.1f, 0.6f, 0.6f, 1.0f); AnimDebugDraw::getInstance().addAbsolutePoses("myAvatarAnimPoses", animSkeleton, absPoses, xform, cyan); @@ -2338,17 +2332,18 @@ glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { const glm::quat hmdOrientation = getHMDSensorOrientation(); const glm::quat hmdOrientationYawOnly = cancelOutRollAndPitch(hmdOrientation); - int rightEyeIndex = _rig->indexOfJoint("RightEye"); - int leftEyeIndex = _rig->indexOfJoint("LeftEye"); - int neckIndex = _rig->indexOfJoint("Neck"); - int hipsIndex = _rig->indexOfJoint("Hips"); + const Rig& rig = _skeletonModel->getRig(); + int rightEyeIndex = rig.indexOfJoint("RightEye"); + int leftEyeIndex = rig.indexOfJoint("LeftEye"); + int neckIndex = rig.indexOfJoint("Neck"); + int hipsIndex = rig.indexOfJoint("Hips"); glm::vec3 rigMiddleEyePos = DEFAULT_AVATAR_MIDDLE_EYE_POS; if (leftEyeIndex >= 0 && rightEyeIndex >= 0) { - rigMiddleEyePos = (_rig->getAbsoluteDefaultPose(leftEyeIndex).trans() + _rig->getAbsoluteDefaultPose(rightEyeIndex).trans()) / 2.0f; + rigMiddleEyePos = (rig.getAbsoluteDefaultPose(leftEyeIndex).trans() + rig.getAbsoluteDefaultPose(rightEyeIndex).trans()) / 2.0f; } - glm::vec3 rigNeckPos = neckIndex != -1 ? _rig->getAbsoluteDefaultPose(neckIndex).trans() : DEFAULT_AVATAR_NECK_POS; - glm::vec3 rigHipsPos = hipsIndex != -1 ? _rig->getAbsoluteDefaultPose(hipsIndex).trans() : DEFAULT_AVATAR_HIPS_POS; + glm::vec3 rigNeckPos = neckIndex != -1 ? rig.getAbsoluteDefaultPose(neckIndex).trans() : DEFAULT_AVATAR_NECK_POS; + glm::vec3 rigHipsPos = hipsIndex != -1 ? rig.getAbsoluteDefaultPose(hipsIndex).trans() : DEFAULT_AVATAR_HIPS_POS; glm::vec3 localEyes = (rigMiddleEyePos - rigHipsPos); glm::vec3 localNeck = (rigNeckPos - rigHipsPos); @@ -2714,8 +2709,8 @@ glm::vec3 MyAvatar::getAbsoluteJointTranslationInObjectFrame(int index) const { glm::mat4 MyAvatar::getCenterEyeCalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int rightEyeIndex = _rig->indexOfJoint("RightEye"); - int leftEyeIndex = _rig->indexOfJoint("LeftEye"); + int rightEyeIndex = _skeletonModel->getRig().indexOfJoint("RightEye"); + int leftEyeIndex = _skeletonModel->getRig().indexOfJoint("LeftEye"); if (rightEyeIndex >= 0 && leftEyeIndex >= 0) { auto centerEyePos = (getAbsoluteDefaultJointTranslationInObjectFrame(rightEyeIndex) + getAbsoluteDefaultJointTranslationInObjectFrame(leftEyeIndex)) * 0.5f; auto centerEyeRot = Quaternions::Y_180; @@ -2727,7 +2722,7 @@ glm::mat4 MyAvatar::getCenterEyeCalibrationMat() const { glm::mat4 MyAvatar::getHeadCalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int headIndex = _rig->indexOfJoint("Head"); + int headIndex = _skeletonModel->getRig().indexOfJoint("Head"); if (headIndex >= 0) { auto headPos = getAbsoluteDefaultJointTranslationInObjectFrame(headIndex); auto headRot = getAbsoluteDefaultJointRotationInObjectFrame(headIndex); @@ -2739,7 +2734,7 @@ glm::mat4 MyAvatar::getHeadCalibrationMat() const { glm::mat4 MyAvatar::getSpine2CalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int spine2Index = _rig->indexOfJoint("Spine2"); + int spine2Index = _skeletonModel->getRig().indexOfJoint("Spine2"); if (spine2Index >= 0) { auto spine2Pos = getAbsoluteDefaultJointTranslationInObjectFrame(spine2Index); auto spine2Rot = getAbsoluteDefaultJointRotationInObjectFrame(spine2Index); @@ -2751,7 +2746,7 @@ glm::mat4 MyAvatar::getSpine2CalibrationMat() const { glm::mat4 MyAvatar::getHipsCalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int hipsIndex = _rig->indexOfJoint("Hips"); + int hipsIndex = _skeletonModel->getRig().indexOfJoint("Hips"); if (hipsIndex >= 0) { auto hipsPos = getAbsoluteDefaultJointTranslationInObjectFrame(hipsIndex); auto hipsRot = getAbsoluteDefaultJointRotationInObjectFrame(hipsIndex); @@ -2763,7 +2758,7 @@ glm::mat4 MyAvatar::getHipsCalibrationMat() const { glm::mat4 MyAvatar::getLeftFootCalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int leftFootIndex = _rig->indexOfJoint("LeftFoot"); + int leftFootIndex = _skeletonModel->getRig().indexOfJoint("LeftFoot"); if (leftFootIndex >= 0) { auto leftFootPos = getAbsoluteDefaultJointTranslationInObjectFrame(leftFootIndex); auto leftFootRot = getAbsoluteDefaultJointRotationInObjectFrame(leftFootIndex); @@ -2775,7 +2770,7 @@ glm::mat4 MyAvatar::getLeftFootCalibrationMat() const { glm::mat4 MyAvatar::getRightFootCalibrationMat() const { // TODO: as an optimization cache this computation, then invalidate the cache when the avatar model is changed. - int rightFootIndex = _rig->indexOfJoint("RightFoot"); + int rightFootIndex = _skeletonModel->getRig().indexOfJoint("RightFoot"); if (rightFootIndex >= 0) { auto rightFootPos = getAbsoluteDefaultJointTranslationInObjectFrame(rightFootIndex); auto rightFootRot = getAbsoluteDefaultJointRotationInObjectFrame(rightFootIndex); @@ -2795,7 +2790,7 @@ bool MyAvatar::pinJoint(int index, const glm::vec3& position, const glm::quat& o slamPosition(position); setOrientation(orientation); - _rig->setMaxHipsOffsetLength(0.05f); + _skeletonModel->getRig().setMaxHipsOffsetLength(0.05f); auto it = std::find(_pinnedJoints.begin(), _pinnedJoints.end(), index); if (it == _pinnedJoints.end()) { @@ -2812,7 +2807,7 @@ bool MyAvatar::clearPinOnJoint(int index) { auto hipsIndex = getJointIndex("Hips"); if (index == hipsIndex) { - _rig->setMaxHipsOffsetLength(FLT_MAX); + _skeletonModel->getRig().setMaxHipsOffsetLength(FLT_MAX); } return true; @@ -2821,7 +2816,7 @@ bool MyAvatar::clearPinOnJoint(int index) { } float MyAvatar::getIKErrorOnLastSolve() const { - return _rig->getIKErrorOnLastSolve(); + return _skeletonModel->getRig().getIKErrorOnLastSolve(); } // thread-safe diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 394d6b2ac7..f386d8d345 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -148,7 +148,7 @@ public: }; Q_ENUM(DriveKeys) - explicit MyAvatar(QThread* thread, RigPointer rig); + explicit MyAvatar(QThread* thread); ~MyAvatar(); void instantiableAvatar() override {}; @@ -322,9 +322,9 @@ public: // adding one of the other handlers. While any handler may change a value in animStateDictionaryIn (or supply different values in animStateDictionaryOut) // a handler must not remove properties from animStateDictionaryIn, nor change property values that it does not intend to change. // It is not specified in what order multiple handlers are called. - Q_INVOKABLE QScriptValue addAnimationStateHandler(QScriptValue handler, QScriptValue propertiesList) { return _rig->addAnimationStateHandler(handler, propertiesList); } + Q_INVOKABLE QScriptValue addAnimationStateHandler(QScriptValue handler, QScriptValue propertiesList) { return _skeletonModel->getRig().addAnimationStateHandler(handler, propertiesList); } // Removes a handler previously added by addAnimationStateHandler. - Q_INVOKABLE void removeAnimationStateHandler(QScriptValue handler) { _rig->removeAnimationStateHandler(handler); } + Q_INVOKABLE void removeAnimationStateHandler(QScriptValue handler) { _skeletonModel->getRig().removeAnimationStateHandler(handler); } Q_INVOKABLE bool getSnapTurn() const { return _useSnapTurn; } Q_INVOKABLE void setSnapTurn(bool on) { _useSnapTurn = on; } @@ -708,7 +708,6 @@ private: glm::quat _goToOrientation; std::unordered_set _headBoneSet; - RigPointer _rig; bool _prevShouldDrawHead; bool _rigEnabled { true }; diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index e60481fc62..828a5f8a01 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -13,7 +13,7 @@ #include "Application.h" #include "InterfaceLogging.h" -MySkeletonModel::MySkeletonModel(Avatar* owningAvatar, QObject* parent, RigPointer rig) : SkeletonModel(owningAvatar, parent, rig) { +MySkeletonModel::MySkeletonModel(Avatar* owningAvatar, QObject* parent) : SkeletonModel(owningAvatar, parent) { } Rig::CharacterControllerState convertCharacterControllerState(CharacterController::State state) { @@ -63,7 +63,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; - _rig->computeHeadFromHMD(AnimPose(rigHMDMat), headParams.rigHeadPosition, headParams.rigHeadOrientation); + _rig.computeHeadFromHMD(AnimPose(rigHMDMat), headParams.rigHeadPosition, headParams.rigHeadOrientation); headParams.headEnabled = true; } else { // even though full head IK is disabled, the rig still needs the head orientation to rotate the head up and down in desktop mode. @@ -94,7 +94,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { headParams.isTalking = head->getTimeWithoutTalking() <= 1.5f; - _rig->updateFromHeadParameters(headParams, deltaTime); + _rig.updateFromHeadParameters(headParams, deltaTime); Rig::HandAndFeetParameters handAndFeetParams; @@ -138,14 +138,14 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { handAndFeetParams.bodyCapsuleHalfHeight = myAvatar->getCharacterController()->getCapsuleHalfHeight(); handAndFeetParams.bodyCapsuleLocalOffset = myAvatar->getCharacterController()->getCapsuleLocalOffset(); - _rig->updateFromHandAndFeetParameters(handAndFeetParams, deltaTime); + _rig.updateFromHandAndFeetParameters(handAndFeetParams, deltaTime); Rig::CharacterControllerState ccState = convertCharacterControllerState(myAvatar->getCharacterController()->getState()); auto velocity = myAvatar->getLocalVelocity(); auto position = myAvatar->getLocalPosition(); auto orientation = myAvatar->getLocalOrientation(); - _rig->computeMotionAnimationState(deltaTime, position, velocity, orientation, ccState); + _rig.computeMotionAnimationState(deltaTime, position, velocity, orientation, ccState); // evaluate AnimGraph animation and update jointStates. Model::updateRig(deltaTime, parentTransform); @@ -158,6 +158,6 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { eyeParams.leftEyeJointIndex = geometry.leftEyeJointIndex; eyeParams.rightEyeJointIndex = geometry.rightEyeJointIndex; - _rig->updateFromEyeParameters(eyeParams); + _rig.updateFromEyeParameters(eyeParams); } diff --git a/interface/src/avatar/MySkeletonModel.h b/interface/src/avatar/MySkeletonModel.h index 84fccc825a..12aba6b545 100644 --- a/interface/src/avatar/MySkeletonModel.h +++ b/interface/src/avatar/MySkeletonModel.h @@ -19,7 +19,7 @@ private: using Parent = SkeletonModel; public: - MySkeletonModel(Avatar* owningAvatar, QObject* parent = nullptr, RigPointer rig = nullptr); + MySkeletonModel(Avatar* owningAvatar, QObject* parent = nullptr); void updateRig(float deltaTime, glm::mat4 parentTransform) override; }; diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 307f23bff3..0bed07891e 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -18,7 +18,7 @@ QString const ModelOverlay::TYPE = "model"; ModelOverlay::ModelOverlay() - : _model(std::make_shared(std::make_shared(), nullptr, this)), + : _model(std::make_shared(nullptr, this)), _modelTextures(QVariantMap()) { _model->init(); @@ -28,7 +28,7 @@ ModelOverlay::ModelOverlay() ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : Volume3DOverlay(modelOverlay), - _model(std::make_shared(std::make_shared(), nullptr, this)), + _model(std::make_shared(nullptr, this)), _modelTextures(QVariantMap()), _url(modelOverlay->_url), _updateModel(false), @@ -211,12 +211,10 @@ QVariant ModelOverlay::getProperty(const QString& property) { if (property == "jointNames") { if (_model && _model->isActive()) { // note: going through Rig because Model::getJointNames() (which proxies to FBXGeometry) was always empty - const RigPointer rig = _model->getRig(); - if (rig) { - return mapJoints([rig](int jointIndex) -> QString { - return rig->nameOfJoint(jointIndex); - }); - } + const Rig* rig = &(_model->getRig()); + return mapJoints([rig](int jointIndex) -> QString { + return rig->nameOfJoint(jointIndex); + }); } } diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index 33b66f91ea..c6d4073d9e 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -27,7 +27,6 @@ class Rig; class AnimInverseKinematics; -typedef std::shared_ptr RigPointer; // Rig instances are reentrant. // However only specific methods thread-safe. Noted below. diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 1968a731a4..f5e2c8b68d 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -98,7 +98,7 @@ void Avatar::setShowNamesAboveHeads(bool show) { showNamesAboveHeads = show; } -Avatar::Avatar(QThread* thread, RigPointer rig) : +Avatar::Avatar(QThread* thread) : _voiceSphereID(GeometryCache::UNKNOWN_ID) { // we may have been created in the network thread, but we live in the main thread @@ -344,9 +344,9 @@ void Avatar::simulate(float deltaTime, bool inView) { if (inView) { Head* head = getHead(); if (_hasNewJointData) { - _skeletonModel->getRig()->copyJointsFromJointData(_jointData); + _skeletonModel->getRig().copyJointsFromJointData(_jointData); glm::mat4 rootTransform = glm::scale(_skeletonModel->getScale()) * glm::translate(_skeletonModel->getOffset()); - _skeletonModel->getRig()->computeExternalPoses(rootTransform); + _skeletonModel->getRig().computeExternalPoses(rootTransform); _jointDataSimulationRate.increment(); _skeletonModel->simulate(deltaTime, true); @@ -907,17 +907,16 @@ glm::vec3 Avatar::getDefaultJointTranslation(int index) const { glm::quat Avatar::getAbsoluteDefaultJointRotationInObjectFrame(int index) const { glm::quat rotation; - auto rig = _skeletonModel->getRig(); - glm::quat rot = rig->getAnimSkeleton()->getAbsoluteDefaultPose(index).rot(); + glm::quat rot = _skeletonModel->getRig().getAnimSkeleton()->getAbsoluteDefaultPose(index).rot(); return Quaternions::Y_180 * rot; } glm::vec3 Avatar::getAbsoluteDefaultJointTranslationInObjectFrame(int index) const { glm::vec3 translation; - auto rig = _skeletonModel->getRig(); - glm::vec3 trans = rig->getAnimSkeleton()->getAbsoluteDefaultPose(index).trans(); + const Rig& rig = _skeletonModel->getRig(); + glm::vec3 trans = rig.getAnimSkeleton()->getAbsoluteDefaultPose(index).trans(); glm::mat4 y180Mat = createMatFromQuatAndPos(Quaternions::Y_180, glm::vec3()); - return transformPoint(y180Mat * rig->getGeometryToRigTransform(), trans); + return transformPoint(y180Mat * rig.getGeometryToRigTransform(), trans); } glm::quat Avatar::getAbsoluteJointRotationInObjectFrame(int index) const { @@ -1083,16 +1082,16 @@ void Avatar::setModelURLFinished(bool success) { // create new model, can return an instance of a SoftAttachmentModel rather then Model -static std::shared_ptr allocateAttachmentModel(bool isSoft, RigPointer rigOverride, bool isCauterized) { +static std::shared_ptr allocateAttachmentModel(bool isSoft, const Rig& rigOverride, bool isCauterized) { if (isSoft) { // cast to std::shared_ptr - std::shared_ptr softModel = std::make_shared(std::make_shared(), nullptr, rigOverride); + std::shared_ptr softModel = std::make_shared(nullptr, rigOverride); if (isCauterized) { softModel->flagAsCauterized(); } return std::dynamic_pointer_cast(softModel); } else { - return std::make_shared(std::make_shared()); + return std::make_shared(); } } @@ -1409,21 +1408,19 @@ void Avatar::setParentJointIndex(quint16 parentJointIndex) { QList Avatar::getSkeleton() { SkeletonModelPointer skeletonModel = _skeletonModel; if (skeletonModel) { - RigPointer rig = skeletonModel->getRig(); - if (rig) { - AnimSkeleton::ConstPointer skeleton = rig->getAnimSkeleton(); - if (skeleton) { - QList list; - list.reserve(skeleton->getNumJoints()); - for (int i = 0; i < skeleton->getNumJoints(); i++) { - QVariantMap obj; - obj["name"] = skeleton->getJointName(i); - obj["index"] = i; - obj["parentIndex"] = skeleton->getParentIndex(i); - list.push_back(obj); - } - return list; + const Rig& rig = skeletonModel->getRig(); + AnimSkeleton::ConstPointer skeleton = rig.getAnimSkeleton(); + if (skeleton) { + QList list; + list.reserve(skeleton->getNumJoints()); + for (int i = 0; i < skeleton->getNumJoints(); i++) { + QVariantMap obj; + obj["name"] = skeleton->getJointName(i); + obj["index"] = i; + obj["parentIndex"] = skeleton->getParentIndex(i); + list.push_back(obj); } + return list; } } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index ae24caca29..1724d42510 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -75,7 +75,7 @@ public: static void setShowCollisionShapes(bool render); static void setShowNamesAboveHeads(bool show); - explicit Avatar(QThread* thread, RigPointer rig = nullptr); + explicit Avatar(QThread* thread); ~Avatar(); virtual void instantiableAvatar() = 0; diff --git a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp index ad69ba24cb..e870e2de12 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp @@ -8,9 +8,9 @@ #include "OtherAvatar.h" -OtherAvatar::OtherAvatar(QThread* thread, RigPointer rig) : Avatar(thread, rig) { +OtherAvatar::OtherAvatar(QThread* thread) : Avatar(thread) { // give the pointer to our head to inherited _headData variable from AvatarData _headData = new Head(this); - _skeletonModel = std::make_shared(this, nullptr, rig); + _skeletonModel = std::make_shared(this, nullptr); connect(_skeletonModel.get(), &Model::setURLFinished, this, &Avatar::setModelURLFinished); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h index 22a7e1863a..df09d7fd99 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.h @@ -13,7 +13,7 @@ class OtherAvatar : public Avatar { public: - explicit OtherAvatar(QThread* thread, RigPointer rig = nullptr); + explicit OtherAvatar(QThread* thread); virtual void instantiableAvatar() override {}; }; diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index d3453280ac..2a2817e68b 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -22,8 +22,8 @@ #include "Avatar.h" #include "Logging.h" -SkeletonModel::SkeletonModel(Avatar* owningAvatar, QObject* parent, RigPointer rig) : - CauterizedModel(rig, parent), +SkeletonModel::SkeletonModel(Avatar* owningAvatar, QObject* parent) : + CauterizedModel(parent), _owningAvatar(owningAvatar), _boundingCapsuleLocalOffset(0.0f), _boundingCapsuleRadius(0.0f), @@ -31,7 +31,6 @@ SkeletonModel::SkeletonModel(Avatar* owningAvatar, QObject* parent, RigPointer r _defaultEyeModelPosition(glm::vec3(0.0f, 0.0f, 0.0f)), _headClipDistance(DEFAULT_NEAR_CLIP) { - assert(_rig); assert(_owningAvatar); } @@ -41,12 +40,12 @@ SkeletonModel::~SkeletonModel() { void SkeletonModel::initJointStates() { const FBXGeometry& geometry = getFBXGeometry(); glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset); - _rig->initJointStates(geometry, modelOffset); + _rig.initJointStates(geometry, modelOffset); // Determine the default eye position for avatar scale = 1.0 int headJointIndex = geometry.headJointIndex; - if (0 > headJointIndex || headJointIndex >= _rig->getJointStateCount()) { - qCWarning(avatars_renderer) << "Bad head joint! Got:" << headJointIndex << "jointCount:" << _rig->getJointStateCount(); + if (0 > headJointIndex || headJointIndex >= _rig.getJointStateCount()) { + qCWarning(avatars_renderer) << "Bad head joint! Got:" << headJointIndex << "jointCount:" << _rig.getJointStateCount(); } glm::vec3 leftEyePosition, rightEyePosition; getEyeModelPositions(leftEyePosition, rightEyePosition); @@ -102,7 +101,7 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { // If the head is not positioned, updateEyeJoints won't get the math right glm::quat headOrientation; - _rig->getJointRotation(geometry.headJointIndex, headOrientation); + _rig.getJointRotation(geometry.headJointIndex, headOrientation); glm::vec3 eulers = safeEulerAngles(headOrientation); head->setBasePitch(glm::degrees(-eulers.x)); head->setBaseYaw(glm::degrees(eulers.y)); @@ -116,7 +115,7 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { eyeParams.leftEyeJointIndex = geometry.leftEyeJointIndex; eyeParams.rightEyeJointIndex = geometry.rightEyeJointIndex; - _rig->updateFromEyeParameters(eyeParams); + _rig.updateFromEyeParameters(eyeParams); } void SkeletonModel::updateAttitude() { @@ -136,7 +135,7 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { // let rig compute the model offset glm::vec3 registrationPoint; - if (_rig->getModelRegistrationPoint(registrationPoint)) { + if (_rig.getModelRegistrationPoint(registrationPoint)) { setOffset(registrationPoint); } } else { @@ -164,8 +163,8 @@ bool operator<(const IndexValue& firstIndex, const IndexValue& secondIndex) { } bool SkeletonModel::getLeftGrabPosition(glm::vec3& position) const { - int knuckleIndex = _rig->indexOfJoint("LeftHandMiddle1"); - int handIndex = _rig->indexOfJoint("LeftHand"); + int knuckleIndex = _rig.indexOfJoint("LeftHandMiddle1"); + int handIndex = _rig.indexOfJoint("LeftHand"); if (knuckleIndex >= 0 && handIndex >= 0) { glm::quat handRotation; glm::vec3 knucklePosition; @@ -189,8 +188,8 @@ bool SkeletonModel::getLeftGrabPosition(glm::vec3& position) const { } bool SkeletonModel::getRightGrabPosition(glm::vec3& position) const { - int knuckleIndex = _rig->indexOfJoint("RightHandMiddle1"); - int handIndex = _rig->indexOfJoint("RightHand"); + int knuckleIndex = _rig.indexOfJoint("RightHandMiddle1"); + int handIndex = _rig.indexOfJoint("RightHand"); if (knuckleIndex >= 0 && handIndex >= 0) { glm::quat handRotation; glm::vec3 knucklePosition; @@ -304,7 +303,7 @@ float VERY_BIG_MASS = 1.0e6f; // virtual void SkeletonModel::computeBoundingShape() { - if (!isLoaded() || _rig->jointStatesEmpty()) { + if (!isLoaded() || _rig.jointStatesEmpty()) { return; } @@ -316,7 +315,7 @@ void SkeletonModel::computeBoundingShape() { float radius, height; glm::vec3 offset; - _rig->computeAvatarBoundingCapsule(geometry, radius, height, offset); + _rig.computeAvatarBoundingCapsule(geometry, radius, height, offset); float invScale = 1.0f / _owningAvatar->getUniformScale(); _boundingCapsuleRadius = invScale * radius; _boundingCapsuleHeight = invScale * height; diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h index 059dd245fd..db87a37477 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.h @@ -28,7 +28,7 @@ class SkeletonModel : public CauterizedModel { public: - SkeletonModel(Avatar* owningAvatar, QObject* parent = nullptr, RigPointer rig = nullptr); + SkeletonModel(Avatar* owningAvatar, QObject* parent = nullptr); ~SkeletonModel(); void initJointStates() override; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 1de476c825..09308baabb 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -582,7 +582,7 @@ ModelPointer EntityTreeRenderer::allocateModel(const QString& url, float loading return model; } - model = std::make_shared(std::make_shared(), nullptr, spatiallyNestableOverride); + model = std::make_shared(nullptr, spatiallyNestableOverride); model->setLoadingPriority(loadingPriority); model->init(); model->setURL(QUrl(url)); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 8b1ba75259..36273c1f07 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -807,7 +807,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { const FBXMesh& mesh = fbxGeometry.meshes.at(i); if (mesh.clusters.size() > 0) { const FBXCluster& cluster = mesh.clusters.at(0); - auto jointMatrix = _model->getRig()->getJointTransform(cluster.jointIndex); + auto jointMatrix = _model->getRig().getJointTransform(cluster.jointIndex); // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); } else { @@ -1080,26 +1080,22 @@ bool RenderableModelEntityItem::setAbsoluteJointRotationInObjectFrame(int index, if (!_model) { return false; } - RigPointer rig = _model->getRig(); - if (!rig) { - return false; - } - - int jointParentIndex = rig->getJointParentIndex(index); + const Rig& rig = _model->getRig(); + int jointParentIndex = rig.getJointParentIndex(index); if (jointParentIndex == -1) { return setLocalJointRotation(index, rotation); } bool success; AnimPose jointParentPose; - success = rig->getAbsoluteJointPoseInRigFrame(jointParentIndex, jointParentPose); + success = rig.getAbsoluteJointPoseInRigFrame(jointParentIndex, jointParentPose); if (!success) { return false; } AnimPose jointParentInversePose = jointParentPose.inverse(); AnimPose jointAbsolutePose; // in rig frame - success = rig->getAbsoluteJointPoseInRigFrame(index, jointAbsolutePose); + success = rig.getAbsoluteJointPoseInRigFrame(index, jointAbsolutePose); if (!success) { return false; } @@ -1113,26 +1109,23 @@ bool RenderableModelEntityItem::setAbsoluteJointTranslationInObjectFrame(int ind if (!_model) { return false; } - RigPointer rig = _model->getRig(); - if (!rig) { - return false; - } + const Rig& rig = _model->getRig(); - int jointParentIndex = rig->getJointParentIndex(index); + int jointParentIndex = rig.getJointParentIndex(index); if (jointParentIndex == -1) { return setLocalJointTranslation(index, translation); } bool success; AnimPose jointParentPose; - success = rig->getAbsoluteJointPoseInRigFrame(jointParentIndex, jointParentPose); + success = rig.getAbsoluteJointPoseInRigFrame(jointParentIndex, jointParentPose); if (!success) { return false; } AnimPose jointParentInversePose = jointParentPose.inverse(); AnimPose jointAbsolutePose; // in rig frame - success = rig->getAbsoluteJointPoseInRigFrame(index, jointAbsolutePose); + success = rig.getAbsoluteJointPoseInRigFrame(index, jointAbsolutePose); if (!success) { return false; } @@ -1248,20 +1241,16 @@ void RenderableModelEntityItem::locationChanged(bool tellPhysics) { } int RenderableModelEntityItem::getJointIndex(const QString& name) const { - if (_model && _model->isActive()) { - RigPointer rig = _model->getRig(); - return rig->indexOfJoint(name); - } - return -1; + return (_model && _model->isActive()) ? _model->getRig().indexOfJoint(name) : -1; } QStringList RenderableModelEntityItem::getJointNames() const { QStringList result; if (_model && _model->isActive()) { - RigPointer rig = _model->getRig(); - int jointCount = rig->getJointStateCount(); + const Rig& rig = _model->getRig(); + int jointCount = rig.getJointStateCount(); for (int jointIndex = 0; jointIndex < jointCount; jointIndex++) { - result << rig->nameOfJoint(jointIndex); + result << rig.nameOfJoint(jointIndex); } } return result; diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 66495a7054..024b78b616 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -81,7 +81,7 @@ int RenderableZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned ch } Model* RenderableZoneEntityItem::getModel() { - Model* model = new Model(nullptr); + Model* model = new Model(); model->setIsWireframe(true); model->init(); return model; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 14625952ea..b337e3da23 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -16,8 +16,8 @@ #include "RenderUtilsLogging.h" -CauterizedModel::CauterizedModel(RigPointer rig, QObject* parent) : - Model(rig, parent) { +CauterizedModel::CauterizedModel(QObject* parent) : + Model(parent) { } CauterizedModel::~CauterizedModel() { @@ -107,7 +107,7 @@ void CauterizedModel::updateClusterMatrices() { const FBXMesh& mesh = geometry.meshes.at(i); for (int j = 0; j < mesh.clusters.size(); j++) { const FBXCluster& cluster = mesh.clusters.at(j); - auto jointMatrix = _rig->getJointTransform(cluster.jointIndex); + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]); } @@ -130,14 +130,14 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); - auto cauterizeMatrix = _rig->getJointTransform(geometry.neckJointIndex) * zeroScale; + auto cauterizeMatrix = _rig.getJointTransform(geometry.neckJointIndex) * zeroScale; for (int i = 0; i < _cauterizeMeshStates.size(); i++) { Model::MeshState& state = _cauterizeMeshStates[i]; const FBXMesh& mesh = geometry.meshes.at(i); for (int j = 0; j < mesh.clusters.size(); j++) { const FBXCluster& cluster = mesh.clusters.at(j); - auto jointMatrix = _rig->getJointTransform(cluster.jointIndex); + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); if (_cauterizeBoneSet.find(cluster.jointIndex) != _cauterizeBoneSet.end()) { jointMatrix = cauterizeMatrix; } diff --git a/libraries/render-utils/src/CauterizedModel.h b/libraries/render-utils/src/CauterizedModel.h index dcff7bd12d..d16c928ba6 100644 --- a/libraries/render-utils/src/CauterizedModel.h +++ b/libraries/render-utils/src/CauterizedModel.h @@ -16,7 +16,7 @@ class CauterizedModel : public Model { Q_OBJECT public: - CauterizedModel(RigPointer rig, QObject* parent); + CauterizedModel(QObject* parent); virtual ~CauterizedModel(); void flagAsCauterized() { _isCauterized = true; } diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 95423d2157..7fe6d7f7f5 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -78,7 +78,7 @@ void initCollisionMaterials() { } } -Model::Model(RigPointer rig, QObject* parent, SpatiallyNestable* spatiallyNestableOverride) : +Model::Model(QObject* parent, SpatiallyNestable* spatiallyNestableOverride) : QObject(parent), _renderGeometry(), _collisionGeometry(), @@ -96,8 +96,7 @@ Model::Model(RigPointer rig, QObject* parent, SpatiallyNestable* spatiallyNestab _isVisible(true), _blendNumber(0), _appliedBlendNumber(0), - _isWireframe(false), - _rig(rig) + _isWireframe(false) { // we may have been created in the network thread, but we live in the main thread if (_viewState) { @@ -271,7 +270,7 @@ void Model::updateRenderItems() { void Model::initJointTransforms() { if (isLoaded()) { glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset); - _rig->setModelOffset(modelOffset); + _rig.setModelOffset(modelOffset); } } @@ -281,7 +280,7 @@ void Model::init() { void Model::reset() { if (isLoaded()) { const FBXGeometry& geometry = getFBXGeometry(); - _rig->reset(geometry); + _rig.reset(geometry); } } @@ -294,7 +293,8 @@ bool Model::updateGeometry() { _needsReload = false; - if (_rig->jointStatesEmpty() && getFBXGeometry().joints.size() > 0) { + // TODO: should all Models have a valid _rig? + if (_rig.jointStatesEmpty() && getFBXGeometry().joints.size() > 0) { initJointStates(); assert(_meshStates.empty()); @@ -326,7 +326,7 @@ void Model::initJointStates() { const FBXGeometry& geometry = getFBXGeometry(); glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset); - _rig->initJointStates(geometry, modelOffset); + _rig.initJointStates(geometry, modelOffset); } bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance, @@ -746,19 +746,19 @@ Extents Model::getUnscaledMeshExtents() const { } void Model::clearJointState(int index) { - _rig->clearJointState(index); + _rig.clearJointState(index); } void Model::setJointState(int index, bool valid, const glm::quat& rotation, const glm::vec3& translation, float priority) { - _rig->setJointState(index, valid, rotation, translation, priority); + _rig.setJointState(index, valid, rotation, translation, priority); } void Model::setJointRotation(int index, bool valid, const glm::quat& rotation, float priority) { - _rig->setJointRotation(index, valid, rotation, priority); + _rig.setJointRotation(index, valid, rotation, priority); } void Model::setJointTranslation(int index, bool valid, const glm::vec3& translation, float priority) { - _rig->setJointTranslation(index, valid, translation, priority); + _rig.setJointTranslation(index, valid, translation, priority); } int Model::getParentJointIndex(int jointIndex) const { @@ -825,43 +825,43 @@ void Model::loadURLFinished(bool success) { } bool Model::getJointPositionInWorldFrame(int jointIndex, glm::vec3& position) const { - return _rig->getJointPositionInWorldFrame(jointIndex, position, _translation, _rotation); + return _rig.getJointPositionInWorldFrame(jointIndex, position, _translation, _rotation); } bool Model::getJointPosition(int jointIndex, glm::vec3& position) const { - return _rig->getJointPosition(jointIndex, position); + return _rig.getJointPosition(jointIndex, position); } bool Model::getJointRotationInWorldFrame(int jointIndex, glm::quat& rotation) const { - return _rig->getJointRotationInWorldFrame(jointIndex, rotation, _rotation); + return _rig.getJointRotationInWorldFrame(jointIndex, rotation, _rotation); } bool Model::getJointRotation(int jointIndex, glm::quat& rotation) const { - return _rig->getJointRotation(jointIndex, rotation); + return _rig.getJointRotation(jointIndex, rotation); } bool Model::getJointTranslation(int jointIndex, glm::vec3& translation) const { - return _rig->getJointTranslation(jointIndex, translation); + return _rig.getJointTranslation(jointIndex, translation); } bool Model::getAbsoluteJointRotationInRigFrame(int jointIndex, glm::quat& rotationOut) const { - return _rig->getAbsoluteJointRotationInRigFrame(jointIndex, rotationOut); + return _rig.getAbsoluteJointRotationInRigFrame(jointIndex, rotationOut); } bool Model::getAbsoluteJointTranslationInRigFrame(int jointIndex, glm::vec3& translationOut) const { - return _rig->getAbsoluteJointTranslationInRigFrame(jointIndex, translationOut); + return _rig.getAbsoluteJointTranslationInRigFrame(jointIndex, translationOut); } bool Model::getRelativeDefaultJointRotation(int jointIndex, glm::quat& rotationOut) const { - return _rig->getRelativeDefaultJointRotation(jointIndex, rotationOut); + return _rig.getRelativeDefaultJointRotation(jointIndex, rotationOut); } bool Model::getRelativeDefaultJointTranslation(int jointIndex, glm::vec3& translationOut) const { - return _rig->getRelativeDefaultJointTranslation(jointIndex, translationOut); + return _rig.getRelativeDefaultJointTranslation(jointIndex, translationOut); } bool Model::getJointCombinedRotation(int jointIndex, glm::quat& rotation) const { - return _rig->getJointCombinedRotation(jointIndex, rotation, _rotation); + return _rig.getJointCombinedRotation(jointIndex, rotation, _rotation); } QStringList Model::getJointNames() const { @@ -1049,7 +1049,7 @@ void Model::simulate(float deltaTime, bool fullUpdate) { void Model::updateRig(float deltaTime, glm::mat4 parentTransform) { _needsUpdateClusterMatrices = true; glm::mat4 rigToWorldTransform = createMatFromQuatAndPos(getRotation(), getTranslation()); - _rig->updateAnimations(deltaTime, parentTransform, rigToWorldTransform); + _rig.updateAnimations(deltaTime, parentTransform, rigToWorldTransform); } void Model::computeMeshPartLocalBounds() { @@ -1073,7 +1073,7 @@ void Model::updateClusterMatrices() { const FBXMesh& mesh = geometry.meshes.at(i); for (int j = 0; j < mesh.clusters.size(); j++) { const FBXCluster& cluster = mesh.clusters.at(j); - auto jointMatrix = _rig->getJointTransform(cluster.jointIndex); + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]); } @@ -1100,19 +1100,19 @@ void Model::inverseKinematics(int endIndex, glm::vec3 targetPosition, const glm: const FBXGeometry& geometry = getFBXGeometry(); const QVector& freeLineage = geometry.joints.at(endIndex).freeLineage; glm::mat4 parentTransform = glm::scale(_scale) * glm::translate(_offset); - _rig->inverseKinematics(endIndex, targetPosition, targetRotation, priority, freeLineage, parentTransform); + _rig.inverseKinematics(endIndex, targetPosition, targetRotation, priority, freeLineage, parentTransform); } bool Model::restoreJointPosition(int jointIndex, float fraction, float priority) { const FBXGeometry& geometry = getFBXGeometry(); const QVector& freeLineage = geometry.joints.at(jointIndex).freeLineage; - return _rig->restoreJointPosition(jointIndex, fraction, priority, freeLineage); + return _rig.restoreJointPosition(jointIndex, fraction, priority, freeLineage); } float Model::getLimbLength(int jointIndex) const { const FBXGeometry& geometry = getFBXGeometry(); const QVector& freeLineage = geometry.joints.at(jointIndex).freeLineage; - return _rig->getLimbLength(jointIndex, freeLineage, _scale, geometry.joints); + return _rig.getLimbLength(jointIndex, freeLineage, _scale, geometry.joints); } bool Model::maybeStartBlender() { @@ -1155,9 +1155,7 @@ void Model::deleteGeometry() { _deleteGeometryCounter++; _blendedVertexBuffers.clear(); _meshStates.clear(); - if (_rig) { - _rig->destroyAnimGraph(); - } + _rig.destroyAnimGraph(); _blendedBlendshapeCoefficients.clear(); _renderGeometry.reset(); _collisionGeometry.reset(); diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 5899ccf6b5..9daffcc00b 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -68,7 +68,7 @@ public: static void setAbstractViewStateInterface(AbstractViewStateInterface* viewState) { _viewState = viewState; } - Model(RigPointer rig, QObject* parent = nullptr, SpatiallyNestable* spatiallyNestableOverride = nullptr); + Model(QObject* parent = nullptr, SpatiallyNestable* spatiallyNestableOverride = nullptr); virtual ~Model(); inline ModelPointer getThisPointer() const { @@ -174,7 +174,7 @@ public: } /// Returns the number of joint states in the model. - int getJointStateCount() const { return (int)_rig->getJointStateCount(); } + int getJointStateCount() const { return (int)_rig.getJointStateCount(); } bool getJointPositionInWorldFrame(int jointIndex, glm::vec3& position) const; bool getJointRotationInWorldFrame(int jointIndex, glm::quat& rotation) const; bool getJointCombinedRotation(int jointIndex, glm::quat& rotation) const; @@ -223,7 +223,8 @@ public: return ((index < 0) && (index >= _blendshapeCoefficients.size())) ? 0.0f : _blendshapeCoefficients.at(index); } - virtual RigPointer getRig() const { return _rig; } + Rig& getRig() { return _rig; } + const Rig& getRig() const { return _rig; } const glm::vec3& getRegistrationPoint() const { return _registrationPoint; } @@ -390,7 +391,7 @@ protected: mutable bool _needsUpdateTextures { true }; friend class ModelMeshPartPayload; - RigPointer _rig; + Rig _rig; uint32_t _deleteGeometryCounter { 0 }; diff --git a/libraries/render-utils/src/SoftAttachmentModel.cpp b/libraries/render-utils/src/SoftAttachmentModel.cpp index 8fef0f8f77..f15b696006 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.cpp +++ b/libraries/render-utils/src/SoftAttachmentModel.cpp @@ -8,11 +8,9 @@ #include "SoftAttachmentModel.h" -SoftAttachmentModel::SoftAttachmentModel(RigPointer rig, QObject* parent, RigPointer rigOverride) : - CauterizedModel(rig, parent), +SoftAttachmentModel::SoftAttachmentModel(QObject* parent, const Rig& rigOverride) : + CauterizedModel(parent), _rigOverride(rigOverride) { - assert(_rig); - assert(_rigOverride); } SoftAttachmentModel::~SoftAttachmentModel() { @@ -24,11 +22,11 @@ void SoftAttachmentModel::updateRig(float deltaTime, glm::mat4 parentTransform) } int SoftAttachmentModel::getJointIndexOverride(int i) const { - QString name = _rig->nameOfJoint(i); + QString name = _rig.nameOfJoint(i); if (name.isEmpty()) { return -1; } - return _rigOverride->indexOfJoint(name); + return _rigOverride.indexOfJoint(name); } // virtual @@ -51,10 +49,10 @@ void SoftAttachmentModel::updateClusterMatrices() { // TODO: cache these look-ups as an optimization int jointIndexOverride = getJointIndexOverride(cluster.jointIndex); glm::mat4 jointMatrix; - if (jointIndexOverride >= 0 && jointIndexOverride < _rigOverride->getJointStateCount()) { - jointMatrix = _rigOverride->getJointTransform(jointIndexOverride); + if (jointIndexOverride >= 0 && jointIndexOverride < _rigOverride.getJointStateCount()) { + jointMatrix = _rigOverride.getJointTransform(jointIndexOverride); } else { - jointMatrix = _rig->getJointTransform(cluster.jointIndex); + jointMatrix = _rig.getJointTransform(cluster.jointIndex); } glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]); } diff --git a/libraries/render-utils/src/SoftAttachmentModel.h b/libraries/render-utils/src/SoftAttachmentModel.h index b66c1a289a..4335c1634e 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.h +++ b/libraries/render-utils/src/SoftAttachmentModel.h @@ -23,7 +23,7 @@ class SoftAttachmentModel : public CauterizedModel { Q_OBJECT public: - SoftAttachmentModel(RigPointer rig, QObject* parent, RigPointer rigOverride); + SoftAttachmentModel(QObject* parent, const Rig& rigOverride); ~SoftAttachmentModel(); void updateRig(float deltaTime, glm::mat4 parentTransform) override; @@ -32,7 +32,7 @@ public: protected: int getJointIndexOverride(int i) const; - RigPointer _rigOverride; + const Rig& _rigOverride; }; #endif // hifi_SoftAttachmentModel_h diff --git a/tests/animation/src/RigTests.cpp b/tests/animation/src/RigTests.cpp index e8d4c41dff..d5de9226c0 100644 --- a/tests/animation/src/RigTests.cpp +++ b/tests/animation/src/RigTests.cpp @@ -47,7 +47,7 @@ #include #include "RigTests.h" -static void reportJoint(RigPointer rig, int index) { // Handy for debugging +static void reportJoint(const Rig& rig, int index) { // Handy for debugging std::cout << "\n"; std::cout << index << " " << rig->getAnimSkeleton()->getJointName(index).toUtf8().data() << "\n"; glm::vec3 pos; @@ -58,16 +58,16 @@ static void reportJoint(RigPointer rig, int index) { // Handy for debugging std::cout << " rot:" << safeEulerAngles(rot) << "\n"; std::cout << "\n"; } -static void reportByName(RigPointer rig, const QString& name) { +static void reportByName(const Rig& rig, const QString& name) { int jointIndex = rig->indexOfJoint(name); reportJoint(rig, jointIndex); } -static void reportAll(RigPointer rig) { +static void reportAll(const Rig& rig) { for (int i = 0; i < rig->getJointStateCount(); i++) { reportJoint(rig, i); } } -static void reportSome(RigPointer rig) { +static void reportSome(const Rig& rig) { QString names[] = {"Head", "Neck", "RightShoulder", "RightArm", "RightForeArm", "RightHand", "Spine2", "Spine1", "Spine", "Hips", "RightUpLeg", "RightLeg", "RightFoot", "RightToeBase", "RightToe_End"}; for (auto name : names) { reportByName(rig, name); @@ -91,8 +91,7 @@ void RigTests::initTestCase() { #endif QVERIFY((bool)geometry); - _rig = std::make_shared(); - _rig->initJointStates(*geometry, glm::mat4()); + _rig.initJointStates(*geometry, glm::mat4()); std::cout << "Rig is ready " << geometry->joints.count() << " joints " << std::endl; reportAll(_rig); } diff --git a/tests/animation/src/RigTests.h b/tests/animation/src/RigTests.h index 4280c0a8fa..3242c27b99 100644 --- a/tests/animation/src/RigTests.h +++ b/tests/animation/src/RigTests.h @@ -43,13 +43,13 @@ class RigTests : public QObject { Q_OBJECT - + private slots: void initTestCase(); void initialPoseArmsDown(); private: - RigPointer _rig; + Rig _rig; }; #endif // hifi_RigTests_h From 26247e86539411ec42f892390cf0e926568101ee Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 15:00:53 -0700 Subject: [PATCH 64/93] Add check for valid mutableData in assignMipData --- libraries/gpu/src/gpu/Texture_ktx.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index bf5b4d7965..14282ec525 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -265,6 +265,11 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor } auto fileData = file->mutableData(); + if (!fileData) { + qWarning() << "Failed to get mutable data for " << QString::fromStdString(_filename); + return; + } + auto imageData = fileData; imageData += ktx::KTX_HEADER_SIZE + _ktxDescriptor->header.bytesOfKeyValueData + _ktxDescriptor->images[level]._imageOffset; imageData += ktx::IMAGE_SIZE_WIDTH; From bb4d366c40bbaa7d7ec8cc792b49e938e9901374 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 19 May 2017 15:33:23 -0700 Subject: [PATCH 65/93] use SmartPointer for Zone _model --- interface/src/Application.cpp | 1 + .../src/RenderableZoneEntityItem.cpp | 39 ++++++++----------- .../src/RenderableZoneEntityItem.h | 5 +-- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1d31a84ed4..e35b48baad 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5348,6 +5348,7 @@ bool Application::nearbyEntitiesAreReadyForPhysics() { qCDebug(interfaceapp) << "Physics disabled until entity loads: " << entity->getID() << entity->getName(); // don't break here because we want all the relevant entities to start their downloads result = false; + break; } } return result; diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 024b78b616..a27feb4c72 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -36,15 +36,17 @@ void RenderableZoneEntityItem::changeProperties(Lambda setNewProperties) { QString oldShapeURL = getCompoundShapeURL(); glm::vec3 oldPosition = getPosition(), oldDimensions = getDimensions(); glm::quat oldRotation = getRotation(); - + setNewProperties(); - + if (oldShapeURL != getCompoundShapeURL()) { if (_model) { - delete _model; + _model.reset(); } - - _model = getModel(); + + _model = std::make_shared(); + _model->setIsWireframe(true); + _model->init(); _needsInitialSimulation = true; _model->setURL(getCompoundShapeURL()); } @@ -80,13 +82,6 @@ int RenderableZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned ch return bytesRead; } -Model* RenderableZoneEntityItem::getModel() { - Model* model = new Model(); - model->setIsWireframe(true); - model->init(); - return model; -} - void RenderableZoneEntityItem::initialSimulation() { _model->setScaleToFit(true, getDimensions()); _model->setSnapModelToRegistrationPoint(true, getRegistrationPoint()); @@ -108,7 +103,7 @@ void RenderableZoneEntityItem::updateGeometry() { void RenderableZoneEntityItem::render(RenderArgs* args) { Q_ASSERT(getType() == EntityTypes::Zone); - + if (_drawZoneBoundaries) { switch (getShapeType()) { case SHAPE_TYPE_COMPOUND: { @@ -123,9 +118,9 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { render::Item::Status::Getters statusGetters; makeEntityItemStatusGetters(getThisPointer(), statusGetters); _model->addToScene(scene, transaction); - + scene->enqueueTransaction(transaction); - + _model->setVisibleInScene(getVisible(), scene); } break; @@ -134,7 +129,7 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { case SHAPE_TYPE_SPHERE: { PerformanceTimer perfTimer("zone->renderPrimitive"); glm::vec4 DEFAULT_COLOR(1.0f, 1.0f, 1.0f, 1.0f); - + Q_ASSERT(args->_batch); gpu::Batch& batch = *args->_batch; @@ -159,7 +154,7 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { break; } } - + if ((!_drawZoneBoundaries || getShapeType() != SHAPE_TYPE_COMPOUND) && _model && !_model->needsFixupInScene()) { // If the model is in the scene but doesn't need to be, remove it. @@ -175,11 +170,11 @@ bool RenderableZoneEntityItem::contains(const glm::vec3& point) const { return EntityItem::contains(point); } const_cast(this)->updateGeometry(); - + if (_model && _model->isActive() && EntityItem::contains(point)) { return _model->convexHullContains(point); } - + return false; } @@ -188,7 +183,7 @@ public: RenderableZoneEntityItemMeta(EntityItemPointer entity) : entity(entity){ } typedef render::Payload Payload; typedef Payload::DataPointer Pointer; - + EntityItemPointer entity; }; @@ -196,7 +191,7 @@ namespace render { template <> const ItemKey payloadGetKey(const RenderableZoneEntityItemMeta::Pointer& payload) { return ItemKey::Builder::opaqueShape(); } - + template <> const Item::Bound payloadGetBound(const RenderableZoneEntityItemMeta::Pointer& payload) { if (payload && payload->entity) { bool success; @@ -220,7 +215,7 @@ namespace render { bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render::ScenePointer& scene, render::Transaction& transaction) { _myMetaItem = scene->allocateID(); - + auto renderData = std::make_shared(self); auto renderPayload = std::make_shared(renderData); diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index c81afdab08..3ebf472835 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -23,7 +23,7 @@ public: RenderableZoneEntityItem(const EntityItemID& entityItemID) : ZoneEntityItem(entityItemID), - _model(NULL), + _model(nullptr), _needsInitialSimulation(true) { } @@ -48,14 +48,13 @@ private: virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); } void notifyBoundChanged(); - Model* getModel(); void initialSimulation(); void updateGeometry(); template void changeProperties(Lambda functor); - Model* _model; + ModelPointer _model; bool _needsInitialSimulation; render::ItemID _myMetaItem{ render::Item::INVALID_ITEM_ID }; From d3956b47d08ca164d6ce45ba972426a5a66142d0 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 19 May 2017 15:35:29 -0700 Subject: [PATCH 66/93] remove bad break --- interface/src/Application.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e35b48baad..1d31a84ed4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5348,7 +5348,6 @@ bool Application::nearbyEntitiesAreReadyForPhysics() { qCDebug(interfaceapp) << "Physics disabled until entity loads: " << entity->getID() << entity->getName(); // don't break here because we want all the relevant entities to start their downloads result = false; - break; } } return result; From f80e7a374368b6b4d496df61db3267631e53e4d2 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 19 May 2017 15:58:54 -0700 Subject: [PATCH 67/93] less obfuscation --- .../src/RenderableZoneEntityItem.cpp | 16 ++++++---------- .../src/RenderableZoneEntityItem.h | 1 - 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index a27feb4c72..6556f18776 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -82,22 +82,18 @@ int RenderableZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned ch return bytesRead; } -void RenderableZoneEntityItem::initialSimulation() { - _model->setScaleToFit(true, getDimensions()); - _model->setSnapModelToRegistrationPoint(true, getRegistrationPoint()); - _model->setRotation(getRotation()); - _model->setTranslation(getPosition()); - _model->simulate(0.0f); - _needsInitialSimulation = false; -} - void RenderableZoneEntityItem::updateGeometry() { if (_model && !_model->isActive() && hasCompoundShapeURL()) { // Since we have a delayload, we need to update the geometry if it has been downloaded _model->setURL(getCompoundShapeURL()); } if (_model && _model->isActive() && _needsInitialSimulation) { - initialSimulation(); + _model->setScaleToFit(true, getDimensions()); + _model->setSnapModelToRegistrationPoint(true, getRegistrationPoint()); + _model->setRotation(getRotation()); + _model->setTranslation(getPosition()); + _model->simulate(0.0f); + _needsInitialSimulation = false; } } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index 3ebf472835..7241e34ce8 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -48,7 +48,6 @@ private: virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); } void notifyBoundChanged(); - void initialSimulation(); void updateGeometry(); template From 487319f7efca5e05881e9df2a11730c9bcf64a30 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 19 May 2017 16:53:25 -0700 Subject: [PATCH 68/93] Increment _identitySequenceId before sending ID packet for agents --- assignment-client/src/Agent.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 5864cadc15..96b2336af8 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -584,6 +584,7 @@ void Agent::setIsAvatar(bool isAvatar) { void Agent::sendAvatarIdentityPacket() { if (_isAvatar) { auto scriptedAvatar = DependencyManager::get(); + scriptedAvatar->markIdentityDataChanged(); scriptedAvatar->sendIdentityPacket(); } } From 597312ff45a06ca2385627df477df1e7d471e98f Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 20 May 2017 12:08:01 +1200 Subject: [PATCH 69/93] Reinstate missing guards --- .../src/avatars-renderer/Head.cpp | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index a268d8b616..050f9065b2 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -58,10 +58,12 @@ void Head::computeAudioLoudness(float deltaTime) { _longTermAverageLoudness = glm::mix(_longTermAverageLoudness, _averageLoudness, glm::min(deltaTime / AUDIO_LONG_TERM_AVERAGING_SECS, 1.0f)); } - float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz - _audioAttack = audioAttackAveragingRate * _audioAttack + - (1.0f - audioAttackAveragingRate) * fabs((audioLoudness - _longTermAverageLoudness) - _lastLoudness); - _lastLoudness = (audioLoudness - _longTermAverageLoudness); + if (!_isFaceTrackerConnected) { + float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz + _audioAttack = audioAttackAveragingRate * _audioAttack + + (1.0f - audioAttackAveragingRate) * fabs((audioLoudness - _longTermAverageLoudness) - _lastLoudness); + _lastLoudness = (audioLoudness - _longTermAverageLoudness); + } } void Head::computeEyeMovement(float deltaTime) { @@ -139,23 +141,25 @@ void Head::computeEyeMovement(float deltaTime) { } void Head::computeFaceMovement(float deltaTime) { - // Update audio attack data for facial animation (eyebrows and mouth) - const float BROW_LIFT_THRESHOLD = 100.0f; - if (_audioAttack > BROW_LIFT_THRESHOLD) { - _browAudioLift += sqrtf(_audioAttack) * 0.01f; - } - _browAudioLift = glm::clamp(_browAudioLift *= 0.7f, 0.0f, 1.0f); + if (!_isFaceTrackerConnected) { + // Update audio attack data for facial animation (eyebrows and mouth) + const float BROW_LIFT_THRESHOLD = 100.0f; + if (_audioAttack > BROW_LIFT_THRESHOLD) { + _browAudioLift += sqrtf(_audioAttack) * 0.01f; + } + _browAudioLift = glm::clamp(_browAudioLift *= 0.7f, 0.0f, 1.0f); - // use data to update fake Faceshift blendshape coefficients - calculateMouthShapes(deltaTime); - FaceTracker::updateFakeCoefficients(_leftEyeBlink, - _rightEyeBlink, - _browAudioLift, - _audioJawOpen, - _mouth2, - _mouth3, - _mouth4, - _transientBlendshapeCoefficients); + // use data to update fake Faceshift blendshape coefficients + calculateMouthShapes(deltaTime); + FaceTracker::updateFakeCoefficients(_leftEyeBlink, + _rightEyeBlink, + _browAudioLift, + _audioJawOpen, + _mouth2, + _mouth3, + _mouth4, + _transientBlendshapeCoefficients); + } } void Head::computeEyePosition() { From d9baa337d8fa7a1019e8b1f390bf2abcbe07c399 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 20 May 2017 12:41:50 +1200 Subject: [PATCH 70/93] Fix call order --- libraries/avatars-renderer/src/avatars-renderer/Head.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index 050f9065b2..e87fa3d983 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -175,8 +175,8 @@ void Head::computeEyePosition() { void Head::simulate(float deltaTime) { computeAudioLoudness(deltaTime); - computeFaceMovement(deltaTime); computeEyeMovement(deltaTime); + computeFaceMovement(deltaTime); computeEyePosition(); } From eef707e4e975e3f7771658453ac4e76228adac04 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 20 May 2017 12:42:40 +1200 Subject: [PATCH 71/93] Simplify code --- interface/src/avatar/MyHead.cpp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/interface/src/avatar/MyHead.cpp b/interface/src/avatar/MyHead.cpp index 793fbb79c4..f51e9922cf 100644 --- a/interface/src/avatar/MyHead.cpp +++ b/interface/src/avatar/MyHead.cpp @@ -44,17 +44,14 @@ glm::quat MyHead::getCameraOrientation() const { void MyHead::simulate(float deltaTime) { auto player = DependencyManager::get(); // Only use face trackers when not playing back a recording. - if (player->isPlaying()) { - Parent::simulate(deltaTime); - } else { - computeAudioLoudness(deltaTime); - + if (!player->isPlaying()) { FaceTracker* faceTracker = qApp->getActiveFaceTracker(); - _isFaceTrackerConnected = faceTracker && !faceTracker->isMuted(); + _isFaceTrackerConnected = faceTracker != NULL && !faceTracker->isMuted(); if (_isFaceTrackerConnected) { _transientBlendshapeCoefficients = faceTracker->getBlendshapeCoefficients(); if (typeid(*faceTracker) == typeid(DdeFaceTracker)) { + if (Menu::getInstance()->isOptionChecked(MenuOption::UseAudioForMouth)) { calculateMouthShapes(deltaTime); @@ -71,19 +68,9 @@ void MyHead::simulate(float deltaTime) { } applyEyelidOffset(getFinalOrientationInWorldFrame()); } - } else { - computeFaceMovement(deltaTime); - } - - auto eyeTracker = DependencyManager::get(); - _isEyeTrackerConnected = eyeTracker && eyeTracker->isTracking(); - if (_isEyeTrackerConnected) { - // TODO? figure out where EyeTracker data harvested. Move it here? - _saccade = glm::vec3(); - } else { - computeEyeMovement(deltaTime); } - + auto eyeTracker = DependencyManager::get(); + _isEyeTrackerConnected = eyeTracker->isTracking(); } - computeEyePosition(); + Parent::simulate(deltaTime); } From 768415695db9069600807ebeae7f537c3a01e2af Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 20 May 2017 12:43:47 +1200 Subject: [PATCH 72/93] Tidying --- interface/src/Application.cpp | 2 +- libraries/avatars-renderer/src/avatars-renderer/Head.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c39f7294c0..473349efa5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3976,7 +3976,7 @@ void Application::updateMyAvatarLookAtPosition() { if (faceAngle < MAXIMUM_FACE_ANGLE) { // Randomly look back and forth between look targets eyeContactTarget target = Menu::getInstance()->isOptionChecked(MenuOption::FixGaze) ? - LEFT_EYE : myAvatar->getEyeContactTarget(); + LEFT_EYE : myAvatar->getEyeContactTarget(); switch (target) { case LEFT_EYE: lookAtSpot = lookingAtHead->getLeftEyePosition(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index e87fa3d983..3fe22c6cac 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -59,6 +59,7 @@ void Head::computeAudioLoudness(float deltaTime) { } if (!_isFaceTrackerConnected) { + // Update audio attack data for facial animation (eyebrows and mouth) float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz _audioAttack = audioAttackAveragingRate * _audioAttack + (1.0f - audioAttackAveragingRate) * fabs((audioLoudness - _longTermAverageLoudness) - _lastLoudness); @@ -142,7 +143,6 @@ void Head::computeEyeMovement(float deltaTime) { void Head::computeFaceMovement(float deltaTime) { if (!_isFaceTrackerConnected) { - // Update audio attack data for facial animation (eyebrows and mouth) const float BROW_LIFT_THRESHOLD = 100.0f; if (_audioAttack > BROW_LIFT_THRESHOLD) { _browAudioLift += sqrtf(_audioAttack) * 0.01f; From a279d581aee16685712b24f63c29c790f948e689 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 20 May 2017 12:56:23 +1200 Subject: [PATCH 73/93] Fix code order --- .../avatars-renderer/src/avatars-renderer/Head.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index 3fe22c6cac..e5168bb90d 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -98,6 +98,12 @@ void Head::computeEyeMovement(float deltaTime) { forceBlink = true; } + const float BROW_LIFT_THRESHOLD = 100.0f; + if (_audioAttack > BROW_LIFT_THRESHOLD) { + _browAudioLift += sqrtf(_audioAttack) * 0.01f; + } + _browAudioLift = glm::clamp(_browAudioLift *= 0.7f, 0.0f, 1.0f); + const float BLINK_SPEED = 10.0f; const float BLINK_SPEED_VARIABILITY = 1.0f; const float BLINK_START_VARIABILITY = 0.25f; @@ -143,12 +149,6 @@ void Head::computeEyeMovement(float deltaTime) { void Head::computeFaceMovement(float deltaTime) { if (!_isFaceTrackerConnected) { - const float BROW_LIFT_THRESHOLD = 100.0f; - if (_audioAttack > BROW_LIFT_THRESHOLD) { - _browAudioLift += sqrtf(_audioAttack) * 0.01f; - } - _browAudioLift = glm::clamp(_browAudioLift *= 0.7f, 0.0f, 1.0f); - // use data to update fake Faceshift blendshape coefficients calculateMouthShapes(deltaTime); FaceTracker::updateFakeCoefficients(_leftEyeBlink, From 8f38ea8c6a80de8f6c901aca656af1b699ec6458 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sat, 20 May 2017 11:54:42 -0700 Subject: [PATCH 74/93] force locked entities to be static in bullet --- libraries/entities/src/EntityItem.cpp | 5 +++++ libraries/physics/src/EntityMotionState.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 14122594fe..80f992d865 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -2767,6 +2767,11 @@ void EntityItem::setLocked(bool value) { withWriteLock([&] { _locked = value; }); + markDirtyFlags(Simulation::DIRTY_MOTION_TYPE); + EntityTreePointer tree = getTree(); + if (tree) { + tree->entityChanged(getThisPointer()); + } } QString EntityItem::getUserData() const { diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 0c804fb5b7..452495cf18 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -185,6 +185,10 @@ PhysicsMotionType EntityMotionState::computePhysicsMotionType() const { return MOTION_TYPE_STATIC; } + if (_entity->getLocked()) { + return MOTION_TYPE_STATIC; + } + if (_entity->getDynamic()) { if (!_entity->getParentID().isNull()) { // if something would have been dynamic but is a child of something else, force it to be kinematic, instead. From 2512b3984841e82b89893541674c8f329500710a Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sat, 20 May 2017 14:14:33 -0700 Subject: [PATCH 75/93] don't dirty motion-type if lock value isn't actually changing --- libraries/entities/src/EntityItem.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 80f992d865..2cfb71df0c 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -2764,13 +2764,19 @@ bool EntityItem::getLocked() const { } void EntityItem::setLocked(bool value) { + bool changed { false }; withWriteLock([&] { - _locked = value; + if (_locked != value) { + _locked = value; + changed = true; + } }); - markDirtyFlags(Simulation::DIRTY_MOTION_TYPE); - EntityTreePointer tree = getTree(); - if (tree) { - tree->entityChanged(getThisPointer()); + if (changed) { + markDirtyFlags(Simulation::DIRTY_MOTION_TYPE); + EntityTreePointer tree = getTree(); + if (tree) { + tree->entityChanged(getThisPointer()); + } } } From 727ba1320a0719d19f7ceaa2f82fc5f94c6e5cfa Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 21 May 2017 11:15:51 +1200 Subject: [PATCH 76/93] Add unpublishedScripts content to the JS project --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 406fb5aeb1..3c90256134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,9 +208,10 @@ foreach(CUSTOM_MACRO ${HIFI_CUSTOM_MACROS}) include(${CUSTOM_MACRO}) endforeach() -file(GLOB_RECURSE JS_SRC scripts/*.js) +file(GLOB_RECURSE JS_SRC scripts/*.js unpublishedScripts/*.js) add_custom_target(js SOURCES ${JS_SRC}) GroupSources("scripts") +GroupSources("unpublishedScripts") if (UNIX) install( From c68efc2ed092f0cb592a15bcf545920201bdcabd Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 08:29:35 -0700 Subject: [PATCH 77/93] treat locked like other properties that affect simulation --- libraries/entities/src/EntityItem.cpp | 10 ++++++++-- libraries/entities/src/EntityItem.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 2cfb71df0c..4b26d43fb6 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -810,7 +810,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_COLLISIONLESS, bool, updateCollisionless); READ_ENTITY_PROPERTY(PROP_COLLISION_MASK, uint8_t, updateCollisionMask); READ_ENTITY_PROPERTY(PROP_DYNAMIC, bool, updateDynamic); - READ_ENTITY_PROPERTY(PROP_LOCKED, bool, setLocked); + READ_ENTITY_PROPERTY(PROP_LOCKED, bool, updateLocked); READ_ENTITY_PROPERTY(PROP_USER_DATA, QString, setUserData); if (args.bitstreamVersion >= VERSION_ENTITIES_HAS_MARKETPLACE_ID) { @@ -1344,6 +1344,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(dynamic, updateDynamic); SET_ENTITY_PROPERTY_FROM_PROPERTIES(created, updateCreated); SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifetime, updateLifetime); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, updateLocked); // non-simulation properties below SET_ENTITY_PROPERTY_FROM_PROPERTIES(script, setScript); @@ -1352,7 +1353,6 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionSoundURL, setCollisionSoundURL); SET_ENTITY_PROPERTY_FROM_PROPERTIES(localRenderAlpha, setLocalRenderAlpha); SET_ENTITY_PROPERTY_FROM_PROPERTIES(visible, setVisible); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, setLocked); SET_ENTITY_PROPERTY_FROM_PROPERTIES(userData, setUserData); SET_ENTITY_PROPERTY_FROM_PROPERTIES(marketplaceID, setMarketplaceID); SET_ENTITY_PROPERTY_FROM_PROPERTIES(name, setName); @@ -2764,6 +2764,12 @@ bool EntityItem::getLocked() const { } void EntityItem::setLocked(bool value) { + withWriteLock([&] { + _locked = value; + }); +} + +void EntityItem::updateLocked(bool value) { bool changed { false }; withWriteLock([&] { if (_locked != value) { diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 1896893b52..ba6077592e 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -305,6 +305,7 @@ public: bool getLocked() const; void setLocked(bool value); + void updateLocked(bool value); QString getUserData() const; virtual void setUserData(const QString& value); From 381de7a1e2abde0e26f63a19cc5b43b2d73e53fa Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 08:42:53 -0700 Subject: [PATCH 78/93] tabs --- libraries/entities/src/EntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 4b26d43fb6..1d83365102 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -2765,7 +2765,7 @@ bool EntityItem::getLocked() const { void EntityItem::setLocked(bool value) { withWriteLock([&] { - _locked = value; + _locked = value; }); } From 4142d8c6862ff06949cf2590326d8571be8493bf Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 11:05:18 -0700 Subject: [PATCH 79/93] actions shouldn't change locked entities --- libraries/physics/src/ObjectAction.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/physics/src/ObjectAction.cpp b/libraries/physics/src/ObjectAction.cpp index de14a46be4..87732ded03 100644 --- a/libraries/physics/src/ObjectAction.cpp +++ b/libraries/physics/src/ObjectAction.cpp @@ -58,6 +58,10 @@ void ObjectAction::updateAction(btCollisionWorld* collisionWorld, btScalar delta return; } + if (ownerEntity->getLocked()) { + return; + } + updateActionWorker(deltaTimeStep); } From afee753570644a7de63c16a82a7cdf4debc767f4 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 22 May 2017 09:52:18 -0700 Subject: [PATCH 80/93] Prevent ping-ponging of texture quality when oversubscribed --- libraries/gpu-gl/src/gpu/gl/GLTexture.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp index 84dc49deba..b61a3b82c4 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp @@ -535,12 +535,14 @@ void GLVariableAllocationSupport::processWorkQueue(WorkQueue& workQueue) { vartexture->demote(); workQueue.pop(); addToWorkQueue(texture); + _memoryPressureStateStale = true; break; case MemoryPressureState::Undersubscribed: vartexture->promote(); workQueue.pop(); addToWorkQueue(texture); + _memoryPressureStateStale = true; break; case MemoryPressureState::Transfer: From 3e09c911f57dc02fbba3a81ad6bf2da234c7a352 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 22 May 2017 14:19:36 -0700 Subject: [PATCH 81/93] remove number of versions behind from the update dialog --- interface/src/ui/UpdateDialog.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/interface/src/ui/UpdateDialog.cpp b/interface/src/ui/UpdateDialog.cpp index 60acd0895b..2dcc0c07eb 100644 --- a/interface/src/ui/UpdateDialog.cpp +++ b/interface/src/ui/UpdateDialog.cpp @@ -23,11 +23,8 @@ UpdateDialog::UpdateDialog(QQuickItem* parent) : auto applicationUpdater = DependencyManager::get(); int currentVersion = QCoreApplication::applicationVersion().toInt(); int latestVersion = applicationUpdater.data()->getBuildData().lastKey(); - int versionsBehind = latestVersion - currentVersion; _updateAvailableDetails = "v" + QString::number(latestVersion) + " released on " + QString(applicationUpdater.data()->getBuildData()[latestVersion]["releaseTime"]).replace(" ", " "); - _updateAvailableDetails += "\nYou are " + QString::number(versionsBehind) + " version" - + (versionsBehind > 1 ? "s" : "") + " behind"; _releaseNotes = ""; for (int i = latestVersion; i > currentVersion; i--) { From e77e90081293c80c7534d80f747195a1b74100aa Mon Sep 17 00:00:00 2001 From: seefo Date: Mon, 22 May 2017 14:33:33 -0700 Subject: [PATCH 82/93] Added refreshing of Account Manager's access token Changed indentention style to match guidelines --- libraries/networking/src/AccountManager.cpp | 94 ++++++++++++++++++++- libraries/networking/src/AccountManager.h | 5 ++ 2 files changed, 98 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 83f1504f00..c80910818e 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -189,6 +189,12 @@ void AccountManager::setAuthURL(const QUrl& authURL) { requestProfile(); } + // prepare to refresh our token if it is about to expire + if (needsToRefreshToken()) { + qCDebug(networking) << "Refreshing access token since it will be expiring soon."; + requestNewAccessToken(); + } + // tell listeners that the auth endpoint has changed emit authEndpointChanged(); } @@ -443,6 +449,12 @@ bool AccountManager::hasValidAccessToken() { return false; } else { + + if (!_isWaitingForTokenRefresh && needsToRefreshToken()) { + qCDebug(networking) << "Refreshing access token since it will be expiring soon."; + requestNewAccessToken(); + } + return true; } } @@ -458,6 +470,15 @@ bool AccountManager::checkAndSignalForAccessToken() { return hasToken; } +bool AccountManager::needsToRefreshToken() { + if (!_accountInfo.getAccessToken().token.isEmpty()) + { + qlonglong expireThreshold = QDateTime::currentDateTime().addSecs(1 * 60 * 60).toMSecsSinceEpoch(); + if (_accountInfo.getAccessToken().expiryTimestamp < expireThreshold) return true; + } + return false; +} + void AccountManager::setAccessTokenForCurrentAuthURL(const QString& accessToken) { // replace the account info access token with a new OAuthAccessToken OAuthAccessToken newOAuthToken; @@ -530,6 +551,33 @@ void AccountManager::requestAccessTokenWithSteam(QByteArray authSessionTicket) { connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestAccessTokenError(QNetworkReply::NetworkError))); } +void AccountManager::requestNewAccessToken() { + _isWaitingForTokenRefresh = true; + + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + + QNetworkRequest request; + request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); + request.setHeader(QNetworkRequest::UserAgentHeader, _userAgentGetter()); + + QUrl grantURL = _authURL; + grantURL.setPath("/oauth/token"); + + const QString ACCOUNT_MANAGER_REQUESTED_SCOPE = "owner"; + + QByteArray postData; + postData.append("grant_type=refresh_token&"); + postData.append("refresh_token=" + QUrl::toPercentEncoding(_accountInfo.getAccessToken().refreshToken) + "&"); + postData.append("scope=" + ACCOUNT_MANAGER_REQUESTED_SCOPE); + + request.setUrl(grantURL); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + + QNetworkReply* requestReply = networkAccessManager.post(request, postData); + connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestNewAccessTokenFinished); + connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestNewAccessTokenError(QNetworkReply::NetworkError))); +} + void AccountManager::requestAccessTokenFinished() { QNetworkReply* requestReply = reinterpret_cast(sender()); @@ -568,10 +616,54 @@ void AccountManager::requestAccessTokenFinished() { void AccountManager::requestAccessTokenError(QNetworkReply::NetworkError error) { // TODO: error handling - qCDebug(networking) << "AccountManager requestError - " << error; + qCDebug(networking) << "AccountManager: failed to fetch access token - " << error; emit loginFailed(); } +void AccountManager::requestNewAccessTokenFinished() { + QNetworkReply* requestReply = reinterpret_cast(sender()); + + QJsonDocument jsonResponse = QJsonDocument::fromJson(requestReply->readAll()); + const QJsonObject& rootObject = jsonResponse.object(); + + if (!rootObject.contains("error")) { + // construct an OAuthAccessToken from the json object + + if (!rootObject.contains("access_token") || !rootObject.contains("expires_in") + || !rootObject.contains("token_type")) { + // TODO: error handling - malformed token response + qCDebug(networking) << "Received a response for refresh grant that is missing one or more expected values."; + } + else { + // clear the path from the response URL so we have the right root URL for this access token + QUrl rootURL = requestReply->url(); + rootURL.setPath(""); + + qCDebug(networking) << "Storing an account with access-token for" << qPrintable(rootURL.toString()); + + _accountInfo.setAccessTokenFromJSON(rootObject); + + persistAccountToFile(); + + requestProfile(); + } + } + else { + // TODO: error handling + qCDebug(networking) << "Error in response for refresh grant -" << rootObject["error_description"].toString(); + emit loginFailed(); + } + + _isWaitingForTokenRefresh = false; +} + +void AccountManager::requestNewAccessTokenError(QNetworkReply::NetworkError error) { + // TODO: error handling + qCDebug(networking) << "AccountManager: failed to refresh access token - " << error; + emit loginFailed(); + _isWaitingForTokenRefresh = false; +} + void AccountManager::requestProfile() { QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index eb4d224501..d0fd507173 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -79,6 +79,7 @@ public: bool isLoggedIn() { return !_authURL.isEmpty() && hasValidAccessToken(); } bool hasValidAccessToken(); + bool needsToRefreshToken(); Q_INVOKABLE bool checkAndSignalForAccessToken(); void setAccessTokenForCurrentAuthURL(const QString& accessToken); @@ -97,10 +98,13 @@ public: public slots: void requestAccessToken(const QString& login, const QString& password); void requestAccessTokenWithSteam(QByteArray authSessionTicket); + void requestNewAccessToken(); void requestAccessTokenFinished(); + void requestNewAccessTokenFinished(); void requestProfileFinished(); void requestAccessTokenError(QNetworkReply::NetworkError error); + void requestNewAccessTokenError(QNetworkReply::NetworkError error); void requestProfileError(QNetworkReply::NetworkError error); void logout(); void generateNewUserKeypair() { generateNewKeypair(); } @@ -141,6 +145,7 @@ private: QMap _pendingCallbackMap; DataServerAccountInfo _accountInfo; + bool _isWaitingForTokenRefresh { false }; bool _isAgent { false }; bool _isWaitingForKeypairResponse { false }; From 9cb990a3aaeb79b0097a46ba1fbf612f8242fcf1 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 23 May 2017 09:53:42 +1200 Subject: [PATCH 83/93] Simplify head simulation methods --- .../src/avatars-renderer/Head.cpp | 46 ++++++------------- .../src/avatars-renderer/Head.h | 5 -- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index e5168bb90d..96ecd86ff4 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -23,8 +23,6 @@ #include "Avatar.h" -const float NORMAL_HZ = 60.0f; // the update rate the constant values were tuned for - using namespace std; static bool disableEyelidAdjustment { false }; @@ -43,7 +41,9 @@ void Head::reset() { _baseYaw = _basePitch = _baseRoll = 0.0f; } -void Head::computeAudioLoudness(float deltaTime) { +void Head::simulate(float deltaTime) { + const float NORMAL_HZ = 60.0f; // the update rate the constant values were tuned for + // grab the audio loudness from the owning avatar, if we have one float audioLoudness = _owningAvatar ? _owningAvatar->getAudioLoudness() : 0.0f; @@ -58,16 +58,6 @@ void Head::computeAudioLoudness(float deltaTime) { _longTermAverageLoudness = glm::mix(_longTermAverageLoudness, _averageLoudness, glm::min(deltaTime / AUDIO_LONG_TERM_AVERAGING_SECS, 1.0f)); } - if (!_isFaceTrackerConnected) { - // Update audio attack data for facial animation (eyebrows and mouth) - float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz - _audioAttack = audioAttackAveragingRate * _audioAttack + - (1.0f - audioAttackAveragingRate) * fabs((audioLoudness - _longTermAverageLoudness) - _lastLoudness); - _lastLoudness = (audioLoudness - _longTermAverageLoudness); - } -} - -void Head::computeEyeMovement(float deltaTime) { if (!_isFaceTrackerConnected) { if (!_isEyeTrackerConnected) { // Update eye saccades @@ -98,6 +88,12 @@ void Head::computeEyeMovement(float deltaTime) { forceBlink = true; } + // Update audio attack data for facial animation (eyebrows and mouth) + float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz + _audioAttack = audioAttackAveragingRate * _audioAttack + + (1.0f - audioAttackAveragingRate) * fabs((audioLoudness - _longTermAverageLoudness) - _lastLoudness); + _lastLoudness = (audioLoudness - _longTermAverageLoudness); + const float BROW_LIFT_THRESHOLD = 100.0f; if (_audioAttack > BROW_LIFT_THRESHOLD) { _browAudioLift += sqrtf(_audioAttack) * 0.01f; @@ -141,14 +137,6 @@ void Head::computeEyeMovement(float deltaTime) { } } - applyEyelidOffset(getOrientation()); - } else { - _saccade = glm::vec3(); - } -} - -void Head::computeFaceMovement(float deltaTime) { - if (!_isFaceTrackerConnected) { // use data to update fake Faceshift blendshape coefficients calculateMouthShapes(deltaTime); FaceTracker::updateFakeCoefficients(_leftEyeBlink, @@ -159,10 +147,13 @@ void Head::computeFaceMovement(float deltaTime) { _mouth3, _mouth4, _transientBlendshapeCoefficients); - } -} -void Head::computeEyePosition() { + applyEyelidOffset(getOrientation()); + + } else { + _saccade = glm::vec3(); + } + _leftEyePosition = _rightEyePosition = getPosition(); if (_owningAvatar) { auto skeletonModel = static_cast(_owningAvatar)->getSkeletonModel(); @@ -173,13 +164,6 @@ void Head::computeEyePosition() { _eyePosition = 0.5f * (_leftEyePosition + _rightEyePosition); } -void Head::simulate(float deltaTime) { - computeAudioLoudness(deltaTime); - computeEyeMovement(deltaTime); - computeFaceMovement(deltaTime); - computeEyePosition(); -} - void Head::calculateMouthShapes(float deltaTime) { const float JAW_OPEN_SCALE = 0.015f; const float JAW_OPEN_RATE = 0.9f; diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.h b/libraries/avatars-renderer/src/avatars-renderer/Head.h index 39331500b5..c5902285b9 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.h @@ -83,11 +83,6 @@ public: float getTimeWithoutTalking() const { return _timeWithoutTalking; } protected: - void computeAudioLoudness(float deltaTime); - void computeEyeMovement(float deltaTime); - void computeFaceMovement(float deltaTime); - void computeEyePosition(); - // disallow copies of the Head, copy of owning Avatar is disallowed too Head(const Head&); Head& operator= (const Head&); From b0962865b201449fd91a39d96438b4b736b67882 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 23 May 2017 09:57:53 +1200 Subject: [PATCH 84/93] Code review --- interface/src/avatar/MyHead.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyHead.cpp b/interface/src/avatar/MyHead.cpp index f51e9922cf..f02aefec5b 100644 --- a/interface/src/avatar/MyHead.cpp +++ b/interface/src/avatar/MyHead.cpp @@ -46,7 +46,7 @@ void MyHead::simulate(float deltaTime) { // Only use face trackers when not playing back a recording. if (!player->isPlaying()) { FaceTracker* faceTracker = qApp->getActiveFaceTracker(); - _isFaceTrackerConnected = faceTracker != NULL && !faceTracker->isMuted(); + _isFaceTrackerConnected = faceTracker != nullptr && !faceTracker->isMuted(); if (_isFaceTrackerConnected) { _transientBlendshapeCoefficients = faceTracker->getBlendshapeCoefficients(); From 09c98b3ac3983a165d11b98f7d8fefe0c9f7e401 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 22 May 2017 15:31:11 -0700 Subject: [PATCH 85/93] Fix ScriptEngine thread being deleted too early The thread appeared to be deleted before waitTillDoneRunning was finished. This is a speculative fix. This ensures that the QThread isn't deleted until after the ScriptEngine is deleted. --- libraries/script-engine/src/ScriptEngine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 8bbb9a3e2c..9c7dd6f230 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -231,7 +231,7 @@ void ScriptEngine::disconnectNonEssentialSignals() { // Ensure the thread should be running, and does exist if (_isRunning && _isThreaded && (workerThread = thread())) { connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit); - connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater); + connect(this, &QObject::destroyed, workerThread, &QObject::deleteLater); } } @@ -346,7 +346,7 @@ void ScriptEngine::runInThread() { // disconnectNonEssentialSignals() method connect(workerThread, &QThread::started, this, &ScriptEngine::run); connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit); - connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater); + connect(this, &QObject::destroyed, workerThread, &QObject::deleteLater); workerThread->start(); } From 841f8cb86bfbc710336c6aee1986c0598b410040 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 22 May 2017 15:33:57 -0700 Subject: [PATCH 86/93] make sure AvatarData objects have the node session ID --- assignment-client/src/avatars/AvatarMixerClientData.cpp | 7 +++++++ assignment-client/src/avatars/AvatarMixerClientData.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index 15a7f50fa3..4d80bc7d17 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -16,7 +16,14 @@ #include "AvatarMixerClientData.h" +AvatarMixerClientData::AvatarMixerClientData(const QUuid& nodeID) : + NodeData(nodeID) +{ + _currentViewFrustum.invalidate(); + // in case somebody calls getSessionUUID on the AvatarData instance, make sure it has the right ID + _avatar->setID(nodeID); +} void AvatarMixerClientData::queuePacket(QSharedPointer message, SharedNodePointer node) { if (!_packetQueue.node) { diff --git a/assignment-client/src/avatars/AvatarMixerClientData.h b/assignment-client/src/avatars/AvatarMixerClientData.h index 76519466b5..c905b10251 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.h +++ b/assignment-client/src/avatars/AvatarMixerClientData.h @@ -36,7 +36,7 @@ const QString INBOUND_AVATAR_DATA_STATS_KEY = "inbound_av_data_kbps"; class AvatarMixerClientData : public NodeData { Q_OBJECT public: - AvatarMixerClientData(const QUuid& nodeID = QUuid()) : NodeData(nodeID) { _currentViewFrustum.invalidate(); } + AvatarMixerClientData(const QUuid& nodeID = QUuid()); virtual ~AvatarMixerClientData() {} using HRCTime = p_high_resolution_clock::time_point; From 3c9205d0b238609c8a4a35f7952e9c5e7c939be5 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 22 May 2017 15:35:38 -0700 Subject: [PATCH 87/93] Remove invalid comment and unnecessary check from ScriptEngine This removes an invalid comment - waitTillDoneRunning is not only called from the main thread - and remove a check to make sure thread() is not null because it should no longer be deleted before ScriptEngine. --- libraries/script-engine/src/ScriptEngine.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 9c7dd6f230..03d1eb5868 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -397,16 +397,12 @@ void ScriptEngine::waitTillDoneRunning() { } } - // NOTE: This will be called on the main application thread from stopAllScripts. - // The application thread will need to continue to process events, because + // NOTE: This will be called on the main application thread (among other threads) from stopAllScripts. + // The thread will need to continue to process events, because // the scripts will likely need to marshall messages across to the main thread, e.g. // if they access Settings or Menu in any of their shutdown code. So: - // Process events for the main application thread, allowing invokeMethod calls to pass between threads. + // Process events for this thread, allowing invokeMethod calls to pass between threads. QCoreApplication::processEvents(); - // In some cases (debugging), processEvents may give the thread enough time to shut down, so recheck it. - if (!thread()) { - break; - } // Avoid a pure busy wait QThread::yieldCurrentThread(); From cecbf431297f1cd9e25f468eab1881f91217e5e3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 22 May 2017 16:17:01 -0700 Subject: [PATCH 88/93] make server entity scripts respect script whitelist --- libraries/entities/src/EntityTree.cpp | 93 ++++++++++++++++++++------- libraries/entities/src/EntityTree.h | 2 + 2 files changed, 71 insertions(+), 24 deletions(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 6975d017b0..11cddf2634 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -957,6 +957,24 @@ void EntityTree::bumpTimestamp(EntityItemProperties& properties) { //fixme put c properties.setLastEdited(properties.getLastEdited() + LAST_EDITED_SERVERSIDE_BUMP); } +bool EntityTree::isScriptInWhitelist(const QString& scriptProperty) { + + // grab a URL representation of the entity script so we can check the host for this script + auto entityScriptURL = QUrl::fromUserInput(scriptProperty); + + for (const auto& whiteListedPrefix : _entityScriptSourceWhitelist) { + auto whiteListURL = QUrl::fromUserInput(whiteListedPrefix); + + // check if this script URL matches the whitelist domain and, optionally, is beneath the path + if (entityScriptURL.host().compare(whiteListURL.host(), Qt::CaseInsensitive) == 0 && + entityScriptURL.path().startsWith(whiteListURL.path(), Qt::CaseInsensitive)) { + return true; + } + } + + return false; +} + int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned char* editData, int maxLength, const SharedNodePointer& senderNode) { @@ -986,7 +1004,8 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c quint64 startFilter = 0, endFilter = 0; quint64 startLogging = 0, endLogging = 0; - bool suppressDisallowedScript = false; + bool suppressDisallowedClientScript = false; + bool suppressDisallowedServerScript = false; bool isPhysics = message.getType() == PacketType::EntityPhysics; _totalEditMessages++; @@ -1011,36 +1030,57 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c } } - if (validEditPacket && !_entityScriptSourceWhitelist.isEmpty() && !properties.getScript().isEmpty()) { - bool passedWhiteList = false; + if (validEditPacket && !_entityScriptSourceWhitelist.isEmpty()) { - // grab a URL representation of the entity script so we can check the host for this script - auto entityScriptURL = QUrl::fromUserInput(properties.getScript()); + bool wasDeletedBecauseOfClientScript = false; - for (const auto& whiteListedPrefix : _entityScriptSourceWhitelist) { - auto whiteListURL = QUrl::fromUserInput(whiteListedPrefix); + // check the client entity script to make sure its URL is in the whitelist + if (!properties.getScript().isEmpty()) { + bool clientScriptPassedWhitelist = isScriptInWhitelist(properties.getScript()); - // check if this script URL matches the whitelist domain and, optionally, is beneath the path - if (entityScriptURL.host().compare(whiteListURL.host(), Qt::CaseInsensitive) == 0 && - entityScriptURL.path().startsWith(whiteListURL.path(), Qt::CaseInsensitive)) { - passedWhiteList = true; - break; + if (!clientScriptPassedWhitelist) { + if (wantEditLogging()) { + qCDebug(entities) << "User [" << senderNode->getUUID() + << "] attempting to set entity script not on whitelist, edit rejected"; + } + + // If this was an add, we also want to tell the client that sent this edit that the entity was not added. + if (isAdd) { + QWriteLocker locker(&_recentlyDeletedEntitiesLock); + _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); + validEditPacket = false; + wasDeletedBecauseOfClientScript = true; + } else { + suppressDisallowedClientScript = true; + } } } - if (!passedWhiteList) { - if (wantEditLogging()) { - qCDebug(entities) << "User [" << senderNode->getUUID() << "] attempting to set entity script not on whitelist, edit rejected"; - } - // If this was an add, we also want to tell the client that sent this edit that the entity was not added. - if (isAdd) { - QWriteLocker locker(&_recentlyDeletedEntitiesLock); - _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); - validEditPacket = passedWhiteList; - } else { - suppressDisallowedScript = true; + // check all server entity scripts to make sure their URLs are in the whitelist + if (!properties.getServerScripts().isEmpty()) { + bool serverScriptPassedWhitelist = isScriptInWhitelist(properties.getServerScripts()); + + if (!serverScriptPassedWhitelist) { + if (wantEditLogging()) { + qCDebug(entities) << "User [" << senderNode->getUUID() + << "] attempting to set server entity script not on whitelist, edit rejected"; + } + + // If this was an add, we also want to tell the client that sent this edit that the entity was not added. + if (isAdd) { + // Make sure we didn't already need to send back a delete because the client script failed + // the whitelist check + if (!wasDeletedBecauseOfClientScript) { + QWriteLocker locker(&_recentlyDeletedEntitiesLock); + _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); + validEditPacket = false; + } + } else { + suppressDisallowedServerScript = true; + } } } + } if ((isAdd || properties.lifetimeChanged()) && @@ -1075,11 +1115,16 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c if (existingEntity && !isAdd) { - if (suppressDisallowedScript) { + if (suppressDisallowedClientScript) { bumpTimestamp(properties); properties.setScript(existingEntity->getScript()); } + if (suppressDisallowedServerScript) { + bumpTimestamp(properties); + properties.setServerScripts(existingEntity->getServerScripts()); + } + // if the EntityItem exists, then update it startLogging = usecTimestampNow(); if (wantEditLogging()) { diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index d7e069b005..c938c7e068 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -303,6 +303,8 @@ protected: void notifyNewlyCreatedEntity(const EntityItem& newEntity, const SharedNodePointer& senderNode); + bool isScriptInWhitelist(const QString& scriptURL); + QReadWriteLock _newlyCreatedHooksLock; QVector _newlyCreatedHooks; From a638704a8c2750ec33c793af6b72eebc3ced12c8 Mon Sep 17 00:00:00 2001 From: seefo Date: Mon, 22 May 2017 16:55:32 -0700 Subject: [PATCH 89/93] Modified AccountManager code to better meet style guidelines --- libraries/networking/src/AccountManager.cpp | 45 ++++++++------------- libraries/networking/src/AccountManager.h | 6 +-- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index c80910818e..c525b1b363 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -92,6 +92,7 @@ AccountManager::AccountManager(UserAgentGetter userAgentGetter) : } const QString DOUBLE_SLASH_SUBSTITUTE = "slashslash"; +const QString ACCOUNT_MANAGER_REQUESTED_SCOPE = "owner"; void AccountManager::logout() { // a logout means we want to delete the DataServerAccountInfo we currently have for this URL, in-memory and in file @@ -192,7 +193,7 @@ void AccountManager::setAuthURL(const QUrl& authURL) { // prepare to refresh our token if it is about to expire if (needsToRefreshToken()) { qCDebug(networking) << "Refreshing access token since it will be expiring soon."; - requestNewAccessToken(); + refreshAccessToken(); } // tell listeners that the auth endpoint has changed @@ -452,7 +453,7 @@ bool AccountManager::hasValidAccessToken() { if (!_isWaitingForTokenRefresh && needsToRefreshToken()) { qCDebug(networking) << "Refreshing access token since it will be expiring soon."; - requestNewAccessToken(); + refreshAccessToken(); } return true; @@ -471,12 +472,12 @@ bool AccountManager::checkAndSignalForAccessToken() { } bool AccountManager::needsToRefreshToken() { - if (!_accountInfo.getAccessToken().token.isEmpty()) - { + if (!_accountInfo.getAccessToken().token.isEmpty()) { qlonglong expireThreshold = QDateTime::currentDateTime().addSecs(1 * 60 * 60).toMSecsSinceEpoch(); - if (_accountInfo.getAccessToken().expiryTimestamp < expireThreshold) return true; + return _accountInfo.getAccessToken().expiryTimestamp < expireThreshold; + } else { + return false; } - return false; } void AccountManager::setAccessTokenForCurrentAuthURL(const QString& accessToken) { @@ -511,8 +512,6 @@ void AccountManager::requestAccessToken(const QString& login, const QString& pas QUrl grantURL = _authURL; grantURL.setPath("/oauth/token"); - const QString ACCOUNT_MANAGER_REQUESTED_SCOPE = "owner"; - QByteArray postData; postData.append("grant_type=password&"); postData.append("username=" + login + "&"); @@ -536,8 +535,6 @@ void AccountManager::requestAccessTokenWithSteam(QByteArray authSessionTicket) { QUrl grantURL = _authURL; grantURL.setPath("/oauth/token"); - const QString ACCOUNT_MANAGER_REQUESTED_SCOPE = "owner"; - QByteArray postData; postData.append("grant_type=password&"); postData.append("steam_auth_ticket=" + QUrl::toPercentEncoding(authSessionTicket) + "&"); @@ -551,7 +548,8 @@ void AccountManager::requestAccessTokenWithSteam(QByteArray authSessionTicket) { connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestAccessTokenError(QNetworkReply::NetworkError))); } -void AccountManager::requestNewAccessToken() { +void AccountManager::refreshAccessToken() { + _isWaitingForTokenRefresh = true; QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); @@ -563,8 +561,6 @@ void AccountManager::requestNewAccessToken() { QUrl grantURL = _authURL; grantURL.setPath("/oauth/token"); - const QString ACCOUNT_MANAGER_REQUESTED_SCOPE = "owner"; - QByteArray postData; postData.append("grant_type=refresh_token&"); postData.append("refresh_token=" + QUrl::toPercentEncoding(_accountInfo.getAccessToken().refreshToken) + "&"); @@ -574,8 +570,8 @@ void AccountManager::requestNewAccessToken() { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QNetworkReply* requestReply = networkAccessManager.post(request, postData); - connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestNewAccessTokenFinished); - connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestNewAccessTokenError(QNetworkReply::NetworkError))); + connect(requestReply, &QNetworkReply::finished, this, &AccountManager::refreshAccessTokenFinished); + connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(refreshAccessTokenError(QNetworkReply::NetworkError))); } void AccountManager::requestAccessTokenFinished() { @@ -620,7 +616,7 @@ void AccountManager::requestAccessTokenError(QNetworkReply::NetworkError error) emit loginFailed(); } -void AccountManager::requestNewAccessTokenFinished() { +void AccountManager::refreshAccessTokenFinished() { QNetworkReply* requestReply = reinterpret_cast(sender()); QJsonDocument jsonResponse = QJsonDocument::fromJson(requestReply->readAll()); @@ -633,34 +629,27 @@ void AccountManager::requestNewAccessTokenFinished() { || !rootObject.contains("token_type")) { // TODO: error handling - malformed token response qCDebug(networking) << "Received a response for refresh grant that is missing one or more expected values."; - } - else { + } else { // clear the path from the response URL so we have the right root URL for this access token QUrl rootURL = requestReply->url(); rootURL.setPath(""); - qCDebug(networking) << "Storing an account with access-token for" << qPrintable(rootURL.toString()); + qCDebug(networking) << "Storing an account with a refreshed access-token for" << qPrintable(rootURL.toString()); _accountInfo.setAccessTokenFromJSON(rootObject); persistAccountToFile(); - - requestProfile(); } - } - else { - // TODO: error handling - qCDebug(networking) << "Error in response for refresh grant -" << rootObject["error_description"].toString(); - emit loginFailed(); + } else { + qCWarning(networking) << "Error in response for refresh grant - " << rootObject["error_description"].toString(); } _isWaitingForTokenRefresh = false; } -void AccountManager::requestNewAccessTokenError(QNetworkReply::NetworkError error) { +void AccountManager::refreshAccessTokenError(QNetworkReply::NetworkError error) { // TODO: error handling qCDebug(networking) << "AccountManager: failed to refresh access token - " << error; - emit loginFailed(); _isWaitingForTokenRefresh = false; } diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index d0fd507173..dd2216957f 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -98,13 +98,13 @@ public: public slots: void requestAccessToken(const QString& login, const QString& password); void requestAccessTokenWithSteam(QByteArray authSessionTicket); - void requestNewAccessToken(); + void refreshAccessToken(); void requestAccessTokenFinished(); - void requestNewAccessTokenFinished(); + void refreshAccessTokenFinished(); void requestProfileFinished(); void requestAccessTokenError(QNetworkReply::NetworkError error); - void requestNewAccessTokenError(QNetworkReply::NetworkError error); + void refreshAccessTokenError(QNetworkReply::NetworkError error); void requestProfileError(QNetworkReply::NetworkError error); void logout(); void generateNewUserKeypair() { generateNewKeypair(); } From f7db877b7f5d0fa00e5435221df6753ad5dd6e4b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 22 May 2017 17:29:15 -0700 Subject: [PATCH 90/93] payload keeps weak pointer to Model --- .../src/CauterizedMeshPartPayload.cpp | 14 ++- .../src/CauterizedMeshPartPayload.h | 2 +- .../render-utils/src/CauterizedModel.cpp | 11 +- .../render-utils/src/MeshPartPayload.cpp | 102 ++++++++++-------- libraries/render-utils/src/MeshPartPayload.h | 6 +- libraries/render-utils/src/Model.cpp | 11 +- 6 files changed, 85 insertions(+), 61 deletions(-) diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp index 2e3d0385cd..f3ee846d39 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp @@ -17,7 +17,7 @@ using namespace render; -CauterizedMeshPartPayload::CauterizedMeshPartPayload(Model* model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) +CauterizedMeshPartPayload::CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) : ModelMeshPartPayload(model, meshIndex, partIndex, shapeIndex, transform, offsetTransform) {} void CauterizedMeshPartPayload::updateTransformForCauterizedMesh( @@ -29,8 +29,16 @@ void CauterizedMeshPartPayload::updateTransformForCauterizedMesh( void CauterizedMeshPartPayload::bindTransform(gpu::Batch& batch, const render::ShapePipeline::LocationsPointer locations, RenderArgs::RenderMode renderMode) const { // Still relying on the raw data from the model - CauterizedModel* skeleton = static_cast(_model); - bool useCauterizedMesh = (renderMode != RenderArgs::RenderMode::SHADOW_RENDER_MODE) && skeleton->getEnableCauterization(); + bool useCauterizedMesh = (renderMode != RenderArgs::RenderMode::SHADOW_RENDER_MODE); + if (useCauterizedMesh) { + ModelPointer model = _model.lock(); + if (model) { + CauterizedModel* skeleton = static_cast(model.get()); + useCauterizedMesh = useCauterizedMesh && skeleton->getEnableCauterization(); + } else { + useCauterizedMesh = false; + } + } if (useCauterizedMesh) { if (_cauterizedClusterBuffer) { diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.h b/libraries/render-utils/src/CauterizedMeshPartPayload.h index 010cd6fcb6..5e3135ea84 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.h +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.h @@ -13,7 +13,7 @@ class CauterizedMeshPartPayload : public ModelMeshPartPayload { public: - CauterizedMeshPartPayload(Model* model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); void updateTransformForCauterizedMesh(const Transform& renderTransform, const gpu::BufferPointer& buffer); diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 14625952ea..067ef45aed 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -78,7 +78,7 @@ void CauterizedModel::createVisibleRenderItemSet() { // Create the render payloads int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - auto ptr = std::make_shared(this, i, partIndex, shapeID, transform, offset); + auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); _modelMeshRenderItems << std::static_pointer_cast(ptr); shapeID++; } @@ -207,11 +207,12 @@ void CauterizedModel::updateRenderItems() { QList keys = self->getRenderItems().keys(); foreach (auto itemID, keys) { transaction.updateItem(itemID, [modelTransform, deleteGeometryCounter](CauterizedMeshPartPayload& data) { - if (data._model && data._model->isLoaded()) { + ModelPointer model = data._model.lock(); + if (model && model->isLoaded()) { // Ensure the model geometry was not reset between frames - if (deleteGeometryCounter == data._model->getGeometryCounter()) { + if (deleteGeometryCounter == model->getGeometryCounter()) { // this stuff identical to what happens in regular Model - const Model::MeshState& state = data._model->getMeshState(data._meshIndex); + const Model::MeshState& state = model->getMeshState(data._meshIndex); Transform renderTransform = modelTransform; if (state.clusterMatrices.size() == 1) { renderTransform = modelTransform.worldTransform(Transform(state.clusterMatrices[0])); @@ -219,7 +220,7 @@ void CauterizedModel::updateRenderItems() { data.updateTransformForSkinnedMesh(renderTransform, modelTransform, state.clusterBuffer); // this stuff for cauterized mesh - CauterizedModel* cModel = static_cast(data._model); + CauterizedModel* cModel = static_cast(model.get()); const Model::MeshState& cState = cModel->getCauterizeMeshState(data._meshIndex); renderTransform = modelTransform; if (cState.clusterMatrices.size() == 1) { diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 2e08420073..b4fd7e7d2a 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -14,7 +14,6 @@ #include #include "DeferredLightingEffect.h" -#include "Model.h" #include "EntityItem.h" using namespace render; @@ -321,13 +320,13 @@ template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, Ren } } -ModelMeshPartPayload::ModelMeshPartPayload(Model* model, int _meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) : - _model(model), +ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int _meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) : _meshIndex(_meshIndex), _shapeID(shapeIndex) { - assert(_model && _model->isLoaded()); - auto& modelMesh = _model->getGeometry()->getMeshes().at(_meshIndex); + assert(model && model->isLoaded()); + _model = model; + auto& modelMesh = model->getGeometry()->getMeshes().at(_meshIndex); updateMeshPart(modelMesh, partIndex); updateTransform(transform, offsetTransform); @@ -335,20 +334,21 @@ ModelMeshPartPayload::ModelMeshPartPayload(Model* model, int _meshIndex, int par } void ModelMeshPartPayload::initCache() { - assert(_model->isLoaded()); + ModelPointer model = _model.lock(); + assert(model && model->isLoaded()); if (_drawMesh) { auto vertexFormat = _drawMesh->getVertexFormat(); _hasColorAttrib = vertexFormat->hasAttribute(gpu::Stream::COLOR); _isSkinned = vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_WEIGHT) && vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_INDEX); - const FBXGeometry& geometry = _model->getFBXGeometry(); + const FBXGeometry& geometry = model->getFBXGeometry(); const FBXMesh& mesh = geometry.meshes.at(_meshIndex); _isBlendShaped = !mesh.blendshapes.isEmpty(); } - auto networkMaterial = _model->getGeometry()->getShapeMaterial(_shapeID); + auto networkMaterial = model->getGeometry()->getShapeMaterial(_shapeID); if (networkMaterial) { _drawMaterial = networkMaterial; } @@ -370,29 +370,31 @@ ItemKey ModelMeshPartPayload::getKey() const { ItemKey::Builder builder; builder.withTypeShape(); - if (!_model->isVisible()) { - builder.withInvisible(); - } + ModelPointer model = _model.lock(); + if (model) { + if (!model->isVisible()) { + builder.withInvisible(); + } - if (_model->isLayeredInFront()) { - builder.withLayered(); - } + if (model->isLayeredInFront()) { + builder.withLayered(); + } - if (_isBlendShaped || _isSkinned) { - builder.withDeformed(); - } + if (_isBlendShaped || _isSkinned) { + builder.withDeformed(); + } - if (_drawMaterial) { - auto matKey = _drawMaterial->getKey(); - if (matKey.isTranslucent()) { + if (_drawMaterial) { + auto matKey = _drawMaterial->getKey(); + if (matKey.isTranslucent()) { + builder.withTransparent(); + } + } + + if (_fadeState != FADE_COMPLETE) { builder.withTransparent(); } } - - if (_fadeState != FADE_COMPLETE) { - builder.withTransparent(); - } - return builder.build(); } @@ -400,7 +402,8 @@ int ModelMeshPartPayload::getLayer() const { // MAgic number while we are defining the layering mechanism: const int LAYER_3D_FRONT = 1; const int LAYER_3D = 0; - if (_model->isLayeredInFront()) { + ModelPointer model = _model.lock(); + if (model && model->isLayeredInFront()) { return LAYER_3D_FRONT; } else { return LAYER_3D; @@ -410,15 +413,16 @@ int ModelMeshPartPayload::getLayer() const { ShapeKey ModelMeshPartPayload::getShapeKey() const { // guard against partially loaded meshes - if (!_model || !_model->isLoaded() || !_model->getGeometry()) { + ModelPointer model = _model.lock(); + if (!model || !model->isLoaded() || !model->getGeometry()) { return ShapeKey::Builder::invalid(); } - const FBXGeometry& geometry = _model->getFBXGeometry(); - const auto& networkMeshes = _model->getGeometry()->getMeshes(); + const FBXGeometry& geometry = model->getFBXGeometry(); + const auto& networkMeshes = model->getGeometry()->getMeshes(); // guard against partially loaded meshes - if (_meshIndex >= (int)networkMeshes.size() || _meshIndex >= (int)geometry.meshes.size() || _meshIndex >= (int)_model->_meshStates.size()) { + if (_meshIndex >= (int)networkMeshes.size() || _meshIndex >= (int)geometry.meshes.size() || _meshIndex >= (int)model->_meshStates.size()) { return ShapeKey::Builder::invalid(); } @@ -427,8 +431,8 @@ ShapeKey ModelMeshPartPayload::getShapeKey() const { // if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown // to false to rebuild out mesh groups. if (_meshIndex < 0 || _meshIndex >= (int)networkMeshes.size() || _meshIndex > geometry.meshes.size()) { - _model->_needsFixupInScene = true; // trigger remove/add cycle - _model->invalidCalculatedMeshBoxes(); // if we have to reload, we need to assume our mesh boxes are all invalid + model->_needsFixupInScene = true; // trigger remove/add cycle + model->invalidCalculatedMeshBoxes(); // if we have to reload, we need to assume our mesh boxes are all invalid return ShapeKey::Builder::invalid(); } @@ -452,7 +456,7 @@ ShapeKey ModelMeshPartPayload::getShapeKey() const { bool isUnlit = drawMaterialKey.isUnlit(); bool isSkinned = _isSkinned; - bool wireframe = _model->isWireframe(); + bool wireframe = model->isWireframe(); if (wireframe) { isTranslucent = hasTangents = hasSpecular = hasLightmap = isSkinned = false; @@ -488,18 +492,22 @@ ShapeKey ModelMeshPartPayload::getShapeKey() const { void ModelMeshPartPayload::bindMesh(gpu::Batch& batch) { if (!_isBlendShaped) { batch.setIndexBuffer(gpu::UINT32, (_drawMesh->getIndexBuffer()._buffer), 0); - batch.setInputFormat((_drawMesh->getVertexFormat())); - batch.setInputStream(0, _drawMesh->getVertexStream()); } else { batch.setIndexBuffer(gpu::UINT32, (_drawMesh->getIndexBuffer()._buffer), 0); - batch.setInputFormat((_drawMesh->getVertexFormat())); - batch.setInputBuffer(0, _model->_blendedVertexBuffers[_meshIndex], 0, sizeof(glm::vec3)); - batch.setInputBuffer(1, _model->_blendedVertexBuffers[_meshIndex], _drawMesh->getNumVertices() * sizeof(glm::vec3), sizeof(glm::vec3)); - batch.setInputStream(2, _drawMesh->getVertexStream().makeRangedStream(2)); + ModelPointer model = _model.lock(); + if (model) { + batch.setInputBuffer(0, model->_blendedVertexBuffers[_meshIndex], 0, sizeof(glm::vec3)); + batch.setInputBuffer(1, model->_blendedVertexBuffers[_meshIndex], _drawMesh->getNumVertices() * sizeof(glm::vec3), sizeof(glm::vec3)); + batch.setInputStream(2, _drawMesh->getVertexStream().makeRangedStream(2)); + } else { + batch.setIndexBuffer(gpu::UINT32, (_drawMesh->getIndexBuffer()._buffer), 0); + batch.setInputFormat((_drawMesh->getVertexFormat())); + batch.setInputStream(0, _drawMesh->getVertexStream()); + } } if (_fadeState != FADE_COMPLETE) { @@ -530,7 +538,10 @@ float ModelMeshPartPayload::computeFadeAlpha() { if (fadeAlpha >= 1.0f) { _fadeState = FADE_COMPLETE; // when fade-in completes we flag model for one last "render item update" - _model->setRenderItemsNeedUpdate(); + ModelPointer model = _model.lock(); + if (model) { + model->setRenderItemsNeedUpdate(); + } return 1.0f; } return Interpolate::simpleNonLinearBlend(fadeAlpha); @@ -539,26 +550,27 @@ float ModelMeshPartPayload::computeFadeAlpha() { void ModelMeshPartPayload::render(RenderArgs* args) { PerformanceTimer perfTimer("ModelMeshPartPayload::render"); - if (!_model->addedToScene() || !_model->isVisible()) { + ModelPointer model = _model.lock(); + if (!model || !model->addedToScene() || !model->isVisible()) { return; // bail asap } if (_fadeState == FADE_WAITING_TO_START) { - if (_model->isLoaded()) { + if (model->isLoaded()) { if (EntityItem::getEntitiesShouldFadeFunction()()) { _fadeStartTime = usecTimestampNow(); _fadeState = FADE_IN_PROGRESS; } else { _fadeState = FADE_COMPLETE; } - _model->setRenderItemsNeedUpdate(); + model->setRenderItemsNeedUpdate(); } else { return; } } - if (_materialNeedsUpdate && _model->getGeometry()->areTexturesLoaded()) { - _model->setRenderItemsNeedUpdate(); + if (_materialNeedsUpdate && model->getGeometry()->areTexturesLoaded()) { + model->setRenderItemsNeedUpdate(); _materialNeedsUpdate = false; } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 11d1bbf6a7..5d12e60ce3 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -21,6 +21,8 @@ #include +#include "Model.h" + const uint8_t FADE_WAITING_TO_START = 0; const uint8_t FADE_IN_PROGRESS = 1; const uint8_t FADE_COMPLETE = 2; @@ -83,7 +85,7 @@ namespace render { class ModelMeshPartPayload : public MeshPartPayload { public: - ModelMeshPartPayload(Model* model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); typedef render::Payload Payload; typedef Payload::DataPointer Pointer; @@ -110,7 +112,7 @@ public: void computeAdjustedLocalBound(const QVector& clusterMatrices); gpu::BufferPointer _clusterBuffer; - Model* _model; + ModelWeakPointer _model; int _meshIndex; int _shapeID; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index e09afa3f31..a6a1c9fa9d 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -236,13 +236,14 @@ void Model::updateRenderItems() { render::Transaction transaction; foreach (auto itemID, self->_modelMeshRenderItemsMap.keys()) { transaction.updateItem(itemID, [deleteGeometryCounter](ModelMeshPartPayload& data) { - if (data._model && data._model->isLoaded()) { + ModelPointer model = data._model.lock(); + if (model && model->isLoaded()) { // Ensure the model geometry was not reset between frames - if (deleteGeometryCounter == data._model->_deleteGeometryCounter) { - Transform modelTransform = data._model->getTransform(); + if (deleteGeometryCounter == model->_deleteGeometryCounter) { + Transform modelTransform = model->getTransform(); modelTransform.setScale(glm::vec3(1.0f)); - const Model::MeshState& state = data._model->getMeshState(data._meshIndex); + const Model::MeshState& state = model->getMeshState(data._meshIndex); Transform renderTransform = modelTransform; if (state.clusterMatrices.size() == 1) { renderTransform = modelTransform.worldTransform(Transform(state.clusterMatrices[0])); @@ -1223,7 +1224,7 @@ void Model::createVisibleRenderItemSet() { // Create the render payloads int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - _modelMeshRenderItems << std::make_shared(this, i, partIndex, shapeID, transform, offset); + _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); shapeID++; } } From bc4af86b57f6be7a3e3a5e8a01d0e665c6be6276 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 23 May 2017 15:40:35 +1200 Subject: [PATCH 91/93] Display spinner in Web controls when they're loading an HTTP page --- .../resources/icons/loader-snake-64-w.gif | Bin 0 -> 50046 bytes interface/resources/qml/TabletBrowser.qml | 3 +++ .../qml/controls-uit/BaseWebView.qml | 2 ++ .../resources/qml/controls-uit/WebSpinner.qml | 21 ++++++++++++++++++ .../qml/controls/TabletWebScreen.qml | 2 ++ .../resources/qml/controls/TabletWebView.qml | 2 ++ interface/resources/qml/controls/WebView.qml | 2 ++ 7 files changed, 32 insertions(+) create mode 100644 interface/resources/icons/loader-snake-64-w.gif create mode 100644 interface/resources/qml/controls-uit/WebSpinner.qml diff --git a/interface/resources/icons/loader-snake-64-w.gif b/interface/resources/icons/loader-snake-64-w.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6594ab0a2f4aaf0f89402594540cdff8e5485d7 GIT binary patch literal 50046 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 K@P|MDwfPqs;|oUs literal 0 HcmV?d00001 diff --git a/interface/resources/qml/TabletBrowser.qml b/interface/resources/qml/TabletBrowser.qml index 74318a165e..ee4d05a701 100644 --- a/interface/resources/qml/TabletBrowser.qml +++ b/interface/resources/qml/TabletBrowser.qml @@ -4,6 +4,7 @@ import QtWebChannel 1.0 import QtWebEngine 1.2 import "controls" +import "controls-uit" as HifiControls import "styles" as HifiStyles import "styles-uit" import "windows" @@ -117,6 +118,8 @@ Item { onNewViewRequested: { request.openIn(webView); } + + HifiControls.WebSpinner { } } Keys.onPressed: { diff --git a/interface/resources/qml/controls-uit/BaseWebView.qml b/interface/resources/qml/controls-uit/BaseWebView.qml index 9c22a8ff8c..670aea71aa 100644 --- a/interface/resources/qml/controls-uit/BaseWebView.qml +++ b/interface/resources/qml/controls-uit/BaseWebView.qml @@ -36,4 +36,6 @@ WebEngineView { } } } + + WebSpinner { } } diff --git a/interface/resources/qml/controls-uit/WebSpinner.qml b/interface/resources/qml/controls-uit/WebSpinner.qml new file mode 100644 index 0000000000..6323bff1a7 --- /dev/null +++ b/interface/resources/qml/controls-uit/WebSpinner.qml @@ -0,0 +1,21 @@ +// +// WebSpinner.qml +// +// Created by David Rowe on 23 May 2017 +// Copyright 2017 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 +// + +import QtQuick 2.5 + +AnimatedImage { + source: "../../icons/loader-snake-64-w.gif" + visible: parent.loading && /^(http.*|)$/i.test(parent.url.toString()) + z: 10000 + anchors { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter + } +} diff --git a/interface/resources/qml/controls/TabletWebScreen.qml b/interface/resources/qml/controls/TabletWebScreen.qml index fec91046d8..93ded724a1 100644 --- a/interface/resources/qml/controls/TabletWebScreen.qml +++ b/interface/resources/qml/controls/TabletWebScreen.qml @@ -116,6 +116,8 @@ Item { tabletRoot.openBrowserWindow(request, profile); } } + + HiFiControls.WebSpinner { } } HiFiControls.Keyboard { diff --git a/interface/resources/qml/controls/TabletWebView.qml b/interface/resources/qml/controls/TabletWebView.qml index d939e088a8..215ac68ac0 100644 --- a/interface/resources/qml/controls/TabletWebView.qml +++ b/interface/resources/qml/controls/TabletWebView.qml @@ -238,6 +238,8 @@ Item { onNewViewRequested: { request.openIn(webview); } + + HiFiControls.WebSpinner { } } HiFiControls.Keyboard { diff --git a/interface/resources/qml/controls/WebView.qml b/interface/resources/qml/controls/WebView.qml index 04ff731a25..06766fa6ef 100644 --- a/interface/resources/qml/controls/WebView.qml +++ b/interface/resources/qml/controls/WebView.qml @@ -116,6 +116,8 @@ Item { tabletRoot.openBrowserWindow(request, profile); } } + + HiFiControls.WebSpinner { } } HiFiControls.Keyboard { From 712aff7ad66a96692a78d68c0cb7e521a7b6b3e3 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 23 May 2017 17:53:08 +0200 Subject: [PATCH 92/93] base scale attachment on the natural dimensions --- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 3 ++- libraries/render-utils/src/Model.cpp | 9 +++++++-- libraries/render-utils/src/Model.h | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index f5e2c8b68d..d78287a0e7 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -684,7 +684,8 @@ void Avatar::simulateAttachments(float deltaTime) { _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRotation)) { model->setTranslation(jointPosition + jointRotation * attachment.translation * getUniformScale()); model->setRotation(jointRotation * attachment.rotation); - model->setScaleToFit(true, getUniformScale() * attachment.scale, true); // hack to force rescale + float scale = getUniformScale() * attachment.scale; + model->setScaleToFit(true, model->getNaturalDimensions() * scale, true); // hack to force rescale model->setSnapModelToCenter(false); // hack to force resnap model->setSnapModelToCenter(true); model->simulate(deltaTime); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index a2ee2c63b3..e5a25d733e 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -716,6 +716,11 @@ Extents Model::getBindExtents() const { return scaledExtents; } +glm::vec3 Model::getNaturalDimensions() const { + Extents modelMeshExtents = getUnscaledMeshExtents(); + return modelMeshExtents.maximum - modelMeshExtents.minimum; +} + Extents Model::getMeshExtents() const { if (!isActive()) { return Extents(); @@ -939,8 +944,8 @@ void Blender::run() { Q_ARG(const QVector&, normals)); } -void Model::setScaleToFit(bool scaleToFit, const glm::vec3& dimensions) { - if (_scaleToFit != scaleToFit || _scaleToFitDimensions != dimensions) { +void Model::setScaleToFit(bool scaleToFit, const glm::vec3& dimensions, bool forceRescale) { + if (forceRescale || _scaleToFit != scaleToFit || _scaleToFitDimensions != dimensions) { _scaleToFit = scaleToFit; _scaleToFitDimensions = dimensions; _scaledToFit = false; // force rescaling diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 9daffcc00b..d718145d66 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -122,8 +122,6 @@ public: void init(); void reset(); - void setScaleToFit(bool scaleToFit, const glm::vec3& dimensions); - void setSnapModelToRegistrationPoint(bool snapModelToRegistrationPoint, const glm::vec3& registrationPoint); bool getSnapModelToRegistrationPoint() { return _snapModelToRegistrationPoint; } @@ -164,6 +162,7 @@ public: const glm::vec3& getOffset() const { return _offset; } void setScaleToFit(bool scaleToFit, float largestDimension = 0.0f, bool forceRescale = false); + void setScaleToFit(bool scaleToFit, const glm::vec3& dimensions, bool forceRescale = false); bool getScaleToFit() const { return _scaleToFit; } /// is scale to fit enabled void setSnapModelToCenter(bool snapModelToCenter) { @@ -209,6 +208,8 @@ public: const glm::vec3& getTranslation() const { return _translation; } const glm::quat& getRotation() const { return _rotation; } + glm::vec3 getNaturalDimensions() const; + Transform getTransform() const; void setScale(const glm::vec3& scale); From 962d95ca46281880eda33a2dda2f77c67e0f1808 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 23 May 2017 18:16:08 +0200 Subject: [PATCH 93/93] add more precision to attachment scale in attachment dialog --- .../resources/qml/hifi/dialogs/attachments/Attachment.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/attachments/Attachment.qml b/interface/resources/qml/hifi/dialogs/attachments/Attachment.qml index 0e98f79216..b6f906ffc2 100644 --- a/interface/resources/qml/hifi/dialogs/attachments/Attachment.qml +++ b/interface/resources/qml/hifi/dialogs/attachments/Attachment.qml @@ -181,10 +181,10 @@ Item { HifiControls.SpinBox { id: scaleSpinner; anchors { left: parent.left; right: parent.right; bottom: parent.bottom; } - decimals: 1; - minimumValue: 0.1 + decimals: 2; + minimumValue: 0.01 maximumValue: 10 - stepSize: 0.1; + stepSize: 0.05; value: attachment ? attachment.scale : 1.0 colorScheme: hifi.colorSchemes.dark onValueChanged: {

?hng4dL5Y-{irQoVV(=}17fcuQ<$9a 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�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 zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=- zzz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj z0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@P zAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y z@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W z03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN7 z2k-%W03W~y@Bw@PAHWCj0ek=-zz6UFd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UF zd;lN72k-%W03W~y@Bw@PAHWCj0ek=-zz6UFeBl3Q@BU*Xzv~0dSGUVU+l)zLCQipV zPBWRHj$_yk>z(r=3ssW=W{jO}lOD|JxMbkCD4gKVha%vQXwyCZ6=NLi3BR1p?lENd z4(5lwtP=L5%O*4ILP$V+mldo=@g<6P?+T-KRkbU{&@c9k4vrR{;JoTFZBDJUytv*qu1B} z-1DWr-=)6(r9OY@%JJOXWO?DbYj^HDxpDCL?0jZnJX$-nxUlD%D=&Y1*dLgg->^1X z+#D_4bH{bVzu#*PTs$w1H%B|~xnpU#{q`eoc!Bd%&)uKcICy+^e*Na+crsepw>JIy z?|-1=Od3EWb`%a9G9lK~Ajpx=T%S$&dJ@n=i8|RMC&L5nN7B&~h z|LR@C`uh+5?H6a~*N^7Ln{x|azT>)2?mM#Qy-&=}!~JV*aeVLg{=oL@i=I309nCFl zzI^=UJC;7a=fD@=|2*?(VX`>>^7_)hc+K|hozGk`zcraGFDx&;^xl&jcOILaU;pg> z#cK{6*>hlap5NX-xaY$D!e91$(SF6u{pF(j!_0oj?EUGldj57lJ`9h))BbV3!}TSv zKfLhwrU$=GJ$U}{j9-2|-g>IUV5SPrPg!X*NdmuuWvuH=fIH{IzPQI-r8E;zJ5Ne-)HB&Yl}Ni4eQ@MD+i7o z*>hla{@lW7YqGq&u(Io=UmmVc&(6dBZ&)u+*Wc6Y-!t9NzWGdwy~MfB(eOt1&Mj$^<2jp6>iHQIUk zyQk+1hW(Y!dncpu=HmFvcP#(#d!N|z-Y16ri_OXEXm#nM_dUKbckB&oi=)$vJHPU- zJ-e0Hz{LX{lwaN10o@*Yw{KUrbW3%(#nf;8}`Gb?uXl*pU=Z>Af z@%|@n{Wrt@OXk`08ng4o=QS>Mo};%9_vguEd2xBy1D8*K|CxF3_WsG;7xqtP=h^*? z+4)khN0~j(@j~Zk_v^NM?=LuyFZ_PzKmP^H-QV~N?%#gLu2+V~rx)}79GCk1OZCZ% z{rpRPeYd+l>-y|>?&FWYPk*1^>hJT#K0mzJ&;S4X{d2ZgUg&)O_y4wCfBp;h+%xBi zU+m{!YCSsJyBE!uxc+;o+h?!$&dyJb=jXSE>&w?XINm;A-T4h`i#s(|atjmLA_uRnk3y{|oZ@c5Z4=I7TYi;K%k zAG!CjWB>E9?e+47_0fg(^Rx5z$1gAJx%Q=RI)8n4e(kyQc>eI@(DLHS(pA&-$wl*M zJij(sUA%GWsyCn5I6j)4pB_)Y-tvvZ_3>eSH#<*1e|r0yPuzO&_|xO@;B)(W`mtN5 z*JsxjcW$pAr|aYC`tOGuYK8lCpHew&CaJb zmnZA{&z}1)e)QnMg9ktKp}ptV)9+sXz4 zerxW@L#z94*!8v1_V1VZ%y@olbo9{bzC9oR?YZgu16(v89&N3!Om_d`19N8&PW{fz z^K-9SU)i^G^>3dXZOok+Uo;;c&8;u*TRQUdkBv6wmgeW@H#gUpZr*+MS0DS+b8}}F z=C?LC*OyoKT)qGC;rzkueEE3m)MqA(H}84)Eps=_ojWs{-#T?@vb?(c<@--=oSVBa z-+bM}_g^%hI6J+4b91tM?U9t8 zIJt5B*zCN0e;)3?4}In2dH<8=%zGz`qhWvKUDy5ad!HEY4>R)zhy9b$!oRxXy5G3{ z$oBb-7c>v|kI7_pVda{S-uw9U{@Ho&%zo7D{Q76lcWl2tV`je8`H$K294~Z!vHO3s zkEbtmzUc9O=6uJco4sm6818eDU^+<}+7} z4{r|Zq3ehB)1BvL=cOyhcb{6GEZ%bU!}ksA@7ejxi#}}>`=H;c;o+|5k*j`nct64UxwX@qH?OZe`jO%Hdv;!W@WjS{KDu{qar`eQ3orfBb;J3JA388Q ze{gOze&dgf5B$oWPrc`fkN@iXhrg%Iqj#;W@44oRx4-qrj}F)KN2l*vo!oHEt<(L1 zi|5Nmrw^@8ZurE3VgKpOc>c0sKV!1;i3g_h74wHDr`K2Z-|&kM%x%9up!4PP^K+-y zS0^_f`PyhS{QGy_yEYon|H$~~KYQIT?K|?t*Bn^dF+Z9+dT3>`=i^_UJNt9P_Z#*< zR`)F(`PzxmaK7Mq=C$?J$u%#Z-oAIVINn-a`0_v7HS8DMeq>l*pE|U@e9Q9HKfnF^ zJ-8{eG%`wa8y^7;Le(Rlv!bbe&``<|PfKesSHx3xK0T3udz^T``d zj%Mej9m9E$$>Qp(7r!#Mar~lr;qqaBVtwhx>t6om$A~&?%sl(?v-2C)rmqh=|NbBEf8u%OOT2%`x4wP&e&6c+$?Sg0 zUvyqxyz>11`1bpyUYIY{FPFN#?>Dl&zxV9>ksKe+Cr#gPp*YN&M&wl=edE4jCeb2l<)ztU1^ZE7V zn=YL1o1HKDd@`(u4lOQjKVKX_cF{b2e1FdEGxMddCw%MY$4i~>oIMXZJI_9!&(5`Z7v`a-*Cxx`^Yr<0WJtv3jyEF6N z)6?_PZ+iEI*B8&s7p~{7T>H?D>H7Hm_1z2e@ch2ExN!b@?t7-s_ZQ8}qx&9tre7Dw z&z;YV$A>qkefeGYZLg0y57&3!am%oN9&dU`zV;guVg7x!=b?Yy*O$K3Y%_sHeb_36xf z=8E}Yd9`%oo?p2Crq{o&zLoB#3L|FAh4J$7t#@bl+}>(Ohk8o%Ypb)VdG;P*Z_ zT#wE?{rwM3mTp=;@>?grG4$__`O}+|<(qf^;!BPW_m?Z?r|a3ttB>42`ibxPe}}*K z?e*>}?jL@iGdt(!=iW70o-FTLnEIQUKR8(&Z7q-Q|LoGRe*DH4Pn|ln{^56=J@*5< z_wD=8hdzI7m^a^X_S`F8{;J&vf9lakpC0d+|I%mHS0*dFZvEV}x3AvHx`kX6G{troJ`Q!s9|76+SiuH-2ILJvU$f zvd7+jZtkh^j=Lwjzp(#3d;ihS>G_F;`NM0wkFLMxreA*e#M!xH!}3pU3dH68~**S*m3vh@X^V8Zu#Y%qv`sl^QlvR_?iFpXU?Ac z;g`St;G>WJ(TOwT@nxg=qx;`^(<{F|I&o|?{QaMvdu0DRZhGZI+kZbZ^TPb$Q*)2( z-+0|Gee~qUTjz$?3;gKX;_v*+n?E%@A2EFX*4!hL_19f{+xGd2*?Bl1G2H$S-n#wu zJD=J-_3&rjclO-eXy4!d(1*VM>%;!VJ(FEKzqJ3?Z$C0xJ}~|I!+yw(-}ANM^%c)I zuMPVtH$Hmn$-n=c+h4cz($TR${rqrV;735t!j1E09I}g9#Hf(@^XTyC^!m!=)mQ)a_U$wCaDO^_ zXyumOyAF)b{^#RQ4d+X?)|YR&e%JmVKez2;Zf$*Ka?Nwjk38>uFWKDjfV3cGxKQsn9)8JV+vgWLkH%Z4HYdxg z%O88o;~R6s`Jm1Vqr<~_k(;jl*mVDHc7AGjeaYrz>85KJx6g0P%!B{w{@!&T+wu7H z{Ko7&zjbOfSz5hz@hcb3-#q{P3p2N$pD!PNpVh_H-4E@U+qm=KMf0%Va%gpFc>j;{ ze?PPH++=usfA)My=Dm}}@#f;rFTZOz-*RN%k=c3JzdJozc+=a4_y72VS5NozGQY_4 zCl@|{ZMo-HF3ivN!-F}$weo`J=kJf%*W~el5@W_!m6StgmM0OMU-K?eENfz3;U7 zQor9{_s@ID_0{?Pv1i^N=>^Uo+#D^=EsozZ8Sa0#?mjR(U+U|h^E<&o}$`JUb89!=~qPuNn5Ahu5!me*Mh;@a%l4$HzG{a%>v^A@ z_dfgj+&u^OymvV7c;WrBrgN^}4%c6wy?x&>Z=VOAEUsL8)v!K2e?IunKhK^AeV+MS zKEFTD$M?MHh4aY6^Z)jF$Ai4v72`<{?^>a!MWM_ z_0O(n|MB||d|)^aaAAErorm?)u%5kX&ynq~KQj;4s}3)ZUvgyWH!ht2%{=YXpeQh_)AjD||MsUo z^r2&4AJ$XT^V!QEKQQ$-Gk&Wq-0zi+Lt?tArj|IXYues1o} z6+13lJAK#k{u@7W#c1Pu&Yjsgx@>Lh(8~JmPhL5k@4jdr*2hN=t?a+?Qy)38ad23# zUN)>J_P_RfZhdUy1T;_wJnEIQRJU_M>;LZru3jgY#$4J#+i|>i2&1v5j*F&s?$Np0y|MTHScv zqi-Gk#P^&V*2`?W`ZM$7^r_8LA0GBE4j%laNB{NLCv&H_ z=iLW?>hs6`?>{=TbH_cWpWK`ry7_am@4DyB|KyI*aQn{ryXWryu3bCFfA_}UKKI1l1AjQbcKDCa z{qKJ={62RcJa%q&9)ADL-KW>zxBC4rdwleb;q?oLH|MAGFT8f{?9s{A=nG%{@Y!>( z+P!bzqmTaQbHn+Kt$+7V_usYpk9KaHykRu`_ZjwAZu-94hrj=)7shjQyN|x(JvaUG zFPz*s_ubRKpWR1?+aG$(H#Ux+I`xPDbo>7BxBvFr4;~xdPhkG^tB&q}$KHQ%+sTcC zN6#z_`y)q({gRKK->;d@?_7Q5ZO=D9HJ-n0ZvG3Cciwp2Z5!vld3@O47~ipY`@dQJ z_1lm9-Zi7)@qhk~omc$(mESzM=fK;3?=$nK&;8`@-gMja-}m5uckayPJGS-;_XzczR5Pq+U)Pj61vZ}{|s)BUUA z-}^c9(>uq*d6WI?H-75D`C}Wu_Vmv2*4C4o>%%;}p5@HKj;*cJo2%<9pB&Dg%+1cj z&;O&7h2J^7=Qm$-VE@~m`1JOE%5*>O|GD${=+L>Jn|sw4c5dHa4<0->I}d$4zqYXd zpDq9TLwkPkhlcl;81`dUZ&~@ofs-3QKHUGe_g`-O#1)rKf1cTSes1l_yH@t?zGh+j z_L+G&FY@GFE0f*3etZ7dpA4^`nVTE-V|Kq{csTtZC`xNfnh&)dcI}P zE3TYBcJ}1bj`8N`^r7Wj_Pk=@va{bDo*$kw-}%hr_bu1I{K4t#kB0r2t@UT-;r|0! z+ge}Vx9j6OPHvx%$~--va{m0u-+KFh`uz6(NY0-eKDBvhd3E{7^nBTL|0VPMbU*c` z>mIp(`+Uj^o0oPB8yM@$H!Z*XzWL$#d1hX?eEzaio9jzAUHkI;9)E1(`0PCVzNZhZ zFRxy^c>jrwZ_W+R$6L#z`?hwz;k{4nnf`lj@6TNOu?w%i>b(7Wp{14OkG*+%p6Gez z>Hf~OAG`0u?U{$18P0btEne7v$voYkANHTFecAn^&ke6X8xK7)oi~U3)8+GbZ*HzH z-gy1XzB1iEotcOG$LZzKn-1^XJ|DMo`TYE}Z?1jlzWHDM+4Es|b zebcnhX66sBjTYXxxbR!+!}+m4_~f41`KjUj+GKTU&ovKSe&X!#|HpKG!>Qr=&%*ud z%ftDz_dYQ@pFa<@xaXRyF8qAM`^7wG9`^TEr|X01`{T^c!{ggzb!lbSLvPyn@ox^k z^6`7;N8{=H_bmR#Lwo-DYYxoL&wl?0XTJZ1d4BrytXzH7wx5gUe!to8KfIpq)MWbe zU+~-cMSuQ_`}v;UIqY{0_phBVnO=YUw#^T2U*CJ?>u=9XSB?))4owzTmR>r&eRiJx z_}TfH``fOE?!EEc^#3m!Ue7n&A1*)f69+HbUQZ75%ckq&*?If==<3qy@b|HO{a|=~ z-}B55y=i)Vb$UH@xc&Tm{_o|c;rk7rKRa(<9~{2kz0a(FhQGJ-^YDCsdU5BQKCtxh z?en!W^YrJP{(W9`VSoGl-|O~#=KSCD>e5x)kAKfUFW-30u>X8+cs!n-|GO|x&+{#h z?%mos{C(U$ygqWce)`OOem{HZ#_O-T@BH0i8mxPCZ0e{OibA0Cgdd-%;KH-`05=c(V}{j;up`S$gJ z;rh{`;d;S$edM--!|Q#=^TYGOP1irX)det<+82K^`+J8 zfAK5BE9u+rs`>fTTX(IzXX(>dK6dub(M9tW zpUy`Oeq=@<&f>oO|i8-Z=c^UHjkp+DAV& z^x&|*8G8KC>MI|bJHH<6yyNh6{d&`Nw{NcphxP2kHy^s``);2t@-_sIVD?L9iImyTaNkM9|7 z|LL2TKX&5mxw$io<9p`jAKCxDo0mWK_}OzW-Ftd@=bP7eEnarV_VwJ^dH8y3yT35` znOly2*JWq#JpP8$%ZvN&*z>Q)|K;5BfuSFFE{xx}`{??I-~8FdxnpOiKVRn^m(TA$ zz5i$5@GBpiKK@=bFWfu-#xJb@?BrJ-{@mMsa`^nq-?)2we*Ep{j(%qRFVB6~4Y$8@ zG@L&^cAdAOcE zoOgK3kz4LKc<_fF_`m+oy~BCj`7ix9uY2_48=wE?@OUuU`okZ2)#r!(iJ$tZM<4zD z-~Zs+;`si67;ikN1ov&C$(9%-B)aY9n-xwBASzahb*Y!tJY zxRk()bZeIk;rjZ?d=HHKdQ-2_Pzm=@ca zD-k(0n@1QEBvZ@SjBU*gtBYN4SpnBW7;2_6GUeWbl>G{fZ3S*pC>w$>9wToj-;pm} z(Z6Gf1L!F0hBQ|4}2Esrs5ZZI+#np}-3BU|G2DWQ0RO><_L=cfeH zk5KKuGSpkpOl52jt^ON9`FAwAsZ$x-gKG|R&1k;Xbjk)**(*I?wfYY+gT|1tJ@gC@ zS75_n|Eg05Rog?V98rA;I>Yxbbuck4xayPV;$eM^|H{Q|9EjKM_A<~n;_r``{ zf7xJSTF~N8e3KtGcIGk$JNKgbVAb1iU%!s@3YtNQDrC_Bf&9NrY$l`mM`noK81(MJ zR>c#_9+nwm6N67Vv?weM@V-mE+F}y}J-~kk_Ph;u<}#|UBK=2t(Dmy-{)p^nuj*Ju z;DU9q{R9)&GVr!2@Snt6l+{5D9)sAx8Ct`V-f58mc4;vHL4ZN?!r_J(9IP$8RD350&pTi=%vx@1NN|n~xR4cnf2I zKSW4gk}uyn_C-*%mHRHrmluh~X7jZFr49TqSNvu%S`V0xNTQY=jcG#j3y#m^0MN(8 zGH)3?K6oDNbvlFpLWZgRim0>+%$n_5umG|T5`7t$+&lD;uv-eXd z8z_Aauq#RFhnN^<$P|Z)D(v8Wp7sxg3QI}w2R(zS?S-X;G3~GH^_-@(<;g_EF>icQOO&$Ed`Ci%RX#`iagY1KNdw9;F3V{gMp}*p%KUlwWeQ z*^EJc64L)nGm4)e|5S-xE6ne|>V0N&3#}b7l|Lo+7dl0u_m9rg{dpWI_%%KQ$9p!j zY`1r17%`?gw<=cXD|B3g@)PL{dMtIUI8f+FLVgFGA^r&QoxnvrvPo~o=xlpDh!0xz zP1f_HZ%=2+zX$fn;R2+80zJ|Urf>gyncm+lrr(eMWfrg*IKwkmDB(EWXi>oX^V{4^ zYp3(G_Mc$jc&7^dk0trOBS^1k)tABhw~v7FNteG*w?}788al zl{i$yx2MK8jbXi@&J;$ux!N~@{Xl1y)xKQG?}vEPY-UpS=gJDJzR{Ki92}P#GR1OV zK@kD=EsZ;Kb2AGQK_8l)UfD1(0QSDrkm(<_vVud|n^qQAa4^bVq}s(59JP4_{O<(B z2cmrD+2dCI?@Tt5Os3Ru1lgC=`r-F6==H)SI7JhiU%!AA_V zKL+~Zh3gq+i|Z~mkJL)}b1p}Tqfvb<8c%Pp3S4w(oyCIeO$>*4+@eEhJad@@@W#-0 z4>c>=^%6tpg{ynbmS}ll;q~hu4;Z;@Evy$af`!!j*nzFXWNlFyvc;b;auW1lUt(Tu zu^GXhjyS9jY5a&JnS`t@al54YQ{;c4agbWbl&A0<_%HbsZ67;&7uln-w%AOGCl9SB zNH!DqYKzSb_52i#FR)i-ZL!&5o;=JvqL)Z9gYgJu|5R39|5)t6(aAJzs_e)rCtR=p z&d6oM_KCYCqEAtObe_v0WSSDy?x@pFV4rqMJq`an0^>octgIY>>u2E_L*iapE!a1W zk9cIBMq^OrM%9&IdPTF5OR_bogNfNOOG;ZHeh%%a234+niE{(^^SNZcS~eJ)D?4|@ zSJ}vz;F0-i&0wrfc8&+@Re>`%zpG|2QMbN+1KdA48+n}kE{#E@Tf6i%bpAHntgq*D z^1Esbssrnnm16p42Az$3F1uSZs5-LtybHR2Gq~D3q9SQh zpWmAz9E{jfAuk2}ERBtPjveZMedDn9!KOI^cgF&}c2HHWXmm#YmidlsqT8f8p4{S$ z;y-j2aPkSQDWgulVjlXw^SO4w<#Ejw&1Orx*q*7u?xh+os9KB+z1~u2&&08NvbGDV zrq3A_UsyoTfw4AMUr2rKDDfZx*OtF=Z;~pKIJks*xA&!ruep_)bpn?jPJUv zhWhw`zoU5kEM{vBy10hA_*OT_KLCG_4TJt*OI$-!Y^xhJ|FH?RF15NU{`vTpWDEG` zfJ^EXEqr93K)hQdyH+396#pv5Xac>0L7rM&AKOv^@phvmit3UY%kenOVsv0? z)jC;aUE+#zhMqBt(f3FcS6Q{bN%1P!OYpsx$5oz+YvQ*e`|VjIg_l3&9* z8JO((Ht=^qJpcN2+%wx;iWE&Tp9=Q zUdRXO?DpKFlZiLL{SC?GF(OMnVgn;SylsvS8V!>0$Qx?$tD+6pM*iiZDhtARWPw^d z=)ED@Ejm~Jh0&ggsl)M|x$Dm!2LC?t=Xm2qdt>T8!}aywsVw`vaUUlE=n)8|MM?Q% zoc8RNogHk7f6{>RWe_jrQSlQtVarU!dnHR_8I(Ss&T6a{+p}9DD)Eb_{*P&>!FKKr ztBZyABPdtMj4bhZ)mz%&7yZkoFN{pe-?KN+iwF4%X#T0ec4kPtdFcO|Fdxm}DviPN zx8-l{WiY7v0(7SQKZ4sXt5<-%4gLfi^EPE<`&T={dJXLByq$vE#OisflTks)zNT0! zABzcq`CVhsm{i+?7aw8{$ANxOV@Nfrwg)Xf1kVTj?dmR5?Do*b4oLq4^;EhHvD?EI zI$(+o;9tVjse_5C;L`^weIt#TY#jVQX@RE?HiMoB>2Iv8P^yhwX08DrRAmG#bZiFy zKaEwEk80GDl>XxLCl48qKu@C?%ut2A3wo$_(3>2dT$@JeP4pHz!}?d6YDi2BdUxHl zK5`bz1``wg7v3hU{w#@XFgDTu6nCx}+20z87vcdTUfIxR$Hc*Zlo;$WhoNX+1n+0~ zPJZEi{|^p|qT@ghX~QbZK23^gT0dd|{fG^t^*Q*PR-T&El0(G@88SmuqOZps7(bA2 zh^4k=C<5HqGxX+JO!=D(u?pW)bJ*1Rp$-n;};YU z!3djkBS_B4k0r>ROJ_dON^`E|dW?U}g}X-RO@%A?T)6@Rg1$S*e?iIR(t z-lF0kG=})N>4-$W^eD$_|JgFq15y4jDt{03LBGi>e&_b!U;eN9L;iF)oTZq<7xw3&$0bf{MVKtKADS^1V{PI+i!ipY*><8 zb!7KOSWl;?>-ArK^}o%KPpSt0=+fiV`O%rd)JROZQBg}P*0sX;p)tu~;%ZY>aFoyd z{kh1$4f?br61lJ76>Gd3waa}^SnCr#gTbHcQ^~RFV;~>#R|b7F*gtE1j)Q*^qcgnE z60AhB)<+QCWJd8%8xH9Ne>8Xh9g$D}m9br8bcT3M_y%rFx42v&~M>H`KSX%7RfZEv_)+UJHu^4@hMxDV4iKC!uFUlqO$VG0i!*eDNSvQ$_NwQ zX2ABaK9w0_w}(_6BH|L}NDPd@PYY51;pw~dw;*2|?7y^7@AXu?&6X!fQYTFvjLi%d zIa;5u4I4?4kfjYB<1~c|Xo^x(iSlW#|lHH{- zW$0wfk5GCWlGUX#sd6KiZ2*0Rk%zPJ%_dc0*fJ-iho8}|hjuPI5BATMpD$_tMTvDv zQ%sC^srU2xb&JKwCG)y!puh7Qnty3z7AgZBE1IOobtgMei_1gHHJX!cu zW_eVDOAD;8_#9Sv_|)$5sO5ZEZ-sUFb8qYvI!C=c(PQab$X8IsZDx ztvHVKsn6z&s<`H|7I+`1_E~%?-mhY2`>*W5Ee!9T%B)X(?kI}q(zu@IXh(EUWmF}$ zC|idURv7t?1+aZp(#rT|#U>1x7&qnCCpN$C_Yl(?1&)QRZp?ViePO1yBiRk3eHP`H$LQ|+NV`nouJtZ!ZPga_5%<-~vlh}TW? zg`|LE5YKxg;F0oiY|n+{w!~_MrP=7=Nb0(=J(oAGItI^wdi%>8FCJUBsTrTbkALoHQx04|u9a-jTx*JJJ-Qxy0RA0qXI)lXU1EzHTHn$55s7Q1Jz4!# zi7StT{Yu*7L}#6*x<3B73h;M`qOuqCMtb!(d|Mlf?biofdO+K$IH#`{>X%a6bx-4oY#D$)1v zp#O*a3;v-~ael6N{KH0xS`xRs&1`wm3q#RhF;UyEvFf zuw7~f*{AU@UGnBpQFQt670_czb+U#d@ykbWyz9{fir3WO-@$Zv$$>cU zp^Oo|h0Z~09=EX6-}!|Uh6?9 z4gFi-264j#r*7dG7mk21@9kuMU7SLNjejnjg1pZv>`)|wO zuM785?~OTI!Z1sz{J?PMJ$qy7jt~#Po?~k$7C8~-XE9SF4R_wNJEkrc>0#&$<9Xau zy<1i{NGL2TARa%>7|dt3?P`+6CZyqB(BBb8iw`DXv2khmXS=hb-hCB49~uYc3K_am z;m3iiJ1BiOjnVV&c2Z}D)g573{S8<*R+Jf5UDg_p^nqGNx05JFj&0*DunW9sc;HI$wV@_p_&?a2tMTaViRM~v;v2&;P4sz1UFHq6Aa+Ns?c zAytRb{633uLK2Q`&GxODi{d{_T-#ZL?Mw@;`rAsy!^W%NZ^D1d&5$gLW9StvbcW~E zd1p$M5qjn}(of7{wx$#RNtF?HW*urL8QR<$Y->jFnNL8^gY1VpQ@b-Hi;ht75hgy9 z;eK}3U@5BLs)IO{PxiYQ@|}Ct!h!qp@-!Gfbe!cMP;_=(N- zWofqi|6efNKUs|_Gcjb*T$CR|;}8RnjM&LPaNoZi<|hW7t;a7Omn<(5Jw4v9jQqi= zCe_BE(+92kbbKa*e^a+XSUe9crl zGebe3cxoy<|HUwVz(1?dgnbQcW3YA;M3m$Nx;uaA0c5b>NaQ|SehXo+lBvBxI0Gl8XRAOrC^iC%@!9g<(A6IfiE9%nM}NUs&H?lsEh&m zS2X^Hz{jU7gdfCnAbu)#Ahr0oX?Jc+O&O-wf7gkrrx=y6o{CexeQaRhDO2&)AgPeF zOA(iPZ}|tmxU*9yuhIow=hb1F^$}CsthcJbm#pudmYY2SjafNRg@^3hC*fIj& zSsw2@^i1Y+SlV%H&nZQ-EB3(BXq?B*(|F(6eJXjG8v*&X0ur@XDVi&g{U{*WustwC zk$`n-s*>GA8)kX|7lY_0R+yJMB28KAzNa z6xojgPQG>=+j(lEUnR1C1st|^d@A?U#+65#743}9E(0d*H(OqmL-jg1AFiF2!1vT` zd@cd$A^22(^@%NiNA>jh(C)maZevS)vqDMC*gn2hF~Tqkcy>e@w&$|Ke_kuY4DDn$ z;k@U<#Zh^>%_Ix4++gsbOQtgd&4hol& zq(=DqS>=aR{dgLKJ={Y$tFNYB8b$W$Eas7{I;WzZ#8qR>;IEj?MOtrXbw|eK`OQ$D zK{YhqGTiiS(-^8`qq>KQ#dN1L8;UeLhEgH?S>ufnz-Ap_zDB{{5+e zjQ7ScD!!yOf$No>8=vai_TB<&ePqjUJ(_bvPW>4#c%bq7-!hX>=Z~BE(u0x+ z#lvd29`(7Q$9)+uEP(TY`WNbR_ecA-U3neiA-mK(=Ix=-(W6_BG8tc|kI@D`k(X#pN{&G3H$rbZgsJ=vKW@TDD!|FN~w^r6X)v=_d>6qfeR zPR7vA5wpeBDgFih+h5&==P8XG8tqW6sH?R3ci|mn}4Esly;p)a!30D1vmfAkxI0OFwNHVnsR_)^^)rHro z=QE251FO6La#Gu|R;15nVJ!#cZtG~#GAHnsrY6mYQwI0JSn@7N2QQxaEG$pqFoza5ElSX~7)BxXiWFJC4 z)(j@?Nv)K1=~~@Jf464z{}Ee;daCNPHP`AD&&5B7@&VWccCYl>sf{cD-U9UtV7=Rm z`Un5$Y-X~xhP#@YqoYKhZuOw{axarE$fcULn z5RX^ijjKGMsEGJ=4TUicL%t{OSO7hV+2jfg&$HU{-!ekUXUQCezc?%Mh|9Q3i^PqJl=R2Ns7 zyMEbc1j^r_u{~3V)y0+Mu0KD>p!5Z{Ofof?D6RzJMbp=3!=T@*lNIHzUs^)thte44 zXHi^buKfIG4&Z-&+CFG~A8@QLpeT3!k`2#diGdLZ{y~hfYE@;W1?9&(ZHQeX23 z8lRX*2Iuz~k@FDh*Jv@htSvX@d^wCqlwVvIP^6>vKh1(Uq{dK-m*lSZjKh`hTgaKb ztp(nH)W2^1`OgTXKmJX2CiLbxNMGeGE6I&IAJ;mJ^oBZgzU#$93~GN{27NA^f6Vzf zqz`!(Gf{t~t?2tm!v4rV+VTMME7?fDR~RLBhVe&dh<|o@%PRNAEE_`l4lYUHOj%`N z)bcXy7qExegp3(iQXb~x(!?+~?ve`0f>L4Z3(*yIPq0s~JR(UgE)QrpuvW|m`w{xX z75c=D&C89zniVlc=Hj6fFSyzFMN3}m?un%#OtmHs! z<7-I2MQ6|}i)5AM>l^uuVG9a;QQ%h5&$k}1;#6qUy>cR~JNI`cTF z|KsbM_(=anXD5<{rv(%p2Ysm74(v}I+~4D|zGVcgr<_P8p5|3@D$!>cjSo7*@zT7C zpdE|BERVP(6Nmg+h3`>RZ;VIg;UZb(skjy;1I8bXg9v|yeU0E~wzLE31L$nzbMs}Q zfRehzm3;VL+Hdo7uE<{db$f~@_#8Ga3Mi_JZ{@EAeW?Zu*kCYQFkzhXJmk|)GXvt~ zKmJJPM|>`uNDHW}SG5|^`i;h*hYlA7l+-7-9c_M)umbJhYqqRfB~NdFd|CmwfDi?g zTu5v?hVrYP!La{@)Qj`b_!MxT$xX=@k3FZ{HwWUW;qriztI4Ybgx&)7Yhk!ZR&se` z;Bl1CMQ0DLom>=9ay99_1V2pCI05ZUS<&UB-~_1GVH7ypF`+&6h02Cslyib~5?+6` z@b&gLulhxc{E&SK`*)_kPzme7pdJa&zD79O{$|HI#+Bu>+QI&uxxFMD57;vb@qOhM z&@UN1c=mEpKxJoo&$ikSUD}O+L-y$La+}XiQJ0wbg~BHuF$V>$UhMA z=j2iQdk|*j3hVZjUuM1ZCi-4b`#+1nBEa5WF4%vgE};7E-qk|n9}~NAZ|LHx?`DTB zV*I=hn-B{e@^o>Pce6S@Af8NTqc8tJuUu9=@z%==QT`Q;gL+fQq8iax|K563{zWO1 zVH67vD>F=chUiJPhXbHf@D$CP#bD@?CI`QHXR;Es*R{|@${9oqgY>^sow z!1)1(oud5Lzr`=TYui4}Y%SL3;%<8D{WsU6djYVLu5Gd+D^;Kv{7jOvM?{;r9iC zyvt9YW?Vh79_m$qJ^8ISKDh1bNw_|VTIGGhgyQe{vTVb zrg#BWFBI4X+JWKxW-)ft1@F&z5&4(kf3J?r)uUIo9Ib1IdVipIIY;3A=|Lya{iiY1 zkHiXGzU#{fa!2Ev#%TR|{{G{h^ebN=|0JwmXE4~Wh8y?odozMg`da->*iGW+o{XTA z;EzG?<2mA|&a@YjDE}D~{9iL!XUM-l)tUan7u5RJmM2J3Ye*lT>`V)s-(<#+UPgUx ze5xZo@Id*bx_s52rT50Pou4ASTP%KCN&*!$~<)t_HUDeo~yXN{rvJ96CAk-SRKWNx79qvnrKcBBT*XMp_% z^-^ar)So{vE{{LDrK1_eGigk1e}A$gb=7OSZJ)Q8 zAA&zwgGG)HHYHv7oEk4o9FH6yZA$VtqVMZ$)?krCqfJQxe~0{BYX2F`B{f)j_h?h{ z1vdiL8;FNSo00>7pP%hv~FYD=eWYs z40?uF#)F6RQm|Z+W#1T`J3BkORvTdb`u5uc*DV$Si;WrbHuqPl&ix(yeb((q@=`F> zn0eorkxS~-TZTrPHnz=!{wKI>otkyYP_OWJL;8qkaqq?c`Z)jib(Tg3YVW<+U#IXt zN->A2VO_dbuegBpViPnDk_wreadCN`@>tytsJ8<8VAiGn`b7WF8NYxYm*Toa|9POF zpT%4@6K7o-tV_Buj~d^zI8S=-qM<&?|MPllT*r)eu`sZ195W`T3aM>}qr(3C)tS29)m! z>vf3F-YYd+NWN%9{gnnx<5QpC+pQ*L))8`*wgkGj3__<*X^G&ey_CcLi!5=`2Ior zOa^;g)|+LxntJ&-@c{JJoP4}jW4N5!UJ37uz?GXPV}-YMY->G^^j|bK@;L=~ujX1u zD#TBen32z66BN5Un4duYFYi{D@8>sCD$>yZjcJVR;j^jzooRs!nn6Db_VEnf)g|QF zmj!;FzUP=6<)_owDB$K3XS1$#qz9is&wn--5@)m8ApY0__Km>G880qaYq4OUhbHo} z+B&wsc(PfsZ-vprv4}XUY3s=dUVxkT%`x)1WOrRwTL)Sn!S&JD!?BP!o7&d5ZS?}e zY#9ma_U9GV_#3bM<$80o%hoZK<>h;_k5|j#eNA9MePvq)dwPFOpz*v~ymbuzk3eIi zhogN@ou;8LGvv!AMM7gfA?5a86d(V5N8=Ay#^UXbLdQbp+0<(TS=Tl}{rlO>vuEaI zHGG-*{wWNu--Bo0qswYAX1@O=3$Dk5x1X7p)i(TA=vP(0SXO}j$vm6YX3XsHz~e{M zMxk>N^K5F{msuUiel!Z5_e1-aSsyHHFk9MZ@KBH8f0Hm`x~=E zPg~=;#muvswr{dOr0fUy(a9{%YBOfPe7Y6t<%yiPP5$m4p+C*-MkWlI^f+cSDtb4MCiQLs+ zZyV8Dj8Itjtfp-ur)v`f^weTEZp7KFhVOGa7vqZ8swYHzF6(So!^E!cWCH9rvD<-& zvsrE5=X8O+i3P2R70$UBSjFD|!8-UqgwfZH8`+z6?VmYaRcJng!os~-ZQp3RRn3Zh zjlhw;S#96%?fwScPk%SZNS3zkQGSmQ2Y>SKX2C%?-Xl$~3Vomb1&1PgHP;?#B0N#N z*xLS!CfpOXKkwlXx#Z7nzwGb+2I9{_`6(X77yVP_?f-B&{GTm^oh9J(_%2?qq4a1} ze_7WUdA)bg^#lqW3wkxzn0Ys9(E1%6Z$>+f>-`rUioB<3V;t@?;dw8@FZ7O1$t0eFX9bpvL`u`>ShJjgz8;T?Lun(&Ys@h%1kZQ zpA?Rd*7vpy+h+$n&NVDX^-E|BdfcJ#h%@tceYCC=jEC{H7ssQwp1hgsxaH< z;oi>woUVUj%WSQoKHKMEPAB+BsQLvo#)`6irgA#b`;PPyMcF<-AMPy{2+HzlQmb&S*V{_V4_fTK`V> zKZ~c2uk9*K^O<_*PbYUdEMLIaY}(f{GF}UWTd&n{wRNh$;M?F*7F1(WgpuCXw+kZ~k1;*D?j)E^Z6uqpZ}hZc$U{hN#IX~rv~mBXB01s zlH;S9Aq$Xw1pcw#!C`71|FCF7(&vBaIEd;G(inXY#0uw;?IEWapznh76Q?2D zIYBZW3D4(WJ39P|zSuP;F?_RG{{!XU{$u*}>!26liKHh!-*NOV%&&B&{EZ5C=${>L zX_(2HVatjj8IL;{zWUTZwst%Z`B#s?-pr7Djb^Q0i0hM^gVaLu)xd}^{=QS(uw%y? zrF4Eok~+g0xz}LkwT+nGJYpnCre>Mkd2st`kLF*XelDAdqwDJc|2~YT-^Z}t?|aR8 zbX$iz%D<;G=v$X5ocp(TxKsH>Gl&+TnjzDC~%_&$9b z?tFV&$QTCS1JLu@1#)g@Ts^T8)sJ|}`UmKHt25Zioo{Dc9mBrc2irg84}U?|t3mq* zFQEKK?BB<5KfhhY>ECwk1hNn5%q6G$J4y9Fi*@+2!0!e!UVH=jYq|e52dRY&N9LBw zD|=QHZO4QVztlK9=n#XD{G0bnqc^segZ(&* z(fQq6h2Ktp@g$0`!THT#=_Wm7nMwBolIZt6n-KLTetKUHJ`B}_igZ^<~+v+!P^F!#5g`WpKWAFl) z--0wkay_y7i;=C34va72$0V|p`z0onkEzr{Ju@CBkJ|qI1!#Vr%`D>lxc%*IFM1;X zCC`?jzsgCo#l>@#@>r$CGR>||%2kznQ2(s%{PD?wZRmT5&Tl45G%4fNKY;!N<}-`s z5s%C6zHxu*)9j8nF}=CHp2yAC+!#0YW&L46^KdKJ&urNL)9u$i9N>ES)7;^X=Fi!j z-<>}+Wz4!p#rHtZ4Etxl^d*(w%q{3XH$G|H9r`9(pV4@N?`RjEK0f;8TOBA~Lgz;U z#{ymc(Bp5iLr=qehVpmQ$4y^mzw|EXfAVoD_rU$YlmABF-#20$!0E_TTlve6@$%-gSt#U`Bx>Y2}6B55DTbBjx9YOyBH& z`4r?s(3xE5SQwr^WccQt567@3AMBBb^?19(zJcR)hT}tq$DoHykJq2DSf&|cD7REL zSS+1de7v7!u{b*gQ1t*HJ{&nTI{lJa$cD>YZ9*h6tDL4G^-q^0P z=jFn*sBPc>ljp#cly>+<(;4hxR{GH3_q!#FeZih%Zs6bkDKL57I~@*;zFlL+C43Gu z|5E?=nwJ+bpk9y-+gTu9%Us$$_|Lu4O;F$P8O&iV?H>K-J2D~ipNnicOt-<~zG~qyNn9QGuR!Ld-9gFYPuw*xP*?>NAL!3%Km`TGOLK**NIK==?||;NIABY4TCN z+#BhCX)Iw8-H%-@7R*VO_V)RK?;nZXxogt9O^l-6J4ny$D>%rC92)#Z7v)*?K-u`n z*Nw~0zck7?xMrNtEA|DG`-Gj`68=kFZuzv*(kxMU4F$;R`*28+*PjG;hUfWL| z>@g8Jn8oNTIKYm)G)flTxKj=H)8EZ8f9a(`o;KPG>Tl3_0_$~f46bT<0C&xQW^2m8n8n!)~m%C$dR8jXP-yfu-v{er`{HY5N2Y(BDPX>GsY z*e!4L|E<8^;F4S8*8O4oK>?hQV>~T_u0T=bA zTK&g1yi3L-OCw&d672uTujK3Wu?evMV%p;z3L?B99;CAD+y8>^QnbELu%Q2^*)Ytf zSWJ5yt0=;&Ia%2N^Ed9(9>*$(sPTh%4UbJs^K^V^CQooVI*ijE!z$?YY=Qhr8pHn< zrMKFX?298kQGPj%S8907a;36LoD)`b_lqB+jXX9kgX8B#RHN(Vv2i$_eO~u(F`Q45 zeO}LWJDs&MpR=i~yzm-7^PJ1b-a!3#o3IZRjj+BmY&|Q(3c^*$KTcz?x75+SNl$d$ zre^TZII*>cBG|r5*c^jdf}}zoU-71J-k}O6g8}*1whY&c#q`Eu1>v48DE?;4RR8VU zpnv#&f&KPb#G7Zx{U16oVzMAVOe?+B6Nl{!pY{jYFdT1K@n+S$LmxOyAAcrO?^Ao+ z6OG(++J7UR$&l|6b2jOTrYq&SWUK|&@9;i6(S)ZoKCmc}{lC07?n!QVb*tF|_2RVC z+>(R*13JU<_P8gx-Bn261^I!ttd)M(6Nl{yPl5U;P=81r-5xWglYayMGX?t{`g@og z?rHUJX${f6aSwIW{rZ=bN0zg6MG4|BRz z&smWFNeBHs&gri5h5QpPTLb6wILDy!qx@4Ec>a%b3{@x|XKkO#>Dp9H<=esgmh>>E z`#-685p{l3Io*p}%n2)|?+3*rpij{l?Azm}_I6R*)0vBF)XUrBCN+jLXuU*dupgJV zCr#x_RV>KI=K{n1kP5K}33DJm@3Ljx*LFD{7VUU3pcKX5CNImT-jSX`^;Stz*ExAP zWNNQuG19-!WpMD=B zJwbn6$Pc?-UerqczXy*0D?_|rJy{p?!|s>QSjW2!KLUGq`PtMT_I^}_=68q}S{a`I zBdB*v@i)(6G=3)QVkURLyvffzqMpeO<^)1z`Dkl9;g0GP&0}CtZ-^zGyc~1y9m(P* zs0YAhGG+E>VgLW6{3rhn^O#JH{aJK9XnP(>Abv-ZjQr2Dm`!NV^-HGpS2Si)`|p;V zruL`te{(+d@c-NB_K+X;N=_5tzos$7^E8unGPwU3`rjPx(WI9DekNtb+hX+NL#j_aB2k);7xwq@1MaVz*OfE<5E#^&F z2=2)&jfj5p-#d@$L}g5PKdt+}{Ix^Q2-u@mmMm&EZ)ya4+eHzP%+7-P-Rnx}jO^9^ za@jrf{vdlh&xZM=4sX!G@!xeo^DUXz)d%O(xsVIY=dg%|Y}vhCq1C8<&Mb!QbpiKw zeYgnC&vfRIOrl>Ga&LF%*VgwhABXGR-T5_IkApq@-*8ubU5IJ7ba9h;Q)7t6pE;a)m5(xn9P28QLFhitdB>s zG=(~M)2@%cY)oim2%I>~E^>+2y_~CGt$_FzkCU&d*9Dk%zq}aDFFa1(G&h5O2I@r@ zW(Q2>O2GaD``DIUxp|sCh1X>6%coKP1)ag3%}De4;T^-fR{Ph=(ld;l5wKqiWEpAh zKkPCrg7r-Z{ycdkFyh^L@2s3e`h2M89F^uil_UKI-QVBK0@z>S{%|kEQxZ@<@KYX9 zqj{kCz_HNEDp(H$5uSoqnd_1t9rS5H^(|;D3zzZ_i=^+0bHqiW_g;uLdhiOF;y~wz zx!qNGyb?1mrXnvwI z@MZvJ`VXWoDGQTBu{-y#1z@e_Za)&8V$P(+HytM}!1mYrB`&w%(o zjZwV!=KU$&;pjS4KM&%+HY_+8c^=yPYjeRKvoim1OdaDvJ0mD^r{LB5p_`*hJN)dw zaAQdFwBw#|zRyE_rtg1*_%8eA_!Lzfj#*u=$iuF4zbS-7Up-4iYq_fg1%pLmI$5u@-LZuE7zVQp#BMs zgX}b-bwj~vub)147v(q5*eLNTh2slP-cCo?KbxJ4(l3pQ-bL-0Q8J5Nis1a;{Up6f zVev6aC>EdmU;8&f1vZ9&HVl8mnQvB{%sk<+^9Fo=`1RRw>^js_G%_tuAJ@e{$bbU0IL@ycI8ivN_ zD)<8*ouS@i`2Sh*SJ#7mo12rBjgPq8yzn`0#jb~M-Ua`Zz?o#pR=E9X{=vvvSWnXV z5s#A>zG7*aYe^KWVH@dumB-1GtqA(7Ye`=%_&1?lw!*EkZJANV6?F##pPOm!`eOpUj^f=z(^xF2!N zN=rKFmm8R9(<>=glp7E;_DMUP@;auPlC;>RNQ;4q6{U z{L+S>eZQvfCkfa4G3!rG2XEdXT85Fo1)KAaRHws{HN-DU{q+5CI(*{}swZK+KhrF5 zBz4%w54SlLuen2*E!8xJ=fT7qA7(if-K=Rr@vQ$jQ}Lsx`vXsa{;|>Z&khAQQ`dri z3hbdjvHt9|@5Y^0hFJ~vo~-y`mXr2IjRN})<)h%m53?M!H&PXt8FOMV&glopxpUuB z#+8FzwbcXY3Wc`^{5OIg{FWK@0+^=HRW_ztX1@utV^Zmy*R#CVKtrxBRvGRISAios0 z#~WFjS$Xnm@NWn>B(v)~*5)Vqy;aCR@jDsa-$vG7S$RFxDBl>pUo(!6?x(93%j-=+ z`E4`~(g>OH`EOQZ4xKdjAIp8OlA#{l{*3ZfWgoNtYF{9)!G;xBCzisR;|%iwtbd@MFkJ7w6PUKU4%J_s#UzvX znDr-CK~D-*f6SJ5sfDC6J>?t0epqkHOTpiW7sK<4s6q7}d8D>W&-ybfFCz6>4A@nATWtCV{uM;hCVB~lCTe%$NJByt-d0n^ey@M6^ z+(GrqX>8fN^+r}!0@I>=Boduk{uKf>FvAkYScJjk&sOPNNe=qfMeoqR@HwSwZ z@eN?GM`=vvb?qO4{i{)YfX2b|IeA_Bv#D6|hn`!{eh2lj@?`qnq=);vg-yR;7O>|v z+eT6`ZEp&UzX>>g%)KN`d$S7V$6C*aRS=Pi^x<@N<+3&U-XyFz!V}dmpflLZ(0^WU zb<;2H3?uw+Y1>GueNm(r9=B-)-pRQ z+^1c}DvGKmni3lGwf@}lz%6&|YCiIdE|r)52G`Kqe`Sf*P{;9t@fsnoto&-=Da#d= zl>=WPdwQ~5hUOoL_kn#qlRdbke6n2TP;|4V>6c9?|5!)0-$8m64_={eQYW*A^;bN^ zYd*4H5*mW^*jT*fBd}+6{W_UbQB)0DUqSr2Ung@Yin@dRMM9pvyuUoep{Tza)k79K z7V3(0GN-(#nstyrDs1gxHx6r3;pJ3v!wZW~&_jHGA?Be8&cvtAM6R1vcU#dpPS2YNFU zUJi$2YT*1-7E8TC5wBv@D=Zj8Z$bIM8454g!vi7|e}MepnY`TnKwhETePLzHT^!=Q zbQZgD^E2e`3(Ib&p?HC>n?rt7p!@uawP(@yz{;Lw>(8R~HH`&g_k$4`BHXibZJKt4 zGAG#2y_g-vfJfzx&}Ec6@xvv2|dNVH1IZx$Fs-pT!lo zx2zm#WCXFZ_@5FlrEM!cDlfh47i|pmn0wQXiThRFPDk(G?`5!eza{V`CvTradfVS% zzshyc-ZgN5&zLi${lg<)hY1H}qQ_w$UpW1R~f$si>5E%bdJx4l&y=s3G?LTeb(z!JH{P<(v z%1_QW#bYgCzec0uy?VZB*s{VX5xGRe{wH7kBX`&g_HU{EO|<7@;Oxdw0&yBLH#u%#|Obn-#KwqUiw8)G@Xr6 zODpWp-=7RT^Xeb~pdwV?ekNeLZOGE1?8XM+l@?6;g)L z$uVEk6nS!fNuL+G9vTPX&of8QrECs9L*nB6Oc;H|59z^l+aoV6 zJa}_6s=vnL*s?1(4{wSr_B^~Mtrh;yM`M8-Cm%Zy|JV74`^Mq_$IoCk-mENMSa#F9 z3I5;fX3G#CkZq5zU3mEBIPx$4|HhHDU}3lFck%TTN^3*0y?yg8x_uBY_@ zx}H2)Q)HQE$xRW8r@;R{1|m;-R;&?GdN?vqwmlM_XBzr`(wR%Lx{4!<7na;igZFa+ z@(X=|*VMhLY-9v!gbcy?6z}N#qw-RCzI5&ql7eGfy;sBc+F2EC!?~jVpe}!g;QSWv z=>6q#_`l68*7!3L&utlx+FxBg^I= zzFC{FPdO)_5Hi24OIZ?p=)>k6OO{8|IY{QuJW;W8Nz|bZs{SsWHU3QF(Vd&44?+FO ztz&dXde`ld@P2x;kpB(W8Ma51%|Epw!|C3<>)M{*clDI-sY`yZ z&jb|)yIEJeXV3TSpYPXao|$>(nP=wnnfc6TekNX2DfOTw$C*L?5N?W|D!vR>g@wp!nB_6PhO2 zj`KB+CnIjN0`i*+_if`0-*2RK)Bb4VgYP$)!5=7gGt{qN+&OHc!}(zNA7+&&&7D}! zDvU+-O=@zUUve*m`hz|R=Sk4|;LgOxIpv9SQT!xWAAAHRx$e&LVf_i>hw|8k1e9Nq zG&j@ni6{Jj@tYHyW>q9@bjBCJn8$YO%EDNhRSg!r@^wi{}X3iS&<+=(R$TnCKPlbGplvOAEGNEzMVpY zGy1-&wQ*r(K4$F<_GlrRG#JOPT%SLAG>dZ zoZ}AT;T%){ToliF7RMOd8El_pN@}9fGHf`H@jZ=k@ck?Ln}}q`$QYmN9=|iOX%>v9 zXg!`-RUSd&gin za^%Y|aaI(_+5Rmnv(;rEqw{SzQ>16{4ljjemPsS&8aH^M_|#sCf;km~bGtI^G)26e zpH;i*1-1ECVH$Jx=+a|y!AM=+I!#%~rcrgI2HEFc!R2#cenI{M9CwV343Jl-n~{FQ z$C%_4tGxUg=TxaBF#juh<@`+JrnwsPcGWq_rqQFvtZwsz9gb&bZru3gmtTEF@wvwM zn|F51G7U(2^o);@y*}jjFSAT1n=3L_c{nmWHtPX(xtpG0y)ob!@6d5-4Smyb1lf( z%<{{*BIo`Yp^RUDCoUZHF^GRP`X!1dZM(BYWLb6@;@iOeO1-&vaz&=0>{y4PV{vaR zXJnhoYh*d}vtzfcg`9gLQGCjyG$AAv?d#ceKN8?SJ%#0D zh4Fe}Tu}Y#U{qg>vmylEMvtP!VS7@8iSE{;uzqrIbM97}r~Vy6J92{^;a}-~y>M|z zW7?Ijj1en4!k_DYy)ZIlPg-zy#`z9PF5o5&ZjB7toBATM|E9AKt0OxyqVc}`J2=hx zJnRpbX3HWP)13BJlz_)7-6~$VN85((*T8t6_kiQKTm3`wWg{cAb3btm{6JXU->wob z+WXl&;_ZV=sp!D!{t~@-(cb0r(E2*Y`2! z2Tj@!mqTAIeXmCC@3?RU?A?+a$nUc@)Zb!+W;Jl*nYOTu5&N~6Kyy-#-gn{N&w`P? zt@JmSw8#4|YDl}<1NSBW1xD+;ljKeoThwZmFT9UC#J8Hn^p9`bm29`D+_(q!HO`bu zV$n#Wd>8GRuwSQh?ch8Kk}n7UPq0_j65mC8&(7<)>tMisuO~deSJ#f-7iX|H*%Hr1 zd$sN8`(v!sT%MboIH`UZQz=rvlk?#D&)dTFh7M)vz4Qy8dEkfNtdlIh=MwAL zd2S!4cQ{!>2hP7SB0E}oeC|);9FAw7F&OF_PMxAsWPU>|iRTilE(iG=r^;uYoX4cc zT9;oV^qID4oFc1p=C92`-wS83N3YJLC)|5Kj1?z;9_7Q-%qz1&{3ewd=PW~beHn}Y zf52Ye-r0II%Me~y&bm#+ww%32-`6@$=|g9iUuFE4vguq7iZ3*s>&ve)=&?=dn~*<* z9^_3#|Ek*3LkQcrU8y;N?D2QrICA9F zso#8w%c(4d|Ea5t|5CNB2%*Dy%q;nCRKJ!Lo6!1omfU|Ql-IIiQ`c?7d}_740m@Ui z40oXNF;?t67xmenR3W=sln~>N5tyGQv7HLwmllK-9}rmvo9J(|9FyhN zafe+R!1pLhEglW9s3im>OY%ARFIjQ`P z@jnynIo#3$@3tcWrjt!QaG#uj&F(v0*DEU5NV;hH4)!cwX@Pfr?;MLpg5sNFO#1W6 z;%~Jc2rvy^MDZUnrsnX93&M(zh%9OeTHnCi9?P$b7dsr9>}_vAyxFym zPr}|%$zouA8ScM9?{~{MBr>U+;XZ_Ge9z(?r;SGfECX}lK9%1U6@-1`_(2>U#glo* zF~;K-$A=Z4pJP%Ze-@lcKQ1fYyZ%UkX<#m_zvFz32kljN1llXikqP!GtKe2EykB+~ zoKJ>$KJa|iKoh!O4QC$5J^mJY{)K(;zk_~!tL_NAzx_7yuVwYZ|5c@KhIk-K`msYl z5IYcpr4Wi$A44U6bUOCeDxEOMj191$({UliV_qaIj)}f(* zD$S+tyN-j~j>*}pF67N!Sr%F<8Tn5K`2WOp)g72qrEXgOjx&B!+^yE3fGRcYw;Y81 z(zsi7L$j&|UO@WcG-kWSpKk4)RiSQ1=i4zR{n$o&_@N{4f5H7pIBz>9XRd1d*<4Mf zRAYwwIWS)9cqc4V6&&j9-wp@P``nK?-ic`)G}w1+r$PK3E~kj@-QO5s8hF9^y*=Hb zf6g%_Wh4C#W41TfJ>I+c$SmmJ8Fm6^=&uFPzfBMN?-WM;*LY+O{9m9SPh&Km!2j2b z#%~^nh5CE#pu`!kn`4Z>WgK!c@$rPb*U1iuALSmOT5K294@el!_|;RH2jfqjb9_hp z+f#Yse}(byQW(TXf%}bMd@~I+q5CUHu5-LI4b08I0rwj{V7HIciEFT5+hw%RsTz1e zX_!w_^vXG_`tx4Ul+`)og+RRN)5aqr%V0J-|Bvw)oaa5g4dl%%*gt{z(OugPh)jdc zNFNcfi{n#`2Sina5_JDE&LpR}x6^nez@%wG`+pdZ3An|~)5czrWv~VL-(Za5byaM% z2bcz7{72hkZw=)CEyW}>0&~}aFmNN1(nnb3P&9RwwnzA4+;|Jjmhh}D` zq2b4;8c_PpiA`Xybq(uLd4<3x@E85F{b;W^V_Bqg{D&PboGF1XN0pM;7*apf!a?=* z^-`rM8bj)rwa`A)cTAFRK>dGG`cOy@`^nDdgV6Z&aJGchFAJi7{D1PVN!Vq5UW)P{ z%d*R%;D0OdE$f@Fu!PhOZRou1fOynp%ut0TtafMvoTvMRkk4^TNqj4;e&{kC?z5Bl z?sWTOP&vr;*75v(rN7b+#a z6K>8b2x}PHK+|_XJm|{An{EYR4Jj{ruYvemq)+0_S#QC9DqVlaJ|^|ANWAH032983 z2lERh_peACa(gSR;Z!iRm%{iOzrN_XjhlAYc&iV2SC57Ib6G=oeiGJ@(wch5G3!6w z*9$T>ZfIHg9-~@f`A|bD1eNYXcalRIPX%?_GKev`e-+z)c}qyc={7WfVNA(MA6EHD zZb*G?AF=1mi`-$F4e~Q4A72&G2>Y}1 ziG7t||E}6V&}_E}L&hiV(E^h(_jvN6JT>qk?!KcemK@xY=x`7`G3?KMnG++iBqbk=TV&O>(cr$qXrV7Vxg~wkUTsc~ z-eDU6`&QNxw`i}ntq1(kz@OQpC3(?atrV><;2a}14|t&TIq3h!_-Oy7W+>mOEu8xI zF{Q*Z7}Aoy$g150;|18;LmsusORU;D;kRmQlZV=8Cb!M@dWWJfO9t8GX7H#n=Mvro2XM}oZ?HsY|8$+CulfkOW! zR^7F3IKP}Co$b+)EsnK*-rfWLLX#Q%<+U;-U()n>4xA4hO9`zX8pw`Z()78sTkmkA zw6X@T(yiiHtL{3AFNc?Z&eFkV`5F6P|K)a#|)AEhSyt{tVaL*L!0j`G(utq4K(#M(&22~8`|{`NG^ zk?yIGMu9v8#RtPVJ1QVm9p$TO(O*aLJEw8XyD2#mUyXf52m$&5&N)#5X;O)=rtN$O z@=wW*+T$&icxqZ!bo8uo5Qy1`uWyHV$T{+R^6Q1Myb1ib6x@sIvkXm$t@W4Q8rToK&%X+L7*m^+dn=Rp^wbW$to!Xu2e~D2-xtT4_fQ9ZoglJSHJ4Sd|yP4KgKPM&mQazbiL(f8$t|4)zp5bBs_@ zlABn0bu`G5eA$+6@S-H7cjC(zMn#t7%Ux^c6IlA^VSXvDyl_)gJ9HWLQ>0SC&cf~s z=Y#5#CEtSmFX8Vjdilb|Aj?p5*KGsA4k9axy02ags$Uk=4eNnYU+?2-P~K2Bx}Qwq zx3j47!bMR%oJTR(mCU&p;*tIN#v8Ezf%CoeLFoJnT7O2*PhyU-^1{s^%OJ{+lHiQ$ zcQXjq|1<7b(R~kAQIW}+o)YrPncY_}0(Zmt1c7h4s&ayd4UB67 zo>yTSO5Y6eSFQ=U_c%M$&_Qb#_<0qc0r_APoF|6$A{F#M6TFX|Mh5U%h28a|U=Kii z(#7%X*sH(Eo2#k(2;C=#vw{&TSVa|GRGUMb@ntcF{S@ZQ{pUqh0~dSVb`aNuTu)Wn z1;`)Oj}q`Ws+TWZgz}Mni18T2+v&dWZ9vt;`UA$WUWT5pQa5+p&h)w_@GUDyyKr7) z8kpMy`WyILz6|9JT=ZTuAJ)h2v-NftZA`!~E$qJVt*A;Jg!U^jURn?<6kMyAt1;KA z%!k4>I2#!{&b!~dK37vY|N5c4w=CP@V>yCr!1c{}%i_$g7~%o2{ zQ>0&cZ#T66Anex?6rbx^`0|B|(B2C&99G4#wY=xPf%S*lOAg07qm$({y(6ER#V;x7 z?uYfsZ0Gr0jQQNM_?P=HicBcJ3*#)x-mEd#F=_wiN5lDO0lgpA>)`w+#Ipo@NtM<= z8e~#8+w~4YSs+I8*)t5!9C_=jFYocph-VCkk9_$R#pjnpdXY(;jr>({hWm%o4xbNl z+ON+0h$izKzDHlh;UO5`x*%S80N+DZi8!0Mt%LRGa#i@@QP|Jyy8C<={67hZH7(t5 zdkrIh!%wG5A~iM!f#U;3+DU=bc!w?Le3%wKc5Z zF2sZOcJJDDB&`0_W#Y#3c17=Ne6l}p!zS>zI-E+QLINw?Qj6_jwI?^w$1`oyIMk2p z-nH#ONd2jnFuj2|+V_HSnZg10Wf^|_#u2#R=)T;lf8L7<_49G>G9C!2Ki$%O_j$&c zG_Z<&3(8M<5si=2*@t}^)$a=3rXQiC{yzOXHy#M9KeYkYvyQrLF#aeK`IA5M#v8WX z%7pBVKMIHPH*V~-ef8B+w;clV@Xt1E+Kv1nh!VMwSMtXUdq~5n4TMd9n34;4{hb+h zueSQZTXOE@bNRf*2>U)%`ygOQQKnZ})p zrm%*TjVS(1w4bRsCD9UAo4T=^Hf*P&$?D=1Sf4n(A8DHhou#GPp+L<^C@V_iC@wZThDvWpJ%# z$nC9#d(K`Z(jE3|Dse5_?)K8cMr|A1U#BSfx#WwY=dP5#M{F8Zr;k#qU_Vd$oOX@r1^-;q_ia zmvX+6{&m%igOmJapJwO|JJNPbME5`W;>p|q~+{2nm*G;rpp_=k`E>?vFh5v-%XKxQLf)$xYn@0Hhc8n zw~bP(rHwmf2Uj6`6z+dtEq$s2G1zrT@>gIx}4p+ zY0mixV`{a$@svkPGT4t@lUH>pH!8)9S^!>F_Po4FsU6s(XVm?~`$9Z+s zp3@$+aj`8cHhDvQkJXWTPF=5A9NTgp)rVRe^=`%W!o^?@E^zeFs2usbrw0*l$|P(A zm95x&=6YdVYRhm4T7TUvd+*F(VVtJrd`Ktw8{|a4S9#sZDE=VMugdnG8Qi)U(!+h$ z(>N#ky^8A~UlD@NuVOs#it_0+kJn`h9V<35h7Sf(Ig9tEb!?4HXo2=vLF8n|Je@YU zRR;C%H1yD@R~Nsh?Z}SQw4Cc`x=q-q&5MOT9b3f-E$2JZ9ESPS)|h?EJGMq@+E&SU1nfVZz`oUlYet~nodTv!ol&7w1 zj#oG<&uUcrGtl~ow)?@K&d5?>f+_(?TAK=ga+^9ierSnB@0MSc-0vRI{$|=dOjNEhwgWp z#$sN{0x2`HVXztbYffjMk_9AF(V%HT=XDo}ebfs`W@LlrGNF%kP>Up0>II}AykYPX zT0fu0;;Q21BvV$qY$NJ_7>`8>O{EK@{P4zPG@m|dBDf$X=NHLZ=! zc|jhu#l{`X=h<7DSMIKpXyE?E2ys>M0+JbApAwAx2^I-`l3r2&F`|C(5(E5aq6NI9 zuV-^2Eoo@~n_3cBW%QBWUf7T<+5a|coQe@t75lLHk)~7G``|w8D1V;;AL-qQa!oE; zzr}e8S(SJ;_-;h);Kk0j2^zITSY>=gdN-o+WD|-fAs197`jE`PhC$?Sx7e6Z?w$R1 zv%1dQcW5-jOhp8G7cU?=ftJC`sQqyc39Lw5z~+c8%bI)8{shKye;&(+q z2j>U@*SK8Gl+~ZSi1st4v9R*Qaw$jFpmxT;#8^@E8fPu5QoIV{TY-IpF(vn_H2RPN zS=BPwe};IcQ<#htR2yHBa%5GfF2Z@oZSGsh=gA!{no9om5A(N9khSw(6#@_)lQOt3R?ImrpGhyC|V$21Nlc}AaTPM~S9nFj5Hv9V~K zWDUFQg_Y)7iAKF;6lW?TaHp|~WQuFSe>2lYhLb*tK2m02?O^i)$S+K=(``BQxBjLs zJMUL zq4S^^li~i{qUF)I18Pr7;Jo?b<2vDQzo}TSF@GGU3Enh17D`sJ7Dy%jmgE++e-swT zNnB3eol`pq{saz6N>&-aewHb&)dZpU$2mmcZCt=+iedc=+7IJvp?=;8pUt}s_UQr# z_-Fc6xGj+06T@O};I7Kk^ywCFX#(`@q#n%(VP zd80qn!1pV91+`Z*^2ZAma8E#arW3&^zHca>Yy5gPM{GLLO4l3g+m5dz*RXfYU1_e( z9)(SGbSjv{%9J*?ZJhM^YlM^F@-$ltKuZdzIQ zQCHrNel!Yl_s>|jgBpf{kpDH#a(^TbXdDVc{tOX;-tJ$+`tQjWEBFsb1Xj3xef45U z?NAF{&-yPIzm9XqE(X<~+CbCKc2IJGud(}^n;{LSg3$Ts>1;mHJ^NBneM)dQoHv&X zcmrp?`8KFwD42=%V+GYGy1%&@P=5;K1gQv|(SPRZP0`+=%LK%SjPkEauDW_Ns6I7V z>mY23{%XN*uKaAnruS-9=6_4oP|+l>|K$regBnk@b?XiD*E$^CZCi7<(`@60O#Qfn ziWXRkxfd=*n9^Q^`{k)9fyo`#ZyHix41@7BMqp0j_Kz;CN}GrD;b_4OR`}ubA&sY7 z85w^jfcwJ^4}~_}dxTK)Z+Z3FCQ`gx$|Q`-o* zKSC|38%%}#KD)|<`0Odc^&pREJkv(#VgFI$cQUnYD6BDUUXR{kC6lG~17Y>OA$!um zJ|-x&lpORf9tvwbHIMTfgS}lHysPAvu{W&obX)%0nf7gi`-T38U%UL{x{p)M=G%^K zgJ!A!;k?V6-eU+gYtqe>R$Q;?+Sa?MA@yqa+XrRFvd@K29p7|i)9%{lJVI$E(`0@g zw>H`r?KyRo&}R}g|+PN)B~yJOJ$U zhn3FebZtBkvFEI$^KHVWC_5JF-nF7q%n0~kN$ZErI$4f z?aVl^sPXiRG+0m3%VwWBmC>}Q@k|iSMza|`&r5#Yy5Y*E-39yd23Khm%l;r;S^N5x zO|7*|8r+|h723FLbE19Gp3kl#|B|dwfA5{ZXWF~;BUWm4sNhs+qJ7EUv+aNO(%Y#N zx&O(OL_7FPH^F*DioCuuG^25e_48}{!2h7))0kbYo92}v|JKM-N+0E)7Mj=?YyCWj z2L2c;6@rw_!EeP{b=Q!7v{LcjvI$1xW0ri+sri15ORTz0nh}E+_{Z)l+K^M)IzOcJ z7v3~-y&{m4;#ZK+^jQu8@f@=w_nh|fvm`WWJGx=NXloc~gkUsO@G z>!f9^was~ly=m0CrF*?o{N75iexAbs`(o|lce$r#L4Hy?+?SUf`Ciq{J3oQ^mK#>s zx0UiEW*eUi*}eax(}!w@4^gY5_k3n|drQ-#lkJ24m>nHZUGDal#`<{&ar+KIYg6yfEM$a|n9$cT=a;^jU$K(9w(z%}}A6%8%aW3R5V%SRkG^WXv zdvH~1+qq3X84ki&rC+Ew7&eu)&Tq*Z-8M>XUmT=6c`!W{-p8i5E2@|)XKhIBub-rGBak)_K;hN^M(VYlr@`T`5UF*_@o(vEl~Wzr#5{MXZw@j7#kp2|@EC&RbK0 zXLuH+>)J+g(fRmkoZLR+Mqzqt$4D;Hk1$rGKa-lCVCeYQ)(~fW8=QFwn)50{hpn4f zJG%KP8qU;DQ>3QBt;t|7f<82jOHw+_Ah&1CNAX{9u1F8ETyKsvbbkAnJ&iCw8cdYQJjZC#)xWRba(XnmD z!VuquE3eyZ7Kw)T9}b1ikh&sDXZzRg+U!x-|H0Vk`?_Z4LXGT*jehjd=$28cV)Z;r z$5xrH=Yowf&azQE)8<=Bvy%-FoE7}T^E293bQJpQy1vNm(i-Cfg`|PlhSl?Cb*RKEdq(W2eQ>VM=;CiuMXv1n!j9szRA+Va zOQRxJ_Kds){tCvLY~4&rg5B2r$>~FcP=oWf&l3#hC@BBqRQSJfrkd4V!zC#Hn`nN< zn0#+lB)?Q8UTLRZBJ_3}&JdqqP`)cFup{#dI$v|2Gp?Zgw86E5XWOG9-^mO{@ogW% zrSG>#DJn9-ekMSUv-9~2*z@;!*5KLpP{^MS@pH8g;p+C#$npytp#PE?k{ZqXyCjkI zUtH{h{dB1BtGhxYt1^R$hjQ?&!B=-lf@_C2GLRhOlwdx{WwpZ_(fQx+=3qK)oES@y z@K3(KD@C?PFC%E<4k}e@9+YbY;T@+h6R@A2BH<5ecS*u)hg+dN$Ycp$qbnAKTMQSw z#|avlEU9tw7Z=fe>+0azf$Ck7$f}GM+OUHl(*kQW@0Umv6~o|8)w@aYDg%*1x5Uf&7zjhIlY+)2=9S?YS#q;7_F#TiB*{ z;9w5u-{7xUy(=`hBHcNDD1}hJP_ZR_V-L))O8=Sc&r70$O*+`$dI$?<4pf(f23yWK z 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%0Aax32W_x$_-v9pw*~dV7@rOt+s-^1%x{evNv) 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 zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy zAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v z2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^ zLLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK z&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ z^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhR zeIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+ z9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI z2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;* zfzSs+9|(OQ^nuU^LLUfyAoPLI2SOhReIWFK&<8>v2z?;*fzSs+9|(OQ^nuU^LLUfy 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